官方文檔
普通商戶版-微信H5支付
服務(wù)商版-微信H5支付
微信h5得單獨(dú)去商戶號(hào)申請(qǐng)開通,加上對(duì)應(yīng)的正式域名(該域名在微信商戶號(hào)上面添加)。
詳細(xì)支付流程介紹
1、用戶在商戶側(cè)完成下單,使用微信支付進(jìn)行支付
2、由商戶后臺(tái)向微信支付發(fā)起下單請(qǐng)求(調(diào)用統(tǒng)一下單接口)注:交易類型trade_type=MWEB
3、統(tǒng)一下單接口返回支付相關(guān)參數(shù)給商戶后臺(tái),如支付跳轉(zhuǎn)url(參數(shù)名“mweb_url”),商戶通過mweb_url調(diào)起微信支付中間頁(yè)
4、中間頁(yè)進(jìn)行H5權(quán)限的校驗(yàn),安全性檢查(此處常見錯(cuò)誤請(qǐng)見下文)
5、如支付成功,商戶后臺(tái)會(huì)接收到微信側(cè)的異步通知
6、用戶在微信支付收銀臺(tái)完成支付或取消支付,返回商戶頁(yè)面(默認(rèn)為返回支付發(fā)起頁(yè)面)
7、商戶在展示頁(yè)面,引導(dǎo)用戶主動(dòng)發(fā)起支付結(jié)果的查詢
8,9、商戶后臺(tái)判斷是否接到收微信側(cè)的支付結(jié)果通知,如沒有,后臺(tái)定時(shí)調(diào)用我們的訂單查詢接口確認(rèn)訂單狀態(tài)
10、展示最終的訂單支付結(jié)果給用戶
常見錯(cuò)誤:
1、網(wǎng)絡(luò)環(huán)境未能通過安全驗(yàn)證,請(qǐng)稍后再試(IP改變導(dǎo)致的)
2、商家參數(shù)格式有誤,請(qǐng)聯(lián)系商家解決(H5支付的referer為空導(dǎo)致)
3、商家存在未配置的參數(shù),請(qǐng)聯(lián)系商家解決(H5支付的域名問題)
4、支付請(qǐng)求已失效,請(qǐng)重新發(fā)起支付(有效期為5分鐘)
5、請(qǐng)?jiān)谖⑿磐獯蜷_訂單,進(jìn)行支付(H5支付不能直接在微信客戶端內(nèi)調(diào)起)
詳細(xì)錯(cuò)誤問題講解:
1.1. :用戶統(tǒng)一下單的spbill_create_ip,一定要是正式域名下獲取的然后進(jìn)行統(tǒng)一下單,且在正式站去換起微信客戶端去支付。IP(spbill_create_ip)與用戶實(shí)際調(diào)起支付時(shí)微信側(cè)檢測(cè)到的終端IP要一致。

2.1. 當(dāng)前調(diào)起H5支付的referer為空導(dǎo)致,一般是因?yàn)橹苯釉L問頁(yè)面調(diào)起H5支付,請(qǐng)按正常流程進(jìn)行頁(yè)面跳轉(zhuǎn)后發(fā)起支付,或自行抓包確認(rèn)referer值是否為空
2.1.1. APP里調(diào)起H5支付,需要在webview中手動(dòng)設(shè)置referer,如
(Map extraHeaders = new HashMap();
extraHeaders.put(“Referer”, “商戶申請(qǐng)H5時(shí)提交的授權(quán)域名”);
//例如 http://www.baidu.com ) )
– 需要注意,如果使用微信官方提供的示例H5:
https://wxpay.wxutil.com/mch/pay/h5.v2.php
得配置與之相對(duì)應(yīng)的域名: wxpay.wxutil.com
2.1.2. 網(wǎng)頁(yè)調(diào)取支付H5支付,統(tǒng)一下單返回的mweb_url ,必須要獲取h5支付頁(yè)面自帶的referer才行(問題是當(dāng)前調(diào)起H5支付的referer為空導(dǎo)致),得用到生成mweb_url 的頁(yè)面直接提交或者form的自動(dòng)提交
PHP頁(yè)面代碼:


- 2種錯(cuò)誤原因,1是mweb_url 跳轉(zhuǎn)提交到對(duì)應(yīng)域名不是商戶申請(qǐng)H5時(shí)提交的授權(quán)域名
2.是 返回mweb_url 請(qǐng)求過程中被截取了一部分可能會(huì)有下面的錯(cuò)誤
3.1.1. 因?yàn)樘D(zhuǎn)的mweb_url不完整,會(huì)出現(xiàn)微信h5支付 安卓系統(tǒng)能支付,ios換起不了微信
(1.package為空時(shí),Android可調(diào)用微信支付,但I(xiàn)OS不行
2.package參數(shù)必需不能為空
如: https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20171017112849d63fcc65920397083586&package=1586452094)
此處的問題解決方案:網(wǎng)頁(yè)跳轉(zhuǎn)換起微信客戶端有中間頁(yè)(跳轉(zhuǎn)換起時(shí)間一般是2-3s),可復(fù)制瀏覽器上面的url可發(fā)現(xiàn)mweb_url 沒有后面的&package=1586452094,后面的&已經(jīng)被轉(zhuǎn)義,保證跳轉(zhuǎn)前mweb_url有&package=1586452094就好,若被轉(zhuǎn)義就替換或者用urlencode(mweb_url)
image.png
3.1.2. 若支付完成要跳轉(zhuǎn)到頁(yè)面頁(yè)面對(duì)應(yīng)頁(yè)面 則在統(tǒng)一下單返回的mweb_url.'&redirect_url'.urlencode('www.wechatpay.com.cn')(redirect_url要用urlencode包括起來進(jìn)去跳轉(zhuǎn))拼接后格式:MWEB_URL= https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096&redirect_url=https%3A%2F%2Fwww.wechatpay.com.cn
追加的redirect_url的 網(wǎng)址 ,一是支付成功后點(diǎn)擊微信頁(yè)面 ‘完成’,跳轉(zhuǎn)到對(duì)應(yīng)頁(yè)面,若沒跳轉(zhuǎn)則刷新一下頁(yè)面即可。二是網(wǎng)頁(yè)成功換起微信后,支付過程中(未支付成功)直接點(diǎn)擊微信客戶端左上角 返回
頁(yè)面也會(huì)跳轉(zhuǎn)到redirect_url
4.1.1.和 5.1.2. 微信統(tǒng)一下單返回的mweb_url 有效期為5分鐘且要在微信外瀏覽器打開即可。
