Résumé des erreurs de développement de la fonction de paiement du programme WeChat Mini
Le paiement du programme WeChat Mini s'est finalement débarrassé des pièges et a découvert qu'il y avait des trous assez gros, je publierai. maintenant et j'espère qu'à l'avenir les étudiants intéressés pourront y jeter 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 il signalera {"errcode":40013,"errmsg":"invalid appid, tips: [ req_id: iil1ba0504ns86 ]" >Erreur
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 de commande unifiée pour le paiement et la signature. C'est dans cet écueil que de plus en plus de personnes rencontrent des problèmes. Cryptage MD5. Il est souvent différent de la signature cryptée dans l'outil de signature
Adresse de l'outil de cryptage de signature : https://pay.weixin.qq.com/wiki/doc/api/jsapi.php. ?chapter=20_1
Lors du cryptage de la signature, elle doit être convertie en utf-8. Pour le cryptage, j'utilise ma propre interface pour crypter 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>"
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); } }) } }) } }); }
Le troisième est pour appeler le paiement. Il y a aussi plusieurs pièges ici. Le premier est que de nombreux appIds ne peuvent pas être écrits comme appid. Le deuxième est que le format de paramètre de preoatide doit être écrit correctement prepay_id=wx2017011711060194dccf725232155886323. signalé 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. Vérifier Les paramètres sont-ils corrects lors de l'appel du support de paiement WeChat ?
Pour plus d'articles liés aux erreurs de développement de la fonction de paiement de l'applet WeChat, veuillez faire attention au site Web PHP chinois !