【微信支付】微信支付對接總結(后端)


前言

  本篇文章主要用於總結下常用的微信支付方式對接方式和特點

微信支付產品

  如下圖,常見的微信支付產品 https://pay.weixin.qq.com/wiki/doc/api/index.html

   

 

 

   本篇文章主要針對APP支付,Native支付,小程序支付對接進行總結和整理

 

APP支付

  相關文檔: https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_5_0.shtml

  介紹:

  APP支付是指商戶通過在移動端應用APP中集成開放SDK調起微信支付模塊來完成支付。目前微信支付支持手機系統有:IOS(蘋果)、Android(安卓)和WP(Windows Phone)

  時序圖

  

 

 

   根據時序圖,可以看到支付核心,也就是后端關注點主要在步驟4:生成預付單(也就是微信文檔中的統一下單接口 https://api.mch.weixin.qq.com/pay/unifiedorder)

   API文檔地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1

   注意點:

    1.涉及到的支付參數有4個

      1.1,wxAppid-微信開放平台審核通過的應用APPID,開放平台地址: https://open.weixin.qq.com/

      1.2,mch_id-微信支付分配的商戶號

      1.3.mch_key-商戶平台設置的密鑰key(用於加密時使用) https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3

      1.4 wx_file-微信支付證書(證書和商戶ID是配套的,涉及到資金變動的接口需要證書)參考地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3

    2.請求與響應的接口數據的格式都是XML,需要簽名和驗簽

      簽名方式主要有兩種:HMAC-SHA256  / MD5

      微信提供了驗簽的工具:地址:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=20_1

    3.商戶服務端接口返回字符串給到移動端APP,返回的格式可以指定為JSON格式,客戶端解析JSON獲取支付參數,再去拉起微信支付(即時序圖中的7)

      JSON格式:

//返回參數接口文檔:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
{\"appId\":\"xxxxxxxxx(移動端應用APPID)\",\"nonceStr\":\"xxxxxxxx(隨機字符串)\",\"packageValue\":\"Sign=WXPay\",\"partnerId\":\"xxxxxx(商戶ID)\",\"prepayId\":\"xxxxxxxxxxxx(預支付ID)\",
\"sign\":\"xxxxxxxx(簽名)\",\"timeStamp\":\"xxxxxxx(時間戳)\"}

    4.包名要保持一致

      注意開放平台中配置的微信應用APPID對應的包名必須和拉起支付的APP客戶端要保持一致,如果包名不一致,則時序圖圖步驟7拉起微信支付時,會提示包名錯誤

      查看微信應用包名信息:

      微信開放平台---->移動應用---->查看----->開發信息

    如下圖

    

 

    5.需要綁定微信應用APPID和商戶ID

    

    關聯綁定地址 https://pay.weixin.qq.com/static/pay_setting/appid_protocol.shtml

     綁定后,在微信開放平台查看應用可以看到應用信息-->接口信息-->微信支付狀態為已獲取

    

Native支付

  https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1

    介紹

  Native支付是商戶系統按微信支付協議生成支付二維碼,用戶再用微信“掃一掃”完成支付的模式。該模式適用於PC網站支付、實體店單品或訂單支付、媒體廣告支付等場景。

  也就是我們常見的PC端網頁的掃碼支付

    時序圖

  地址:

  https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter5_1_10.shtml(V3文檔地址)

  https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_5&index=3(V2文檔地址)

  

 

 

 

    根據時序圖,可以看到后端主要關注的點在步驟2和步驟3(調用API接口發起預支付請求)

  注意點:

    1.涉及到的支付參數有4個

      1.1,wxAppid-微信開放平台審核通過的應用APPID,開放平台地址: https://open.weixin.qq.com/

      1.2,mch_id-微信支付分配的商戶號

      1.3.mch_key-商戶平台設置的密鑰key(用於加密時使用) https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=4_3

      1.4 wx_file-微信支付證書(證書和商戶ID是配套的,涉及到資金變動的接口需要證書)參考地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=4_3

    2.請求與響應的接口數據的格式都是XML,需要簽名和驗簽

      簽名方式主要有兩種:HMAC-SHA256  / MD5

      微信提供了驗簽的工具:地址:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=20_1

    3.商戶服務端接口返回微信特有的協議URL,客戶端將該URL轉換成二維碼呈現給用戶

      

 

       weixin://wxpay/bizpayurl/up?pr=NwY5Mz9&groupid=00(注意,該協議是微信特有的協議,只能通過微信客戶端打開)

      

 

H5支付

  文檔地址:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_1

    介紹

    H5支付是指商戶在微信客戶端外的移動端網頁展示商品或服務,用戶在前述頁面確認使用微信支付時,商戶發起本服務呼起微信客戶端進行支付。

    主要用於觸屏版的手機瀏覽器請求微信支付的場景。可以方便的從外部瀏覽器喚起微信支付。

    提醒:H5支付不建議在APP端使用,如需要在APP中使用微信支付,請接APP支付

  業務流程

    https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_3

    時序圖

    地址:

    https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4(V2文檔地址)

  

    根據時序圖,可以看到后端主要關注的點在步驟2,調用微信支付接口下單

  注意點:

    1.涉及到的支付參數有4個

      1.1,wxAppid-微信開放平台審核通過的應用APPID,開放平台地址: https://open.weixin.qq.com/

      1.2,mch_id-微信支付分配的商戶號

      1.3.mch_key-商戶平台設置的密鑰key(用於加密時使用) https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1

      1.4 wx_file-微信支付證書(證書和商戶ID是配套的,涉及到資金變動的接口需要證書)參考地址:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=4_3

    2.請求與響應的接口數據的格式都是XML,需要簽名和驗簽

      簽名方式主要有兩種:HMAC-SHA256  / MD5

      微信提供了驗簽的工具:地址:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1

    3.H5支付的交易類型

      H5支付的交易類型為MWEB

    4.H5支付的場景信息

      H5支付需要傳遞scene_info參數,注意場景信息里需要傳對應的包名/bundle_id/WAP網站URL地址

      這里可能是處於安全考慮,保證客戶端請求拉起支付地址的和服務端傳遞的地址要保證一致

       

    5.商戶服務端接口返回微信Http協議的URL地址,如圖

     可以看到返回值 

     https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241

       

    6.H5支付跳轉地址無法跳轉回的來問題

         注意,客戶端拿到服務端統一下單接口的URL后,訪問URL,拉起H5微信支付,這種情況下,為了保證微信支付后,頁面能夠跳回商戶的H5網站,

      這里可以再同一個下單接口返回URL后面,添加一個跳轉到商戶的URL地址來解決這個問題,例如

      https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241&redirect_url=http://www.商戶網站.com

      由前端獲取rediect_url后面的參數,來進行支付成功后的跳轉

 

JSAPI支付/公眾號支付

  JSAPI支付也叫公眾號支付

  https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1

    介紹

   商戶已有H5商城網站,用戶通過消息或掃描二維碼在微信內打開網頁時,可以調用微信支付完成下單購買的流程。

  業務流程

    https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4

    時序圖

  

 

 

 

    根據時序圖,可以看到后端主要關注的點在步驟3和4,調用微信支付接口下單

  注意點:

    0.准備工作:

    參考地址: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_3

               

    1.涉及到的支付參數有4個

      1.1,wxAppid-微信開放平台審核通過的應用APPID,開放平台地址: https://open.weixin.qq.com/

      1.2,mch_id-微信支付分配的商戶號

      1.3.mch_key-商戶平台設置的密鑰key(用於加密時使用) https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3

      1.4 wx_file-微信支付證書(證書和商戶ID是配套的,涉及到資金變動的接口需要證書)參考地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3

    2.請求與響應的接口數據的格式都是XML,需要簽名和驗簽

      簽名方式主要有兩種:HMAC-SHA256  / MD5

      微信提供了驗簽的工具:地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_20&index=1

    3.JSAPI支付的交易類型

      JSAPI支付的交易類型為JSAPI

    4.JSAPI支付的場景信息

      JSAPI支付的需要傳遞openid參數

    5.商戶服務端接口返回的是提供給客戶端JS調用的參數

      

    {\"appId\":\"xxxxxxxxx(移動端應用APPID)\",\"nonceStr\":\"xxxxxxxx(隨機字符串)\",\"packageValue\":\"Sign=WXPay\",\"partnerId\":\"xxxxxx(商戶ID)\",\"prepayId\":\"xxxxxxxxxxxx(預支付ID)\",
    \"sign\":\"xxxxxxxx(簽名)\",\"timeStamp\":\"xxxxxxx(時間戳)\"}

     

 


免責聲明!

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



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