微信小程序支付集成

学习笔记 2017/10/08 微信小程序, 微信支付

        微信小程序支付集成首先先看官方文档。如果集成过JSAPI或JSSDK调起微信支付,接入小程序支付就非常简单了。

        微信小程序支付业务步骤一共三步:

1、小程序端通过wx.login的返回的code换取openid
2、服务端向微信统一下单
3、小程序端发起支付


        支付需要的几样东西:

APPID = \'小程序ID\';
MCHID = \'商户号\';
KEY = \'商户平台设置的密钥key\';
APPSECRET = \'小程序密钥\';


        小程序端是通过wx.requestPayment(OBJECT)接口来调起微信支付的,首先看看它需要哪些参数


参数类型必填说明
timeStampString时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间
nonceStrString随机字符串,长度为32个字符以下。
packageString统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=*
signTypeString签名算法,暂支持 MD5
paySignString签名,具体签名方案参见微信公众号支付帮助文档;
successFunction接口调用成功的回调函数
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行)



        可以看到要调起支付,必须先完成统一下单接口,拿取 prepay_id 参数值。官方说明文档在这里,里面唯一有区别的就是要先获取用户的openid,还好小程序提供了wx.login(OBJECT)接口。看代码:resp 是提交商城订单返回的参数,其中包括订单号(orderids)、支付金额(payprice);


var Rand = Math.random();
/* 订单号增加随机数,防止在线下单单号重复 */
var orderno = resp.data.order.orderids + \'_\' + (100 + Math.round(Rand * 899));
var total_fee = resp.data.order.payprice;
var body = \'\' + orderno;

wx.login({
  success: res => {
    wx.request({
      url: app.data.apiurl + \'handler_cash.php?code=\'+res.code+\'&userid=\'+userid 
      + \'&orderno=\' + orderno 
      + \'&total_fee=\' + total_fee 
      + \'&body=\' + body,
      success: function (resp) {
        if (resp.data.msg.return_code == \'FAIL\') {
          wx.showToast({
            title: resp.data.msg.return_msg,
            image: \'/images/err2.png\',
            duration: 1000
          });
        } else {
        /* 微信支付开始 */
          wx.requestPayment(
            {
              \'timeStamp\': resp.data.msg.timeStamp.toString(),
              \'nonceStr\': resp.data.msg.nonceStr,
              \'package\': resp.data.msg.package,
              \'signType\': resp.data.msg.signType,
              \'paySign\': resp.data.msg.paySign,
              \'success\': function (res) {
                wx.redirectTo({
                  url: \'/pages/paycomplete/index\',
                });
              },
              \'fail\': function (res) {
                wx.showModal({
                  title: \'\',
                  content: \'支付失败\',
                  confirmText: \'知道了\',
                  showCancel: false,
                  success: function (res) {
                    wx.reLaunch({
                      url: \'/pages/myhome/index\',
                    })
                  }
                })
              },
              \'complete\': function (res) {
                //接口调用结束的回调函数(调用成功、失败都会执行)
                wx.reLaunch({
                  url: \'/pages/myhome/index\',
                })
              }
            })
            /* 微信支付结束 */
        }
      }
    })
  }
});
/* 微信支付结束 */




本文地址:https://www.stayed.cn/item/32

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。