1. 程式人生 > >微信支付 get_brand_wcpay_request fail,Undefined variable: openid

微信支付 get_brand_wcpay_request fail,Undefined variable: openid

本文將為您描述微信H5支付,微信JSAPI支付返回支付簽名驗證失敗的解決方法

微信JSAPI支付時報這個錯誤

檢視錯誤詳情

alert(JSON.stringify(res))

 

微信商戶平臺相關設定: 

場景介紹

商戶已有H5商城網站,使用者通過訊息或掃描二維碼在微信內開啟網頁時,可以呼叫微信支付完成下單購買的流程。(使用者開啟商戶網頁選購商品,發起支付,在網頁通過JavaScript呼叫getBrandWCPayRequest介面,發起微信支付請求,使用者進入支付流程)

步驟(1):商戶下發圖文訊息或者通過自定義選單吸引使用者點選進入商戶網頁。

步驟(2):進入商戶網頁,使用者選擇購買,完成選購流程。

步驟(3):調起微信支付控制元件,使用者開始輸入支付密碼。

步驟(4):密碼驗證通過,支付成功。商戶後臺得到支付成功的通知。

在步驟3的時候發生異常,沒有成功喚起微信支付控制元件,列印js錯誤,顯示 get_brand_wcpay_request fail

在微信商戶平臺裡面的開發配置找到支付授權目錄 點選新增

將當前 請求的url的地址、非同步請求的地址、當前請求的上一級地址 都新增到微信商戶平臺的支付授權目錄中,即可解決問題!

如圖所示:

如果還是不行,

1) 使用微信的線上簽名工具檢查簽名是否和程式生成的一致

https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1 簽名工具用谷歌開啟。

選擇MD5,XML,然後把請求引數xml放進去,就能校驗簽名。

2)如果和微信的線上簽名工具一致,說明程式沒有錯誤,確定是API金鑰錯誤(被別人改動或者記錯了)

在商戶平臺的賬戶資訊中更改API金鑰(賬戶設定-安全設定-API安全), 15分鐘後生效

2.1)統一下單用的是A商戶號,也必須是A商戶號登陸商戶平臺設定key才對。

2.2)要注意統一下單請求引數中total_fee引數的型別是int型別。

3) 如果和微信的線上簽名工具不一致,說明程式有錯誤,常見的錯誤可能是:

3.1) 編碼問題,確保所有的都是utf-8的. 如果有中文, 可以先把中文改成英文重新簽名,看是否簽名錯誤,如果英文不會錯中文才會錯,基本肯定是編碼問題

3.2:)訊息中欄位大小寫和文件中完全一致

4 統一下單和調起支付簽名型別需要一致。