小程序支付流程总结

1 开通商户号
2 商户号平台操作
2.1 绑定小程序appId
2.1.1登录商户平台-产品中心-账号关联(AppID绑定),绑定小程序appId
2.1.2登录微信公众平台,点击“微信支付-商户号管理”,查看相关商户号信息,确认授权申请,或在“公众平台安全助手”下发的模板消息中确认授权信息;
2.2 设置API密钥
进入【账户中心】->【账户设置】->【API安全】->【API密钥】中设置,建议把APIV2和APIV3设置成一样的
2.3 开通JSAPI支付
产品中心->JSAPI提交申请
3 拉起微信支付
3.1 调用API步骤
统一下单——>生成签名——>调起小程序支付
3.2 前端代码示例

payment:function(event){
   
    var that = this;
    console.log('去支付按钮点击事件')
    wx.request({
   
      url: 'http://192.168.8.50:8080/matouwang/wechat/wechatAppletGolf/createUnifiedOrder',
      method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
      // 当method 为POST 时 设置以下 的header
      header: {
    'content-type': 'application/x-www-form-urlencoded' },
      data: {
   
        amount: teamMoney,
        openid: openId
      },
      success: function (res) {
   
        if (res.data.prepayId != ''){
   
          console.log('微信统一下单接口调用成功 数据包:' + res.data.prepayId);
          console.log('微信统一下单接口调用成功 订单号:' + res.data.outTradeNo);
          console.log('调用微信支付接口之前先生成签名')
          //保存订单号信息
          var outTradeNo = res.data.outTradeNo;
          wx.request({
   
            url: 'http://192.168.8.50:8080/matouwang/wechat/wechatAppletGolf/generateSignature',
            method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
            // 当method 为POST 时 设置以下 的header
            header: {
    'content-type': 'application/x-www-form-urlencoded' },
            data: {
   
              prepayId: res.data.prepayId
            },
            success: function (paryResult) {
   
              if (paryResult.data.sign != '') {
   
                console.log('微信支付接口之前先生成签名成功')
                console.log('签名:' + paryResult.data.sign)
                console.log('随机串:' + paryResult.data.nonceStr)
                console.log('时间戳:' + paryResult.data.timeStamp)
                //这个applyId一定要大写 而且签名的参数和调用方法的参数值一定要统一
                wx.requestPayment({
   
                  'appId': '',
                  'timeStamp': paryResult.data.timeStamp,
                  'nonceStr': paryResult.data.nonceStr,
                  'package': paryResult.data.package,
                  'signType': 'MD5',
                  'paySign': paryResult.data.sign,
                  'success': function (paymentRes) {
   
                    console.log(paymentRes)
                    that.setData({
   
                      notPay: true,
                      paySuccess: false,
                      teamNotPay: true,
                      button:true,
                      outTradeNo: outTradeNo,
                      payDate:new Date()
                    })
                  },
                  'fail': function (error) {
   
                    console.log(error)
                  }
                })
              } else {
   
                console.log('微信支付接口之前先生成签名失败')
              }
            }
          })
        }
      }
    });
  },

3.3 后端代码示例
3.3.1 统一下单方法

public static Map<String, Object> createUnifiedOrder(DispatchContext dctx, Map<String, Object> params) {
   
        log.info("-----------------------微信统一下单接口调用开始--------------------");
        //设置最终返回对象
        JSONObject resultJson = new JSONObject();
        //接受参数(金额)
        String amount = (String) params.get("amount");
        //接受参数(openid)
        String openid = (String) params.get("openid");
        //接口调用总金额单位为分换算一下(测试金额改成1,单位为分则是0.01,根据自己业务场景判断是转换成float类型还是int类型)
        //String amountFen = Integer.valueOf((Integer.parseInt(amount)*100)).toString();
        //String amountFen = Float.valueOf((Float.parseFloat(amount)*100)).toString();
        String amountFen = "1";
        //创建hashmap(用户获得签名)
        SortedMap<String, String> paraMap = new TreeMap<String, String>();
        //设置body变量 (支付成功显示在微信支付 商品详情中)
        String body = "啦啦啦测试";
        //设置随机字符串
        String nonceStr = RandomCharacterUtil.getRandomString(32).replaceAll("-", "");
        //设置商户订单号
//        String outTradeNo = RandomCharacterUtil.getRandomNumber(16);
        String outTradeNo = generateOrderNum("ZH"
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值