欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

前端調(diào)用微信小程序的支付流程 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >

前端調(diào)用微信小程序的支付流程

發(fā)表時間:2021-2-3

發(fā)布人:葵宇科技

瀏覽次數(shù):66

1,前言 

分享一個完整的微信小程序支付流程中,前端要做的模塊。

2,流程 

在調(diào)用wx.requestPayment之前,需要準(zhǔn)備一些參數(shù),流程如下

1,調(diào)用 wx.login() 獲取 臨時登錄憑證code ,并調(diào)用wx.request回傳到服務(wù)端。

2,服務(wù)端調(diào)用 auth.code2Session 接口,換取用戶唯一標(biāo)識 OpenID 和 會話密鑰 session_key

3,前端拿到服務(wù)端返還的參數(shù)后,調(diào)用wx.requestPayment。

下面是我畫的一個流程圖

3,參數(shù)說明 

如上,一共五個參數(shù),參數(shù)名區(qū)分大小寫,參數(shù)名寫錯或者參數(shù)類型搞錯都不行。

4,具體代碼
pay () {
   let _this = this;
   //此處5個變量為我項目需要,與微信支付無關(guān)
   let { userId, needPay, price, walletNum, classId } = this.data;
   if(needPay === 0){ //如果還需微信支付的金額為 0 則全部走錢包支付
     HTTP.buyPay(userId , price, classId)
     .then(res => {
       if(res.status === "y"){
         FN.Alert(res.info)
         .then(() => {
           wx.navigateBack();
         })
       };
     });
   }else{//進入微信支付
     FN.wxLogin()
     .then(res => {
       this.setData({
         code:res
       },() => {
         HTTP.payCourse(userId, classId, walletNum, needPay, res)// 調(diào)服務(wù)端,拿到支付密匙
         .then(res => {
           if(res.status === "y"){
             let obj = res.infoObject.wxpayInfo;
             wx.requestPayment({// 調(diào)起微信支付
               timeStamp: obj.timestamp,
               nonceStr: obj.nonceStr,
               package: obj.wxPackage,
               signType: obj.signType,
               paySign: obj.sign,
               success (res) {
                 FN.Alert("支付成功")
                 .then(() => {
                   wx.navigateBack();
                 })
               },
               fail (res) {
                 _this.setData({
                   isShow:false,
                   payPwd:"",
                   pwdFocus:false
                 }, () => {
                   if(res.errMsg.indexOf("cancel") > -1){
                     FN.Toast("取消支付");
                   }else{
                     FN.Toast("支付失敗");
                   }
                 })
               }
             })
           }
         })
       });
     })
     .catch(res => {
       FN.Toast("獲取登錄憑證失敗");
     })
   }
 }

相關(guān)案例查看更多