以下是自己在做微信支付相關産品時的一些總結,拿出來和大家分享一下。其中跨公衆号支付的場景是重點要講的。在一些場景下我們的公衆号裡會接入很多商戶,在一些支付業務場景中會遇到支付到本公衆号對應的支付商戶賬号,也會遇到需要支付到指定商戶微信支付賬戶的情況。下面說的服務商模式及跨公衆号模式可以解決此類業務。
業務術語說明
appid:公衆号應用id
mchid:公衆号開通微信支付後,微信配置設定的商戶号。
openid:使用者在某一公衆号下的唯一id,可通過oauth2.0接口獲得
微信支付服務商:可添加子商戶,為子商戶提供支付能力。
子商戶相關屬性:
sub_mchid:子商戶号
sub_appid:子商戶公衆号appid( 子商戶也可沒有自己的公衆号)
sub_openid:使用者在該子商戶下的openid,可通過oauth2.0接口獲得
支付場景說明
- 跨公衆号支付:在一個公衆号需要往另一個公衆号支付賬号支付,需要通過微信oauth接口,通過浏覽器跳轉擷取使用者在目标公衆号的openid.進而支付到目标公衆号賬戶。注意前提是你要有目标公衆号的權限,可以維護oauth接口位址為你自己的服務位址。
- 公衆号支付:關注目前公衆号的使用者支付到目前公衆号賬戶。【和原來支付流程一樣,直接彈出支付視窗】
- 子商戶支付:在服務商的公衆号使用者可支付到服務商的子商戶;在子商戶的公衆号下使用者可以通過子商戶支付模式支付到該商戶賬戶
各支付方式支付要素
- 開通微信支付的公衆号支付
目前微信支付賬号對應的appid,商戶号mchid,使用者在該公衆号下的openid
- 服務商公衆号支付到子商戶
服務商appid,服務商商戶号mchid,使用者在服務商公衆号openid,子商戶商戶号sub_mchid
- 子商戶公衆号支付到自己
服務商appid,服務商商戶号mchid,子商戶sub_appid,子商戶号sub_mchid,使用者在子商戶公衆号下的sub_openid
子商戶支付模式注意點
新的微信支付下單接口會增加appid參數,既openid對應的appid;
由于子商戶支付資訊,即可用于服務商公衆号下使用者往子商戶支付,也可以用于具有公衆号的子商戶在自己公衆号下完成支付功能。
是以在下單接口裡需要傳入目前使用者openid對應的appid,以便支付平台區分該openid是服務商公衆号openid還是,子商戶openid。
測試及上線測試子商戶支付,需要到微信商戶背景配置權限。如下圖

Oauth2.0擷取使用者id注意點
如需擷取目标公衆号的openid,需要在目标公衆号,開發–》接口權限裡,配置授權位址為統一的公衆号授權回調位址
支付流程時序圖
根據業務場景擷取相關支付方式資訊
可根據支付目标機構id,目前公衆号appid,業務類型 擷取目前支付方式資訊。
總結
微信相關接口說明
公衆号支付 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
服務商支付 https://pay.weixin.qq.com/wiki/doc/api/jsapi_sl.php?chapter=9_1
oauth2.0接口 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_4
微信支付服務商說明 http://kf.qq.com/faq/120911VrYVrA150818auimMb.html