微信小程序微信支付的一些坑


使用的是Node.js作為后端

統一下單:

appid:這里的appid是調起微信支付的appid

mch_id:商戶號,需要注意的是商戶號要與appid對應

nonce_str:Math.random().toString(36).substr(2)這是我的隨機字符串的生成算法

sign:這里的簽名是第一次簽名,后面還會講到第二次簽名,主要注意點如下:

  1.首先要把需要傳遞請求參數使用key1=value&key2=value2的形式進行拼接也就是統一下單文檔上的參數,除去sign

  2.所拼接的字符串的屬性名的順序,必須按照ASCII碼(字典序)進行排序

  3.在最后拼接上使用的key,這里的key指的是商戶平台設置的API秘鑰>>>>微信商戶平台(pay.weixin.qq.com)-->賬戶設置-->API安全-->密鑰設置

  4.進行MD5簽名或者HMAC-SHA256簽名方式,這里使用到的是MD5的方式

  5.最后需要需要轉換成大寫

sign_type:簽名方式,要與使用的簽名方式一直

spbill_create_ip:這里的ip網上有人說隨便填,但是我在嘗試時候使用了127.0.0.1返回的數據中數ip錯誤,所以使用了網絡的真實ip,這里使用到了http://ip-api.com/json

trade_type:這里使用JSAPI,需要在商戶平台進行開通

openid:用戶在商戶appid下的唯一標識 獲取方式請參考小程序API wx.login和code2Session,其中appid,secret應該對應

最后請求參數生成完畢之后需要傳遞一個XML文件到服務器這里使用到了xml2js

一般請求失敗后可以先檢查請求數據格式是否正確,再檢查參數順序以及key是否對應

wx.requestPayment(Object object)調起微信支付

timeStamp:當前的時間戳單位秒

package:這里的形式是prepay_id=***這里的prepay_id是統一下單成功后返回的數據結果

signType:簽名方式

paySign:這里是簽名也就是前面所說的二次簽名這里的簽名包含參數有appId(注意這里跟一次簽名的屬性不同I為大寫)傳遞參數不用,但是必須參與簽名,之后就是

nonceStr, package=prepay_id=(這里注意需要加上prepay_id=),signType, timeStamp,還有一個key,這是商戶的API秘鑰,需要參與簽名(之前坑在這里),小程序調用支付API ,其他注意事項與第一次簽名方式一致

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM