【weixin】微信支付---Native支付模式一


【模式一】:商戶后台系統根據微信支付規則鏈接生成二維碼,鏈接中帶固定參數productid(可定義為產品標識或訂單號)。
用戶掃碼后,微信支付系統將productid和用戶唯一標識(openid)回調商戶后台系統(需要設置支付回調URL),商戶后台系統根據productid生成支付交易,
最后微信支付系統發起用戶支付流程。
商戶支付回調URL設置指引:進入商戶平台-->產品中心-->開發配置,進行配置和修改,如下圖所示。

 

圖一

模式一開發前,商戶必須在公眾平台后台設置支付回調URL。URL實現的功能:接收用戶掃碼后微信支付系統回調的productid和openid;URL設置詳見圖一

業務流程時序圖

 

圖二

業務流程說明:

(1)商戶后台系統根據微信支付規定格式生成二維碼(規則見下文),展示給用戶掃碼。

(2)用戶打開微信“掃一掃”掃描二維碼,微信客戶端將掃碼內容發送到微信支付系統。

(3)微信支付系統收到客戶端請求,發起對商戶后台系統支付回調URL的調用。調用請求將帶productid和用戶的openid等參數,並要求商戶系統返回交數據包,詳細請見"本節3.1回調數據輸入參數"

(4)商戶后台系統收到微信支付系統的回調請求,根據productid生成商戶系統的訂單。

(5)商戶系統調用微信支付【統一下單API】請求下單,獲取交易會話標識(prepay_id)

(6)微信支付系統根據商戶系統的請求生成預支付交易,並返回交易會話標識(prepay_id)。

(7)商戶后台系統得到交易會話標識prepay_id(2小時內有效)。

(8)商戶后台系統將prepay_id返回給微信支付系統。返回數據見"本節3.2回調數據輸出參數"

(9)微信支付系統根據交易會話標識,發起用戶端授權支付流程。

(10)用戶在微信客戶端輸入密碼,確認支付后,微信客戶端提交支付授權。

(11)微信支付系統驗證后扣款,完成支付交易。

(12)微信支付系統完成支付交易后給微信客戶端返回交易結果,並將交易結果通過短信、微信消息提示用戶。微信客戶端展示支付交易結果頁面。

(13)微信支付系統通過發送異步消息通知商戶后台系統支付結果。商戶后台系統需回復接收情況,通知微信后台系統不再發送該單的支付通知。

(14)未收到支付通知的情況,商戶后台系統調用【查詢訂單API】。

(15)商戶確認訂單已支付后給用戶發貨。

生成二維碼規則

二維碼中的內容為鏈接,形式為:

weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX

其中XXXXX為商戶需要填寫的內容,商戶將該鏈接生成二維碼,如需要打印發布二維碼,需要采用此格式。商戶可調用第三方庫生成二維碼圖片。參數說明如下:

表6.1 生成二維碼所需參數列表

名稱 變量名 類型 必填 示例值 描述
公眾賬號ID appid String(32) wx8888888888888888 微信分配的公眾賬號ID
商戶號 mch_id String(32) 1900000109 微信支付分配的商戶號
時間戳 time_stamp String(10) 1414488825 系統當前時間,定義規則詳見時間戳
隨機字符串 nonce_str String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 隨機字符串,不長於32位。推薦隨機數生成算法
商品ID product_id String(32) 88888 商戶定義的商品id 或者訂單號
簽名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 簽名,詳見簽名生成算法

舉例:

weixin://wxpay/bizpayurl?appid=wx2421b1c4370ec43b&mch_id=10000100&nonce_str=f6808210402125e30663234f94c87a8c&product_id=1&time_stamp=1415949957&sign=512F68131DD251DA4A45DA79CC7EFE9D

回調商戶支付URL

商戶提供的支付回調URL(回調地址設置)需要實現以下功能:接收用戶掃碼后微信支付系統發送的數據,根據接收的數據生成支付訂單,調用【統一下單API】提交支付交易。

3.1 輸入參數

表6.2 輸入參數說明

名稱 變量名 類型 必填 示例值 描述
公眾賬號ID appid String(32) wx8888888888888888 微信分配的公眾賬號ID
用戶標識 openid String(128) o8GeHuLAsgefS_80exEr1cTqekUs 用戶在商戶appid下的唯一標識
商戶號 mch_id String(32) 1900000109 微信支付分配的商戶號
是否關注公眾賬號 is_subscribe String(1) Y 用戶是否關注公眾賬號,僅在公眾賬號類型支付有效,取值范圍:Y或N;Y-關注;N-未關注
隨機字符串 nonce_str String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 隨機字符串,不長於32位。推薦隨機數生成算法
商品ID product_id String(32) 88888 商戶定義的商品id 或者訂單號
簽名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 返回數據簽名,簽名生成算法

3.2 輸出參數

表6.3 輸出參數說明

名稱 變量名 類型 必填 示例值 描述
返回狀態碼 return_code String(16) SUCCESS SUCCESS/FAIL,此字段是通信標識,非交易標識,交易是否成功需要查看result_code來判斷
返回信息 return_msg String(128) 簽名失敗 返回信息,如非空,為錯誤原因;簽名失敗;具體某個參數格式校驗錯誤.
公眾賬號ID appid String(32) wx8888888888888888 微信分配的公眾賬號ID
商戶號 mch_id String(32) 1900000109 微信支付分配的商戶號
隨機字符串 nonce_str String(32) 5K8264ILTKCH16CQ2502SI8ZNMTM67VS 微信返回的隨機字符串
預支付ID prepay_id String(64) wx201410272009395522657a690389285100 調用統一下單接口生成的預支付ID
業務結果 result_code String(16) SUCCESS SUCCESS/FAIL
錯誤描述 err_code_des String(128)   當result_code為FAIL時,商戶展示給用戶的錯誤提
簽名 sign String(32) C380BEC2BFD727A4B6845133519F3AD6 返回數據簽名,簽名生成算法

 

 相關資料:

 


免責聲明!

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



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