Heim > WeChat-Applet > Mini-Programmentwicklung > Fehler bei der Entwicklung der WeChat-Applet-Zahlungsfunktion

Fehler bei der Entwicklung der WeChat-Applet-Zahlungsfunktion

高洛峰
Freigeben: 2017-02-25 09:20:34
Original
1495 Leute haben es durchsucht

Zusammenfassung der Fehler bei der Entwicklung der WeChat Mini-Programm-Zahlungsfunktion

WeChat Mini-Programm-Zahlung hat endlich die Fallstricke beseitigt und festgestellt, dass es ziemlich große Fallstricke gibt, die ich posten werde Ich hoffe, dass Interessierte in Zukunft einen Blick darauf werfen können:

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php? kapitel=7_4&index=2

Der Geschäftsprozess ist hier zu sehen, wenn man sich das Dokument ansieht. Die erste Gefahr besteht darin, die OpenID des Benutzers zu erhalten. Die Parameter müssen in der URL-Verbindung geschrieben werden, andernfalls wird {"errcode":40013,"errmsg": "invalid appid, hints: [ req_id: iil1ba0504ns86 ]" gemeldet. }Fehler

 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)
    }
   }
  });
 }
Nach dem Login kopieren

Die zweite Falle ist die einheitliche Bestellschnittstelle für Zahlung und Unterschrift. Diese Falle stößt auf Probleme MD5-Verschlüsselung. Sie unterscheidet sich oft von der verschlüsselten Signatur im Signaturtool

Adresse des Signaturverschlüsselungstools: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php ?chapter=20_1

Beim Signieren und Verschlüsseln muss es in utf-8 konvertiert werden. Zur Verschlüsselung verwende ich meine eigene Schnittstelle zum Verschlüsseln von summary.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>"
Nach dem Login kopieren

Datenanalyse-XML zurückgeben

 //请求统一下单接口
    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);
       }
      })
     }
    })
   }
  });
 }
Nach dem Login kopieren

Der dritte ist Auch hier gibt es mehrere Fallstricke. Der erste besteht darin, dass viele AppIDs nicht als appid geschrieben werden können. Der zweite besteht darin, dass das Parameterformat von preoatid=wx2017011711060194dccf725232155886323 korrekt sein muss Beim Aufruf der Zahlung müssen Sie auch zur Signaturschnittstelle gehen, um zu überprüfen, ob die Parameter korrekt sind. Beim Aufruf der WeChat-Zahlung muss die App-ID hinzugefügt werden 🎜>

Vielen Dank fürs Lesen. Ich hoffe, es kann allen helfen. Vielen Dank für Ihr Interesse an dieser Seite.

getsignType: function (appid, timeStamp, nonce_str, pk, signType, key) {
  var that = this;
  wx.request({
   url: "http://localhost:8080/XinXingWXApi/wxXcxApi/getSignType.hn",
   method: &#39;GET&#39;,
   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({
     &#39;appId&#39;: appid,
     &#39;timeStamp&#39;: timeStamp,
     &#39;nonceStr&#39;: nonce_str,
     &#39;package&#39;: pk,
     &#39;signType&#39;: &#39;MD5&#39;,
     &#39;paySign&#39;: paySign,
     &#39;success&#39;: function (res) {
      console.log(res);
      console.log(&#39;success&#39;);
     },
     &#39;fail&#39;: function (res) {
      console.log(res);
      console.log(&#39;fail&#39;);
     },
     &#39;complete&#39;: function (res) {
      // console.log(res);
      console.log(&#39;complete&#39;);
     }
    });
   }
  })
 }
Nach dem Login kopieren
Weitere Artikel zu Entwicklungsfehlern bei der WeChat-Applet-Zahlungsfunktion finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage