最近對微信App支付(App端集成微信支付SDK)申請步驟,以及終端在進行微信支付時商戶App、商戶Server、微信App、微信支付Server的交互流程進行了簡單了解。這篇文章應該算是學習筆記,分享出來,希望對感興趣的朋友有一定幫助。
本文從以下三個方面介紹微信App支付:
- 微信支持哪幾種支付模式?
- 如何申請接入微信App支付?
- 微信App支付流程(
支付過程中的前后端交互邏輯)
一、微信支付模式
微信支付的全部支付模式以及對應的支付場景如下:
- 付款碼支付(場景:
線下面對面收銀)
付款碼支付是用戶展示微信錢包內的“刷卡條碼/二維碼”給商戶系統掃描后直接完成支付的模式。主要應用線下面對面收銀的場景。 - Native支付(場景:
PC網站支付)
Native支付是商戶系統按微信支付協議生成支付二維碼,用戶再用微信“掃一掃”完成支付的模式。該模式適用於PC網站支付、實體店單品或訂單支付、媒體廣告支付等場景。 - JSAPI支付(場景:
微信內H5支付)
JSAPI支付是用戶在微信中打開商戶的H5頁面,商戶在H5頁面通過調用微信支付提供的JSAPI接口調起微信支付模塊完成支付。應用場景有:
用戶在微信公眾賬號內進入商家公眾號,打開某個主頁面,完成支付;
用戶的好友在朋友圈、聊天窗口等分享商家頁面連接,用戶點擊鏈接打開商家頁面,完成支付;
將商戶頁面轉換成二維碼,用戶掃描二維碼后在微信瀏覽器中打開頁面后完成支付; - APP支付(場景:
商戶App集成微信sdk完成支付)
APP支付又稱移動端支付,是商戶通過在移動端應用APP中集成開放SDK調起微信支付模塊完成支付的模式。 - H5支付(場景:
手機瀏覽器支付)
H5支付主要是在手機、ipad等移動設備中通過瀏覽器來喚起微信支付的支付產品。 - 小程序支付(場景:
微信小程序支付)
小程序支付是專門被定義使用在小程序中的支付產品。目前在小程序中能且只能使用小程序支付的方式來喚起微信支付。
二、微信App支付申請步驟
App支付為終端在商戶App內集成微信支付SDK,點擊支付后通過調用微信支付SDK相關接口,喚起微信App從而完成支付流程。
微信APP支付申請步驟如下:
- 注冊微信開放平台賬號
需要的資料:
郵箱、企業注冊地、開發者資料(姓名、手機號、聯系地址、身份證號); - 認證開發者資質(認證資質后方可申請微信支付)
需要的資料:
認證公函的蓋章電子版、企業全稱、工商營業執照照片、對公賬戶(賬戶名稱、賬號、開戶銀行,個體工商戶可用法人的銀行賬戶代替)、認證聯系人信息(姓名、電話、座機、郵箱、身份證號碼);
申請開發者資質認證審核服務費:300元/次; - 創建應用獲取AppID
需要資料:
應用名稱、簡介、官網、應用logo、安卓應用簽名、安卓應用包名; - 微信支付商戶平台接入微信支付
需要的資料:
超級管理員資料(姓名、手機號、郵箱)、營業執照照片、組織機構代碼證照片(未三證合一)、法人身份證正反面照片、對公銀行賬戶(開戶名稱、開戶銀行、開戶支行、開戶賬號)、經營信息(經營類目、售賣商品描述)、公眾號AppID - 在線簽署協議
- 確定App綁定關系
2.1 注冊微信開放平台賬號
微信開放平台注冊地址如下:
https://open.weixin.qq.com/
注冊所需信息:
郵箱、企業注冊地、開發者資料(姓名、手機號、聯系地址、身份證號)。
微信開放平台注冊步驟如下:
- 微信開放平台注冊賬號
注冊地址:
https://open.weixin.qq.com/

- 填寫注冊信息
一般采用郵箱注冊。

- 完善開發者資料:
開發者資料包括:姓名、手機號、聯系地址、身份證號。

2.2 認證開發者資質
通過開發者資質認證后方可申請微信支付。

進入微信開放平台【賬號-開發者資質認證】:
https://open.weixin.qq.com/
申請開發者資質認證審核服務費:300元/次;
申請所需材料:
認證公函的蓋章電子版、企業全稱、工商營業執照照片、對公賬戶(賬戶名稱、賬號、開戶銀行,個體工商戶可用法人的銀行賬戶代替)、認證聯系人信息(姓名、電話、座機、郵箱、身份證號碼);
認證審核時間: 1-5個工作日;
開發者資質認證操作步驟如下:
- 點擊“現在申請”進入微信公眾平台:

- 選擇認證類型&上傳公函:

- 上傳工商營業執照:

- 填寫對公銀行卡信息:

- 填寫聯系人信息:

- 確認命名:

- 支付認證費用:

