微信公眾號內喚起h5支付詳解


1.調用統一下單的接口URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder

2.調用統一下單必傳參數:

  appid:需要進行支付功能的公眾號的appId

  mch_id:微信分配的商戶號

  nonce_str:隨機字符串,自己生成,要求在32位以內,微信官方文檔推薦方式是調用隨機數函數生成,將得到的值轉換為字符串,主要用於保證簽名不可測

  sign:簽名,通過簽名算法生成,使用md5進行加密

  body:商品描述,自定義,如對什么進行付款

  out_trade_no:隨機單號,要求是32個字符內,只能是數字、大小寫字母_-|* 且在同一個商戶號下唯一

  total_fee:支付的金額,注意是以分為單位

  spbill_create_ip:客戶請求的地址

  notify_url:你的回調地址

  trade_type:交易類型,這里微信公眾號支付為:JSAPI

3.其他可能需要但是非必傳的參數:

  sign_type:簽名類型,默認是md5,還支持HMAC-SHA256

  attach:此參數可自行傳String類型的值,支付成功后微信會原樣返回

 

  參考微信官方api文檔:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

4.調用統一下單之前先獲取sign簽名:

 

這里的generateSignature方法,只需要將傳過去的集合遍歷,按順序用字符串拼接好,再進行md5的加密即可

5.調用統一下單:

 

把前面包含了sign的集合轉成xml再用post的方式請求統一下單,返回統一下單的xml

<xml>
<appid>你的appId</appid>
<mch_id>你的商戶Id</mch_id>
<nonce_str>70beD14citQ9QVXReoS6o032S00pTUvW</nonce_str>
<sign>7223ADBF584548B313EEACA0E11F77ED</sign>
<body>測試付款</body>
<out_trade_no>1310433801201812119763998320</out_trade_no>
<total_fee>1</total_fee>
<spbill_create_ip>客戶請求的地址</spbill_create_ip>
<notify_url>回調地址</notify_url>
<trade_type>JSAPI</trade_type>
<attach>931</attach>
<openid>o4vANuJk1m7jSAwP67gqu6GMGSsA</openid>
</xml>

然后把返回的xml轉成集合傳到頁面用於喚起H5的支付,之后進行二次簽名,這個需要用appIdtimeStampnonceStrpackagesignTypepaySign參數重新獲取簽名,這里注意在將xml轉map的時候,微信公布的XEE的漏洞,如果是使用微信支付的sdk,那只需要更新就行。

頁面喚起h5支付得代碼(直接使用微信文檔里面得,把值改成自己后台傳過來得值就行):

 后續再寫微信瀏覽器外得H5支付......


免責聲明!

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



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