1、业务平台介绍:
(1)微信公众平台
微信公众平台是微信公众账号申请入口和管理后台。商户可以在公众平台提交基本资料、业务资料、财务资料申请开通微信支付功能。
(2) 微信开放平台
微信开放平台是商户APP接入微信支付开放接口的申请入口,通过此平台可申请微信APP支付。
(3) 微信商户平台
微信商户平台是微信支付相关的商户功能集合,包括参数配置、支付数据查询与统计、在线退款、代金券或立减优惠运营等功能。
2、支付产品介绍:
(1)付款码支付
付款码支付,即日常所说的被扫支付,这是一种纯用于线下场景的支付方式,由用户出示微信客户端内展示的付款二维码,商户使用扫码设备扫码后完成支付。
(2)Native原生支付
Native原生支付,即日常所说的扫码支付,商户根据微信支付协议格式生成的二维码,用户通过微信“扫一扫”扫描二维码后即进入付款确认界面,输入密码即完成支付。
(3) JSAPI网页支付
JSAPI网页支付,即日常所说的公众号支付,可在微信公众号、朋友圈、聊天会话中点击页面链接,或者用微信“扫一扫”扫描页面地址二维码在微信中打开商户HTML5页面,在页面内下单完成支付。
(4) APP支付
APP支付是指商户已有的APP,通过对接微信支付API及SDK,实现从商户APP发起交易后跳转到微信APP,用户完成支付后跳回商户APP的场景。
(5) H5支付
H5支付是指在微信外打开的H5页面,通过对接微信支付API,实现拉起微信客户端,完成支付后跳回外部浏览器的能力。
(6) 小程序支付
小程序支付是指在商户既有的小程序内通过对接微信支付API,实现用户在小程序内完成交易的场景。
3、申请应用APPID
由于微信支付的产品体系全部搭载于微信的社交体系之上,所以直连商户或服务商商户接入微信支付之前,都需要有一个微信社交载体,该载体对应的ID即为APPID。
对于直连商户,该社交载体可以是公众号,小程序或APP。而服务商的社交载体只能是公众号。
如申请社交载体为公众号,请前往公众平台申请(https://mp.weixin.qq.com)
如申请社交载体为小程序,请前往小程序平台申请 (https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/getstart.html#申请账号)
如商户已拥有自己的APP,且希望该APP接入微信支付,请前往开放平台申请(https://open.weixin.qq.com/)
各类社交载体一旦申请成功后,可以登录对应平台查看账号信息以获取对应的appid。
4、申请商户MCHID
商户号申请平台申请MCHID(https://pay.weixin.qq.com)
申请成功后,会向服务商填写的联系邮箱下发通知邮件,内容包含申请成功的MCHID及其登录账号密码,请妥善保存。
注意:一个MCHID只能对应一个结算币种,若需要使用多个币种收款,需要申请对应数量的MCHID。
5、绑定APPID及MCHID
APPID和MCHID全部申请完毕后,需要建立两者之间的绑定关系。在微信商户后台进行绑定。
6、设置支付API密钥
登录微信商户平台,在账户设置-API安全,设置API密钥。
7、微信扫码支付示例
7.1 扫码支付流程
7.2 扫码支付统一下单示例:
7.3 扫码支付微信退款:
微信支付接口中,涉及资金回滚的接口会使用到API证书,包括退款、撤销接口等。可以在微信商户平台—》账户中心—》账户设置—》API安全,下载微信提供的证书生成工具,填写商户号和商户名称,再把将软件生成的密钥字符串复制到微信商户平台,生成证书。
7.4 扫码支付回调:
微信支付完,会调用服务端后端的通知接口,返回支付信息,商户需在微信公众号后台配置回调地址,注意:回调地址必须使用通过ICP备案的域名,不能是IP地址,并且链接不能带参数。
7.5 退款回调:
二、支付宝支付支付宝支付一般分为代扣支付、扫码支付等等。代扣支付,用户需要先进行签约,通常通过商户APP跳转到支付宝APP进行签约,支付时拿用户在支付宝APP中签约时的协议号去扣款。
代扣服务需要在支付宝商户后台开通商户代扣能力。而支付宝二维码扫码支付,需在支付宝商家后台开通当面付能力。
(1)支付宝代扣支付
(2)支付宝扫码支付
注意:支付宝支付,先要初始化加载zfbinfo.properties文件
static {
Configs.init("zfbinfo.properties");
}
在支付宝商户后台配置回到地址,在支付宝处理完业务(比如签约、解约、支付等),用户回调接收之后处理具体业务,接收成功需要给支付宝返回success字符串,否则支付宝侧25小时以内完成8次通知(通知的间隔频率一般是4m,10m,10m,1h,2h,6h,15h)
三、银联支付
我们比较常见的是银联签约免密支付、银联闪付、银联扫码支付等
(1)银联签约免密支付
银联签约免密支付一般在商家app内填写银行卡相关信息(姓名、手机号、银行卡号、证件号码等),跳转到银联页面进行签约,商户端不需要保存银行卡的相关信息,银联侧会返回签约后的token信息,支付时使用token去支付(拼接token参数),类比支付宝代扣拿签约时的协议号去支付。
(2)银联扫码支付
银联扫码支付与支付宝扫码支付类似,先要加载银联扫码支付配置文件acp_sdk.properties
(3)银联闪付
a.客户选择云闪付支付,提交订单给商户后端,后端向银联后端请求tn(流水号);
b.商户后端请求到tn,返回给用户的客户端;
c.客户端将tn,schema,viewController和mode传入到银联SDK中,唤起云闪付app;
d.云闪付返回用户客户端,将支付结果传给客户端,同时商户后端也能收到银联后端的支付结果;
e.云闪付的支付结果最好以商户后端结果为准。