2.3 創建應用獲取AppID
該步驟開始的前提:
APP開發基本完成,打包獲取應用簽名、包名(備用);
創建應用:
進入微信開放平台【管理中心-移動應用】https://open.weixin.qq.com/
所需信息:
應用名稱、簡介、官網、應用logo、安卓應用簽名、安卓應用包名
創建應用並提交審核,審核通過后會獲取到AppID。

2.4 微信支付商戶平台接入微信支付
進入微信開放平台【管理中心/應用詳情】“申請開通微信支付”:
https://open.weixin.qq.com/

申請所需材料:
超級管理員資料(姓名、手機號、郵箱)、營業執照照片、組織機構代碼證照片(未三證合一)、法人身份證正反面照片、對公銀行賬戶(開戶名稱、開戶銀行、開戶支行、開戶賬號)、經營信息(經營類目、售賣商品描述)、公眾號AppID
提交后系統會進行校驗,校驗通過會進行匯款驗證,驗證通過后即完成申請資料提交;
微信支付審核時間:1-5個工作日;
微信支付商戶平台接入微信支付的操作步驟如下:

- 填寫超級管理員姓名、手機號、郵箱,以創建申請單:

- 進入填寫商戶資料頁面,選擇主體類型為“企業”后,按頁面提示提交相關信息,詳見下圖:

- 預覽申請單並確認:

2.5 在線簽署協議
微信支付審核通過后,需要在線簽署協議。
- 審核通過后,待簽約模版消息會通過
微信支付商家助手公眾號推送給超級管理員

- 點擊消息進入簽約頁面,核對商戶信息和閱讀協議后,點擊簽署,即可完成簽約

2.6 確定綁定關系
微信支付交易發起依賴於公眾號、小程序、移動應用(即APPID)與商戶號(即MCHID)的綁定關系,因此商戶在完成簽約后,需要確認當前商戶號同AppID的綁定關系,方可使用。
App集成微信支付SDK:
- 登錄微信支付平台【產品中心/AppID賬號管理/我關聯的AppID賬號】新增AppID賬號;
微信支付平台:
https://pay.weixin.qq.com

- 前往微信開放平台【管理中心/查看/微信支付/商戶號管理】確認授權申請。
微信開放平台:
https://open.weixin.qq.com/

三、微信App支付流程
終端用戶點擊支付后,商戶客戶端App、商戶Server、微信客戶端App、微信支付Server
商戶App通過集成微信支付SDK完成支付大概需要經過以下步驟:
- 生成支付訂單;
- 支付授權;
- 用戶輸入密碼進行交易;
- 支付結果異步通知;
- 商戶App驗證支付結果,並提示用戶;

流程說明:
- 步驟1-2:終端用戶打開
商戶App,瀏覽並選中商戶在售商品,完成下單操作; - 步驟3:終端用戶完成下單后,
商戶App調用商戶Server接口請求生成訂單; - 步驟4-6:
商戶Server調用微信統一下單Api請求生成預付費訂單pre_pay_id; - 步驟7-8:
商戶Server生成帶簽名的客戶端支付信息,並將pre_pay_id、sign返回給商戶App。 - 步驟9:
商戶App調用微信支付sdk提供的支付Api,喚起微信支付;並傳入訂單號、簽名、價格等信息。 - 步驟10-12:
微信App請求微信支付系統發起支付請求,微信支付系統完成支付參數驗證,並將支付授權返回給微信App。 - 步驟13-15:
微信App彈出支付密碼輸入窗口,用戶收入支付密碼並確認支付;支付密碼由微信App調用微信支付系統相關接口傳遞給微信支付系統;微信支付系統完成密碼校驗,隨后完成交易。 - 步驟16-18:
微信支付系統完成交易后,會通過異步通知的方式通知商戶Server,商戶Server完成數據庫入庫與其他邏輯操作后,通知微信支付系統處理結果。 - 步驟19-20:
微信支付系統完成交易后,通知微信App交易成功;微信App回調給商戶App支付成功的消息。 - 步驟21-23:
商戶App收到微信支付成功的回調后,會調用商戶Server相關接口,再次確認訂單是否支付成功,(此時若商戶Server尚未收到微信支付系統支付成功的異步回調,會調用微信支付系統相關Api主動查詢訂單狀態)商戶Server將支付狀態回調給商戶App,交易完成。
參考
open帳號注冊操作步驟:
https://kf.qq.com/faq/170811QrE3En170811bUNRJb.html
微信認證申請流程:
https://kf.qq.com/faq/161220Brem2Q161220uUjERB.html
移動應用創建流程:
https://kf.qq.com/faq/170824EnUNRJ170824bYnEJr.html
如何提交接入申請資料?
https://kf.qq.com/faq/180910aYF77n18091073a6Jj.html
商戶申請接入時,如何簽約?
https://kf.qq.com/faq/180910Rn6FbI180910ZbYNn2.html
商戶申請接入時,如何確認綁定關系?
https://kf.qq.com/faq/180910QZzmaE180910vQJfIB.html
商家商戶號與AppID賬號關聯管理
https://kf.qq.com/faq/1801116VJfua1801113QVNVz.html
========== THE END ==========

