微信支付-微信內H5調起支付
阿新 • • 發佈:2018-12-15
在微信瀏覽器裡面開啟H5網頁中執行JS調起支付。介面輸入輸出資料格式為JSON。
注意:WeixinJSBridge內建物件在其他瀏覽器中無效。
getBrandWCPayRequest引數以及返回值定義:
1、網頁端介面請求引數列表(引數需要重新進行簽名計算,參與簽名的引數為:appId、timeStamp、nonceStr、package、signType,引數區分大小寫。)
名稱 | 變數名 | 必填 | 型別 | 示例值 | 描述 |
---|---|---|---|---|---|
公眾號id | appId | 是 | String(16) | wx8888888888888888 | 商戶註冊具有支付許可權的公眾號成功後即可獲得 |
時間戳 | timeStamp | 是 | String(32) | 1414561699 | 當前的時間,其他詳見時間戳規則 |
隨機字串 | nonceStr | 是 | String(32) | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 隨機字串,不長於32位。推薦隨機數生成演算法 |
訂單詳情擴充套件字串 | package | 是 | String(128) | prepay_id=123456789 | 統一下單介面返回的prepay_id引數值,提交格式如:prepay_id=*** |
簽名方式 | signType | 是 | String(32) | MD5 | 簽名型別,預設為MD5,支援HMAC-SHA256和MD5。注意此處需與統一下單的簽名型別一致 |
簽名 | paySign | 是 | String(64) | C380BEC2BFD727A4B6845133519F3AD6 |
2、返回結果值說明
返回值 | 描述 |
---|---|
get_brand_wcpay_request:ok | 支付成功 |
get_brand_wcpay_request:cancel | 支付過程中使用者取消 |
get_brand_wcpay_request:fail | 支付失敗 |
呼叫支付JSAPI缺少引數:total_fee |
1、請檢查預支付會話標識prepay_id是否已失效 2、請求的appid與下單介面的appid是否一致 |
注:JS API的返回結果get_brand_wcpay_request:ok僅在使用者成功完成支付時返回。由於前端互動複雜,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以統一處理為使用者遇到錯誤或者主動放棄,不必細化區分。
示例程式碼如下:
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId":"wx2421b1c4370ec43b", //公眾號名稱,由商戶傳入
"timeStamp":"1395712654", //時間戳,自1970年以來的秒數
"nonceStr":"e61463f8efa94090b1f366cccfbbb444", //隨機串
"package":"prepay_id=u802345jgfjsdfgsdg888",
"signType":"MD5", //微信簽名方式:
"paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信簽名
},
function(res){
if(res.err_msg == "get_brand_wcpay_request:ok" ){
// 使用以上方式判斷前端返回,微信團隊鄭重提示:
//res.err_msg將在使用者支付成功後返回ok,但並不保證它絕對可靠。
}
});
}
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
}else{
onBridgeReady();
}