开发前必读

1、开放模式介绍

 

在进行微信支付开发之前,深刻理解微信支付的账号关系非常有助于你使用微信以及微信支付的能力。微信支付对商户开放的所有面对用户使用的api,都是由appid和mch_id成对使用的。微信支付开放的能力主要分2大类,普通模式和服务商模式


1.1普通模式

最常规的普通模式,适用于有自己开发团队或外包开发商的直连商户收款。开发者申请自己的appid和mch_id,两者需具备绑定关系,以此来使用微信支付提供的开放接口,对用户提供服务。


微信支付基础账号模型-普通模式

1.2服务商模式

第三方服务商申请自己的服务号appid,并通过该服务号appid申请服务商mch_id,以此获得微信支付服务商能力。再通过服务商mch_id为所服务的特约商户申请创建微信支付sub_mch_id,创建好的sub_mch_id默认和服务商的mch_id建立父子授权关系。以此来使用微信支付提供的开放接口,对特约商户及用户提供服务。同时,微信支付为服务商模式下的每一条“mch_id-sub_mch_id父子授权关系”上,都开放了一些开发配置能力供服务商配置,包括不限于支付授权目录、推荐关注的appid、sub_appid等。拿小程序支付举例,服务商订单由哪个小程序调用js拉起支付,则需要在特约商户开发配置中将该小程序appid配置成sub_appid。每条父子关系上的sub_appid可以为多,用以满足不同的场景需求,但每笔交易只能使用1个。

注:sub_appid详细说明请参数附录


服务商模式下又分普通服务商和银行服务商两大类,除资金清算能力不同,在账号模型和使用上,普通服务商和银行服务商并无区别。


微信支付基础账号模型-服务商模式

1.2.1普通服务商发起支付

最常规的第三方模式,第三方帮特约商户申请商户号并为他进行支付开发,第三方本身不经手资金,支付成功后资金直接进入特约商户商户号。


普通服务商微信支付资金清算流程

1.2.2银行类服务商发起支付

有清算资质的银行机构可申请成为微信支付银行类服务商,开通后可通过api创建特约商户号并为其进行支付开发,资金直接进入银行类服务商账户,由银行服务商为特约商户进行资金清算;在此能力的延伸下,银行服务商不仅可直接为其特约商户提供服务,也可间接用同一套模式为渠道商的特约商户提供服务。渠道商可通过银行类服务商基于微信支付接口封装的特约商户创建、子商户开发配置(推荐关注、sub_appid等)、下单接口,来为渠道商下属商户接入微信支付。渠道商部分说明详见:《渠道商部分说明 》 ;银行类服务商接口详见:http://pay.weixin.qq.com/wiki/doc/api/mch_bank.php?chapter=9_21


银行服务商微信支付资金清算流程



2、业务场景结合

 

了解完微信支付不同模式的基础账号关系与使用后,针对第三方模式进行枚举说明,以小程序举例。
小程序的开发:第三方服务商帮商户开发小程序,有三种业务场景:

1、第三方自己申请账号,自己开发,生成指定内页给特约商户用,该模式简称中心化模式。
2、以特约商户身份申请小程序appid,第三方完成开发,该模式简称外包模式。
3、通过开放平台第三方开发者代特约商户进行小程序的开发,该模式简称第三方模式。

无论哪种模式开发的小程序,在使用面对用户的微信支付能力时,都以该小程序appid为主体id来调用微信开放平台提供的api。以在某小程序中发起微信支付为例,分后台下单和前端js拉起收银台两部分。其中,后台下单对应微信支付的三大类开放模式,前端js拉起收银台需通过该小程序的appid,且该appid参与后台下单。即,根据不同的开放模式和业务场景枚举,第三方开发小程序使用微信支付,可分别3*3,共9种不同的组合,第三方需根据自身业务诉求选择对应的组合模式来使用。


小程序开发模式+支付下单模式组合

注:以上3*3共计9种组合,均能成功接入微信支付。但红色连接线为二清模式,政策上不允许采用该模式。有需求的第三方开发者可通过银行渠道商模式接入。