Maison >Applet WeChat >Développement de mini-programmes >Explication détaillée du résumé de l'erreur de développement de la fonction de paiement de l'applet WeChat
Cet article présente principalement des informations pertinentes sur le résumé des erreurs dans le développement de la fonction de paiement du programme WeChat Mini. Les amis dans le besoin peuvent s'y référer
Résumé des erreurs dans le développement de la fonction de paiement de WeChat. Mini programme
Mini programme WeChat J'ai finalement surmonté les pièges du paiement et j'ai découvert qu'il y avait des gouffres assez gros à l'intérieur. Je publie un article maintenant, en espérant que les étudiants qui tomberont dans le piège à l'avenir le pourront. jetez un œil :
https://pay.weixin.qq.com/ wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=2
Le processus métier peut être vu ici lorsque vous regardez le document. Le premier écueil est d'obtenir l'openid de l'utilisateur. Les paramètres doivent être épelés dans l'url de connexion, sinon l'erreur {"errcode":40013,"errmsg":"invalid appid, tips: [ req_id: iil1ba0504ns86 ]"} sera signalée.
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) } } }); }
Le deuxième écueil est l'interface unifiée d'ordre de paiement. L'écueil de la signature est un écueil que de nombreuses personnes rencontrent en effet, car le cryptage MD5 est souvent différent de la signature cryptée dans l'outil de signature
// 统一下单接口获取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>"Retourner l'analyse des données 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); } }) } }) } }); }Troisièmement, même lors de l'appel de paiement, il existe plusieurs pièges. Le premier est que de nombreux appIds ne peuvent pas être écrits en tant qu'appid. Le deuxième est que le format des paramètres de preoatide doit être écrit correctement. Une erreur de signature de paiement est signalée lors de l'appel du paiement. Vous devez également vous rendre sur l'interface de signature pour vérifier si les signatures sont cohérentes et si les paramètres sont corrects. Lors de l'appel du paiement WeChat, vous devez ajouter l'appIdMerci d'avoir lu. J'espère que cela pourra aider tout le monde. Merci pour votre soutien à ce site !
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'); } }); } }) }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!