微信h5緩存更換二級域名
A. 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 進行交互才使得如今移動操作系統更加繁榮。