㈠ app中使用h5支付
因為蘋果爸爸的各種封鎖與限制,導致 app 中如果集成支付sdk上架會變得十分困難,總之是想辦法去抽成。為了應對這種流氓政策,各小 app 公司紛紛偷梁換柱,通過 h5 支付從而繞開 sdk 支付。
常規的什麼申請秘鑰,配置回調地址等操作全部忽略了,直接進入核心步驟
支付寶的 h5 支付,返回一個 http 鏈接,是可以直接在 webview 中使用的,url 會重定向最終指向到支付寶的專屬協議上。這里建議直接在 app 上直接通過 new webview 方式實現。
通過微信 h5 支付也是可以生成支付鏈接的,如果我們直接使用這個 url 的話,一定會拋一個錯誤「商家參數格式有誤,請聯系商家解決」, 微信支付的錯誤解決方案 中已經給出了原因,微信在這里校驗了 http 請旦李賣求中的 referer ,我們直接打開 url 請求頭中是沒有 referer 欄位的,最容易想到的是通過 html 中的 a 標簽跳轉頁面,a 標簽會默認攜帶當前頁面的主機地址。
所以就寫了一個簡單的中轉頁面,邏輯很簡單,在中轉鏈接中添加一個 pay_url 欄位,pay_url 就是微信 h5 支付生成的鏈接,需要進行 encode 編碼一下,我們可以在 js 裡面重新解碼,設置 a 標簽的 href 熟悉,執行點擊進行跳轉。
找個伺服器或者 oss 將頁面放過去,配置一個域名,因為微信的 h5 支付是綁定了一個主域擾笑名,二級域名其實都是可以使用,假如最終配置為 pay.abc.com ,那麼我們最終的跳轉鏈接為 http://pay.abc.com?pay_url=http://wechatpay.com?xxxxxx 。
不管是微信支付還是支付寶支付,其實想從瀏覽器喚醒支付 app,都是通過特有 schema 喚醒的,支付寶的協議是 alipay://,模逗微信的協議是 weixin://,其實和 http 協議一樣,例如: http://.com ,瀏覽器會捕獲 http 協議,支付寶和微信都會捕獲屬於自己的協議,這一點不管在 android 還是 ios 上,也正是利用了這一點,才使我們 app 中喚醒支付寶或者微信成為可能。當然後面很可能也被限制,在將來相當長的一段時間是不會的,正是這些協議使得 h5 和 app 進行交互才使得如今移動操作系統更加繁榮。
㈡ 微信app支付和h5支付的區別
兩種支絕兄付方式的特點如下:
APP支付,是指商戶通過在移動端應用APP中集成開放SDK調起微信支付模塊來完成支付;H5支付即公眾號支付,是指用戶在微信中打開商戶的H5頁面,商戶在H5頁面通過調用微信支付提供的JSAPI介面調起微中坦信支付模塊來完成支付。兩種支付方式分別適用不同的支付並培襲場景:
APP支付適用於在移動端APP中集成微信支付功能的場景;H5支付適用於在公眾號、朋友圈、聊天窗口等微信內完成支付的場景。
㈢ App內H5方式微信、支付寶支付,無法回跳到App問題
1、微信支付
本地URL Types 要添加一下授權域名:aaa.xxx.com
2、支付寶支虛空付
第一種方式:支付寶支持攔截+支付二合一的方式,通過攔截H5支付鏈接,談者調用SDK介面進行支付
第二種方式:
1.添加 URL Scheme
2.實現代理方法攔截鏈接並跳轉差侍瞎支付寶
staticconstNSString* =@" www.xxxx.com ";
支付寶開發文檔: https://opendocs.alipay.com/open/204/105695
㈣ iOS-APP實現微信H5支付總結
1、發起下單請求( 調用統一下單介面 )註:交易類型trade_type=MWEB
2、統一下單介面返回支付相關參數給商戶後台,如支付跳轉url(參數名「mweb_url」),商戶通過mweb_url調起微信支付中間頁。如: https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=&package=600759311&redirect_url=http%3a%2f%2www..com
3、中間頁進行H5許可權的校驗,安全性檢查( 具體錯誤見微信官方文檔 )
4、如果許可權校驗成功,微信支付中間頁會發起支付請求。請求完畢跳到回調頁面(由redirect_url決定)。APP需要在webView中監聽這個請求,打開微信進行支付。如: weixin://wap/pay?prepayid%&package=2965581453&noncestr=1545905512&sign=
5、微信支付完畢跳回APP。
HTTP Referer是header的一部分,當瀏覽器向web伺服器發起請求的時,一般會帶上Referer,告訴伺服器我是從哪個頁面鏈接過來。微信中間頁會對Referer進行校驗,非安全域名將不能正常載入。
redirect_url是微信中間頁喚起微信支付之後,頁面重定向的地址。中間頁喚起微信支付後會跳轉到指定的redirect_url。並且微信APP在支付完成時,也是通過redirect_url回調結果,redirect_url一般是一個頁面地址,所以微信支付完成會打開Safari瀏覽器。本文通過修改redirect_url,實現微信支付完畢跳回當前APP。
需要將微信H5支付的安全域名配置成scheme,微信支付完成會通過這個scheme跳轉回APP。
再shouldStartLoadWithRequest:方法裡面攔截微信中間頁(以「 https://wx.tenpay.com 」開頭鬧戚侍的請求),截取redirect_url,如果redirect_url已經被替換成scheme不攔截,如果沒有被替換,攔截請求,保存當前的redirect_url。創建一個新的微信中間頁請求,將redirect_url替換成「安全域名://」(微信支付完畢會通過openURL打開當前APP,如果不替換redirect_url,微信支付完畢會打開Safari瀏覽器。)。設置「Referer」為安全域名(微信會校驗Referer,不是安全域名會載入失敗),重新load請求。
微信中間頁載入成功後,會收到一個打開微信的請求,用openURL:打開這個url實現跳轉到微信支付。
微信中間頁跳轉到微信時液吵,會將頁面從定向到仔毀redirect_url,由於redirect_url被我們修改為scheme,所以需要攔截這個非法的scheme請求,替換成記錄下的redirect_url。
以UIWebView為例
還有一篇文章講的是H5支付封裝,H5支付不僅可以在網頁上使用,原生也可以調用。具體內容見: iOS-H5支付(微信、支付寶)原生封裝