Java对接微信、支付宝、银联第三方支付

编程侠 2021-04-16 15:45:38

一、微信支付

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.云闪付的支付结果最好以商户后端结果为准。

0 阅读:87

编程侠

简介:一个爱好厨艺的程序员