微信小程序> 微信小程序支付接口对接总结

微信小程序支付接口对接总结

浏览量:916 时间: 来源:Homer_Simpson

从去年11月进公司到现在,算下来总共对接过三次微信小程序支付接口。
现就前端而言,总结一下开发微信小程序支付功能的流程。
1.调用预支付接口( openiduserid这两个必传,以及一些业务参数在这个时候也传到后台),得到交易码out_trade_no 和预支付码prepay_id
2.发送预支付码换回微信支付请求的系列参数:

    timeStamp: res.timeStamp,    nonceStr: res.nonceStr,    package: res.package,    signType: 'MD5',    paySign: res.sign,

3.调用微信支付接口

 wx.requestPayment({       timeStamp: res.timeStamp,       nonceStr: res.nonceStr,       package: res.package,       signType: 'MD5',       paySign: res.sign,       success: function (paymentRes) {         console.log(paymentRes)         if (paymentRes.errMsg == "requestPayment:ok") {  // 调用支付成功           console.log("支付成功!")           obj.applyAdviser();//业务函数,插入支付记录到数据库         }       },       fail: function (paymentRes) {         if (paymentRes.errMsg == "requestPayment:fail cancel") {           appcom.showMsgFun(obj, "您取消了支付");           console.log("您取消了支付")         }       }     })

4.在success回调函数里执行业务函数

完整代码如下,部分参数根据自己业务调整

   var openid = wx.getStorageSync('openid');      var userid = wx.getStorageSync('userInfo').uid;      // 调用支付接口发起预支付      appcom.reqFun(this, '', 'prepay', { //第1步:调用预支付接口,获取预支付码和交易码        amount: this.data.amount,        openid: openid, //微信openid        userid: userid,//用户id        type: 1,        relation_id: this.data.lawyerId      }, function (res, obj) {        if (res.out_trade_no == 'error' || res.prepay_id == 'error') {          console.log("res.out_trade_no或prepay_id参数错误");          appcom.showMsgFun(obj, "支付功能暂时无法使用");          setTimeout(function () {//跳转界面            appcom.goLink('../index/index');          }, 2000);          return;        }        var prepayId = res.prepay_id;        var outTradeNo = res.out_trade_no;        appcom.reqFun(obj, '', 'gensig', {//第2步:发送预支付码,换回时间戳、签名等          prepay_id: prepayId,//预支付码        }, function (res, obj) {          console.log(res)          wx.requestPayment({//第3步:调用微信官方提供的支付接口            timeStamp: res.timeStamp,            nonceStr: res.nonceStr,            package: res.package,            signType: 'MD5',            paySign: res.sign,            success: function (paymentRes) {              console.log(paymentRes)              if (paymentRes.errMsg == "requestPayment:ok") {  // 调用支付成功                console.log("支付成功!")                obj.applyAdviser();////第4步:业务函数,插入支付记录到数据库              }            },            fail: function (paymentRes) {              if (paymentRes.errMsg == "requestPayment:fail cancel") {                appcom.showMsgFun(obj, "您取消了支付");                console.log("您取消了支付")              }            }          })        }, '', 'GET', '')      }, '', 'GET', '')

注:
扩展:未完成订单
当用户取消支付的时候,其实订单已经生成,此时将交易码保存,下一次传给后台继续此订单的支付。

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