您好,欢迎访问一九零五行业门户网

详解微信小程序支付功能开发错误总结

这篇文章主要介绍了微信小程序 支付功能开发错误总结的相关资料,需要的朋友可以参考下
微信小程序 支付功能开发错误总结
微信小程序支付终于踩完坑了,发现里面坑挺大的,现在发个贴,希望以后入坑的同学可以看一下 :
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=2
业务流程在这里大家看文档的时候可以看到。第一个坑,获取用户的openid,参数一定要拼在url连接上,否则会报{errcode:40013,errmsg:invalid appid, hints: [ req_id: iil1ba0504ns86 ]}错误
 onload: function () {   var that = this   wx.login({    success: function (res) {     if (res.code) {      //发起网络请求      wx.request({       url: 'https://api.weixin.qq.com/sns/jscode2session?appid=wxaacf22345345cfc7162fe3&secret=83ebd41c3e6f34a49b3a34578063434548ff3f71&js_code=' + res.code + '&grant_type=authorization_code',       method: post,       success: function (res) {        that.setdata({         openid: res.data.openid        })       }      })     } else {      console.log('获取用户登录态失败!' + res.errmsg)     }    }   });  }
第二个坑,支付统一下单接口,签名这个坑是比较多人遇到问题的这个是md5加密经常和签名工具里面的加密签名不一样
签名加密工具地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1
签名加密的时候要转成utf-8,加密我用自己的接口进行加密的 digest.update(data.getbytes(utf-8));
 // 统一下单接口获取sign(签名)  paysignjsapi: function (appid, attach, body, mch_id, nonce_str, notify_url, openid, out_trade_no, spbill_create_ip, total_fee, trade_type, key) {   var self = this;   //加密签名   wx.request({    url: 'http://localhost:8080/xinxingwxapi/wxxcxapi/md5encrypt.do',    method: 'get',    data: {     appid: appid,     attach: attach,     body: body,     mch_id: mch_id,     nonce_str: nonce_str,     notify_url: notify_url,     openid: openid,     out_trade_no: out_trade_no,     spbill_create_ip: spbill_create_ip,     total_fee: total_fee,     trade_type: trade_type,     key: key    },    //统一下单    success: function (res) {     var sign = res.data.strmd5     var formdata = <xml>     formdata += <appid> + appid + </appid> //appid      formdata += <attach> + attach + </attach> //附加数据      formdata += <body> + body + </body>    //标题     formdata += <mch_id> + mch_id + </mch_id> //商户号      formdata += <nonce_str> + nonce_str + </nonce_str> //随机字符串,不长于32位。      formdata += <notify_url> + notify_url + </notify_url> //异步接收微信支付结果通知的回调地址     formdata += <openid> + openid + </openid>  //用户id     formdata += <out_trade_no> + out_trade_no + </out_trade_no> //商户订单号     formdata += <spbill_create_ip> + spbill_create_ip + </spbill_create_ip>     formdata += <total_fee> + total_fee + </total_fee> //金额     formdata += <trade_type> + trade_type + </trade_type>  //公共号支付     formdata += <sign> + sign + </sign>//签名     formdata += </xml>
返回数据解析xml
 //请求统一下单接口     wx.request({      url: https://api.mch.weixin.qq.com/pay/unifiedorder,      method: 'post',      data: formdata,      success: function (data) {       wx.request({        url: http://localhost:8080/xinxingwxapi/wxxcxapi/xmlanalyze.do?strxml= + data.data,        method: 'post',        success: function (res) {         var pk = 'prepay_id=' + res.data.prepayid;         var timestamp = self.createtimestamp();         //获取支付签名,并支付         self.getsigntype(appid, timestamp, nonce_str, pk, md5, key);        }       })      }     })    }   });  }
第三就是调用支付了,这里也有几个小坑,第一就是appid很多写成appid就不行了,第二个就是preoatid 的参数格式要写对prepay_id=wx2017011711060194dccf725232155886323 第三个就是调用支付的时候报支付签名错误,也需要到签名接口查看签名是否一致,查看参数是否是对的,调用微信支付的时候必须加上appid
getsigntype: function (appid, timestamp, nonce_str, pk, signtype, key) {   var that = this;   wx.request({    url: http://localhost:8080/xinxingwxapi/wxxcxapi/getsigntype.hn,    method: 'get',    data: {     appid: appid,     timestamp: timestamp,     noncestr: nonce_str,     pk: pk,     signtype: signtype,     key: key    },    success: function (res) {     console.log(res.data.paysign)     var paysign = res.data.paysign     //调用微信支付     wx.requestpayment({      'appid': appid,      'timestamp': timestamp,      'noncestr': nonce_str,      'package': pk,      'signtype': 'md5',      'paysign': paysign,      'success': function (res) {       console.log(res);       console.log('success');      },      'fail': function (res) {       console.log(res);       console.log('fail');      },      'complete': function (res) {       // console.log(res);       console.log('complete');      }     });    }   })  }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
以上就是详解微信小程序支付功能开发错误总结的详细内容。
其它类似信息

推荐信息