1. 程式人生 > >微信公眾號內喚起h5支付

微信公眾號內喚起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支付......