Erreur de développement de la fonction de paiement de l'applet WeChat

高洛峰
Libérer: 2017-02-25 09:20:34
original
1462 Les gens l'ont consulté

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)
    }
   }
  });
 }
Copier après la connexion

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>"
Copier après la connexion

Retourner l'analyse des données XML

 //请求统一下单接口
    wx.request({
     url: "https://api.mch.weixin.qq.com/pay/unifiedorder",
     method: &#39;POST&#39;,
     data: formData,
     success: function (data) {
      wx.request({
       url: "http://localhost:8080/XinXingWXApi/wxXcxApi/xmlAnalyze.do?strXml=" + data.data,
       method: &#39;POST&#39;,
       success: function (res) {
        var pk = &#39;prepay_id=&#39; + res.data.prepayId;
        var timeStamp = self.createTimeStamp();
        //获取支付签名,并支付
        self.getsignType(appid, timeStamp, nonce_str, pk, "MD5", key);
       }
      })
     }
    })
   }
  });
 }
Copier après la connexion

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 !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal