【weixi】微信支付---微信公眾號JSAPI支付


一、JSAPI支付

JSAPI支付是用戶在微信中打開商戶的H5頁面,商戶在H5頁面通過調用微信支付提供的JSAPI接口調起微信支付模塊完成支付。應用場景有:

◆ 用戶在微信公眾賬號內進入商家公眾號,打開某個主頁面,完成支付
◆ 用戶的好友在朋友圈、聊天窗口等分享商家頁面連接,用戶點擊鏈接打開商家頁面,完成支付
◆ 將商戶頁面轉換成二維碼,用戶掃描二維碼后在微信瀏覽器中打開頁面后完成支付

二、場景介紹

商戶已有H5商城網站,用戶通過消息或掃描二維碼在微信內打開網頁時,可以調用微信支付完成下單購買的流程。

步驟(1):如圖1,商戶下發圖文消息或者通過自定義菜單吸引用戶點擊進入商戶網頁。

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

商戶網頁下單

圖1 商戶網頁下單

請求微信支付

圖2 請求微信支付

步驟(3):如圖3,調起微信支付控件,用戶開始輸入支付密碼。

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

用戶確認支付,輸入密碼

圖3 用戶確認支付,輸入密碼

用戶支付成功提示

圖4 用戶支付成功提示

步驟(5):如圖5,返回商戶頁面,顯示購買成功。該頁面由商戶自定義

步驟(6):如圖6,微信支付公眾號下發支付憑證。

步驟(7):商戶公眾號下發消息,提示發貨成功。該步驟可選。

返回商戶頁面

圖5 返回商戶頁面

用戶收到微信通知

圖6 用戶收到微信通知

 

注意:商戶也可以把商品網頁的鏈接生成二維碼,用戶掃一掃打開后即可完成購買支付。

交互細節:

以下是支付場景的交互細節,請認真閱讀,設計商戶頁面的邏輯:

(1)用戶打開商戶網頁選購商品,發起支付,在網頁通過JavaScript調用getBrandWCPayRequest接口,發起微信支付請求,用戶進入支付流程。

(2)用戶成功支付點擊完成按鈕后,商戶的前端會收到JavaScript的返回值。商戶可直接跳轉到支付成功的靜態頁面進行展示。

(3)商戶后台收到來自微信開放平台的支付成功回調通知,標志該筆訂單支付成功。

注:(2)和(3)的觸發不保證遵循嚴格的時序。JS API返回值作為觸發商戶網頁跳轉的標志,但商戶后台應該只在收到微信后台的支付成功回調通知后,才做真正的支付成功的處理。

 三、開發步驟

1.設置支付目錄

請確保實際支付時的請求目錄與后台配置的目錄一致(現在已經支持配置根目錄,配置后有一定的生效時間,一般5分鍾內生效),否則將無法成功喚起微信支付。

在微信商戶平台(pay.weixin.qq.com)設置您的JSAPI支付支付目錄,設置路徑:商戶平台-->產品中心-->開發配置,如圖所示。JSAPI支付在請求支付的時候會校驗請求來源是否有在商戶平台做了配置,所以必須確保支付目錄已經正確的被配置,否則將驗證失敗,請求支付不成功。

圖微信JSAPI支付-支付目錄配置

2.設置授權域名

開發JSAPI支付時,在統一下單接口中要求必傳用戶openid,而獲取openid則需要您在公眾平台設置獲取openid的域名,只有被設置過的域名才是一個有效的獲取openid的域名,否則將獲取失敗。具體界面如圖所示:

圖為微信網頁授權域名設置

四、微信內H5調起支付

在微信瀏覽器里面打開H5網頁中執行JS調起支付。接口輸入輸出數據格式為JSON。

注意:WeixinJSBridge內置對象在其他瀏覽器中無效。

getBrandWCPayRequest參數以及返回值定義:

1.

網頁端接口請求參數列表(參數需要重新進行簽名計算,參與簽名的參數為:appId、timeStamp、nonceStr、package、signType,參數區分大小寫。)

2.返回結果值說明

注:
JSAPI的返回結果get_brand_wcpay_request:ok僅在用戶成功完成支付時返回。
get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以統一處理為用戶遇到錯誤或者主動放棄,不必細化區分。

3.代碼范例

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();
}

 相關資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM