文章目录
支付模式介绍
普通商户版
说明
- 普通商户版是最常规的普通支付模式,可以进行交易直连商户收款,但是不能拓展子商户。
- 开发者需要申请自己的appId和mach_id,同时两者需具备绑定关系,以此具备微信支付能力。
账号申请指引(以下以小程序为例)
开发指引
小程序支付,业务流程图
服务器交互
-
小程序首先调用登陆验证接口,获取用户登陆凭证code,然后将此code回传给商户服务器,让其发起获取登陆用户信息请求(可省略吗???官方文档貌似不可省略,在统一下单时候trade_type=JSAPI,需要用到openId)
1.1 小程序内发起登验证请求wx.login(object),并将返回的code调用wx.request()Api回传给商户服务器
1.2 商户服务器接收code发起Http请求,获取用户信息auth.code2Session请求
疑问:为什么小程序要将login返回的用户登陆凭证code回传给商户服务器,通过商户服务器来调用
code2Session
获取用户登陆信息?而不是通过小程序直接调用code2Session
获取登陆用户信息呢?为了
access_token
的安全性,后端 API 不能直接在小程序内通过 wx.request 调用,即api.weixin.qq.com
不能被配置为服务器域名。开发者应在后端服务器使用getAccessToken
获取access_token
,并调用相关 API;1.3 小程序接收到商户服务器用户登陆请求结果后,正式向商户服务器发起请求下单
1.4 小程序请求商户服务器进行下单操作:wx.request()
-
商户服务器调用微信统一下单接口,返回预支付交易单号
境内普通商户统一下单:参考地址
请求参数
响应参数 -
小程序接收到商户夫服务器统一下单返回的预支付交易单号,调起支付
小程序调起支付接口:wx.requestPayment(OBJECT)
请求参数
响应参数 -
商户server接收支付通知,api参见公共api【支付结果通知API】
-
商户server查询支付结果,api参见公共api【查询订单API】
注意
- appid必须为最后拉起收银台的小程序appid;
- mch_id为和appid成对绑定的支付商户号,收款资金会进入该商户号;
- trade_type请填写JSAPI;
- openid为appid对应的用户标识,即使用wx.login接口获得的openid
服务商版
说明
- 服务商版是最常规的第三方模式,帮特约商户申请商户号并为他进行支付开发;
- 服务商版可以拓展商户,但自身是不能交易。
- 第三方本身不经手资金,支付成功后资金直接进入特约商户商户号。
账号申请指引(以下以小程序为例)
普通服务商模式需要申请的账号有微信支付服务商mch_id、特约商户mch_id以及拉起支付的小程序appid。
-
申请微信支付服务商mch_id
目前微信支付服务商mch_id的申请渠道仅开放给认证的服务号,即登录认证的服务号后台,点击左侧导航栏的微信支付,在页面中选择服务商申请,按流程即可申请开通并获得服务商mch_id。申请指引
-
申请特约商户号mch_id
-
申请拉起支付的小程序appid
注意:此小程序无需再额外开通微信支付,将该小程序appid配置为对应的特约商户开发配置中的sub_appid即可使用。
开发指引
服务商版小程序支付流程图(与普通商户版并无差异,仅接口参数不同)
系统交互
-
小程序调用
wx.login()
接口获取用户登陆凭证,由开发者服务器再去获取用户信息(最终获取openId,后续统一下单时候需要使用) -
商户服务器调用微信统一下单接口,返回预支付交易单号
境内服务商统一下单:参考地址
请求参数(注意,统一下单接口,服务商版与普通商户版区别,子商户号)
响应参数 -
小程序接收到商户服务器统一下单返回的预支付交易单号,调起支付
小程序调起支付接口:wx.requestPayment(OBJECT)
重要参数(注意:服务商区别与普通商户)
响应参数
注意
- appid为和服务商商户号绑定的服务商appid,一般情况为认证的服务号appid;
- mch_id为服务商商户号,目前仅在认证服务号后台,开放申请服务商商户号,申请开通后即在微信支付系统创建绑定关系;
- sub_mch_id为和服务商商户号有父子绑定关系的子商户号;
- sub_appid为服务商模式的场景appid,在小程序中拉起支付时该字段必传(appid与sub_appid任一即可);
- trade_type请填写JSAPI;
- openid为appid对应的微信用户标识;
- sub_openid为sub_appid对应的微信用户标识,小程序服务商模式下单中的openid和sub_openid必须至少传其中一个,在小程序中拉起支付一般情况下只能获取到sub_openid,即使用wx.login接口获得的openid
特约商户进件
背景说明
服务商拓展特约商户(子商户),可能出现如下问题:
● 人工录入大量商户资料,耗时耗力。
● 商户对标准费率不满意,无法说服商户先签约再帮其调整费率。
针对以上问题,微信支付面向服务商开放“特约商户进件接口”,协助个体工商户、企业、党政机关及事业单位、其他组织等各类型商户发起接入申请,提高商户进件效率,节省人力成本。
业务规则
普通服务商可使用本产品的接口,从业机构(银行及支付机构)及电商平台不可使用。
特约商户进件流程
开发流程指引
银行服务商版
介绍
扩展
微信开放平台
主要面对移动应用/网站应用开发者,为其提供微信登录、分享、支付等相关权限和服务
微信公众平台
微信公众平台用于管理、开放微信公众号(包括订阅号、服务号、小程序、企业微信),简单的说就是微信公众号的后台运营、管理系统。
后台功能(以服务号介绍)
基础运营功能:公众号申请成功后即可获得群发功能、自动回复、自定义菜单、投票管理;
高级功能:微信公众平台还提供了以下高级的功能来丰富公众号,以下权限需要二次开发。
微信支付:提供公众号内微信支付能力,和移动应用一样也需要单独申请,流程和移动APP流程类似。
管理:包括已关注用户管理、消息管理、素材管理
推广:包括广告主(定向投放广告,精准推广自己的服务)和流量主(按月获取广告收入)
统计:用户分析、图文分析、消息分析、接口分析(自定义菜单调用量)
微信商户平台
无论是申请 公众平台商户 还是 开放平台商户,申请微信支付成功后,都会拥有商户平台账号,可登陆商户平台进行操作。
商户平台主要就是做微信支付用的,如果APP或者公众号需要接入支付功能,那么就需要在公众平台申请公众平台商户,或者在开放平台申请开放平台商户。申请成功后会分配商户平台账号。
微信商户平台开通方式
- 通过公众平台申请微信支付开通后,会分配商户平台账号;
- 通过开放平台申请微信支付开通后,会分配商户平台账号;
- 通过微信商户平台提供注册微信支付商户号,使用微信扫码,填写资料申请开通。
微信服务商平台
申请成为微信服务商,可帮助特约商户完成支付申请、参数配置,并按照服务商开发文档完成开发。简单说就是为其他不具备开发能力的商户提供使用微信支付技术支持。
微信服务商申请流程