微信H5支付遇到的坑

網頁喚醒微信APP時報錯

報錯提示:商家參數格式有誤,請聯繫商家解決
解決方案:
1. 當前調起H5支付的referer爲空導致,一般是因爲直接訪問頁面調起H5支付,請按正常流程進行頁面跳轉後發起支付,或自行抓包確認referer值是否爲空
2. 如果是APP裏調起H5支付,需要在webview中手動設置referer,如
(Map extraHeaders = new HashMap();
extraHeaders.put(“Referer”, “商戶申請H5時提交的授權域名”);
//例如 http://www.baidu.com ) )
– 需要注意,如果使用微信官方提供的示例H5:
http://wxpay.wxutil.com/mch/pay/h5.v2.php
得配置與之相對應的域名: wxpay.wxutil.com

spbill_create_ip參數的獲取

當時使用官方提供的方式,在Java後端獲取手機端的IP,結果一直報錯:網絡環境未能通過安全驗證,請稍後再試。
後來嘗試,在網頁前端使用了一個搜狐的JS庫,然後用參數傳遞給後端,問題解決。

支付後的頁面跳轉

微信H5之後後的回調地址,是可以自定義的,而且可以添加自定義參數。注意:redirect_url後面加的網址需要encode一下
代碼片段:

logger.info("微信支付回調鏈接爲:" + callBackUrl);
try {
    callBackUrl = URLEncoder.encode(callBackUrl, "UTF-8");
}
catch (UnsupportedEncodingException e) {
    logger.error("微信回調鏈接encode出錯", e);
}
wechatUrl = wechatUrl + "&redirect_url=" + callBackUrl;

由於設置redirect_url後,回跳指定頁面的操作可能發生在:
1. 微信支付中間頁調起微信收銀臺後超過5秒
2. 用戶點擊“取消支付“或支付完成後點“完成”按鈕。
因此無法保證頁面回跳時,支付流程已結束,所以商戶設置的redirect_url地址不能自動執行查單操作,應讓用戶去點擊按鈕觸發查單操作。回跳頁面展示效果可參考下圖:
這裏寫圖片描述
附:
微信H5支付官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章