关于支付系统开发对接的总结

·  阅读 118

本文是对前一段时间,开发支付系统的总结,主要以概念为主,不涉及具体代码。

以下内容,仅包含微信和支付宝。

一、授权

作为支付服务商(ISV),必须获取到商户授权,才可以代商户进行账户交易操作。

支付宝的授权相对简单,引导商户使用已有的账户进行授权即可。我们后续通过token来进行接口调用。

支付宝接口文档:opendocs.alipay.com/apis/api_9/…

在应用授权的场景下,商户把名下应用授权给ISV后,支付宝会给ISV颁发应用授权码app_auth_code,ISV可通过获取到的app_auth_code换取app_auth_token。

支付宝授权流程: [opendocs.alipay.com/open/201607…]

image-20200818161105711

而微信的就比较麻烦了,需要重新申请一个商户账号挂的服务商名下,才可以。而且进件资料十分之复杂,和支付宝比起来,那叫一个恶心。

后续是使用进件申请通过后,返回的子商户id,进行接口调用。

还有就是微信现在是V3版接口和V2版接口混用的,V3新版接口功能现在只有授权和支付,至于退款这类的功能还需要用V2版接口来做。

微信授权流程: [pay.weixin.qq.com/wiki/doc/ap…]

image-20200818161359656

下面是我在开发过程中,绘制的平台商户入驻业务流程图:

image-20200818165950141

二、支付业务

支付业务我们大致分为 支付、支付回调、支付查询、退款、退款查询、对账等。

我们主要来说支付相关的内容。

支付这块微信和支付是大同小异的。主要分为:主扫、被扫、app支付、h5(wap)支付、jsapi支付、刷脸(暂不考虑)

主扫/被扫,我在网上查了一下,给的定义不太一样。我这里,主扫指商户扫客户,被扫指客户扫商户。

h5(wap)/jsapi支付,区分出来的原因在于,微信浏览器不支持h5(wap)支付。所以这两者的区别在于,h5(wap)指在微信/支付宝以外的浏览器进行支付,jsapi指在微信/支付宝浏览器中进行支付。

另外,jsapi支付还需要用户的特殊标识,例如微信openId、支付宝userId。

这两个特殊标识,需用从另外用户授权接口获取,都是OAuth2 方式获取。

支付宝提供的支付能力:

image-20200818164120160

微信提供的支付能力:

image-20200818164314919

需要注意的是,在开发过程中,要保证交易的最终性。即一笔交易的最终状态,只有关闭或者支付完成两种,不要一直存在支付中的支付状态。

为了保证最终性,支付宝建议我们在发起支付后,进行轮询探测支付状态,在一定时间内未支付完成立即关闭该支付单。

我这里对支付系统设计,可以看《基于策略和工厂模式的支付渠道选择》。

为了保证资金的正确性,应该进行每日的对账操作。即校对我们系统中发生的交易,与三方支付系统中的交易,是否符合。早发现问题,早处理,不要造成单边账的积压。对账应从两边分别进行核验。

三、微信的各种平台说明

鉴于微信的体系过于杂乱,还是应该单独把微信拿出来说说。

  1. 微信公众平台

    平台入口:mp.weixin.qq.com

    微信公众平台是微信公众账号申请入口和管理后台。商户可以在公众平台提交基本资料、业务资料、财务资料申请开通微信支付功能。 注册、配置服务号、订阅号、小程序的入口,注册成功后系统就会下发一个与之一一对应的APPID(其中订阅号的APPID不支持申请和使用微信支付)。

    注意点:

    • 微信公众号,是微信支付功能的根基,因为申请支付服务商之前,就需要申请一个微信服务商公众号来表明服务商身份。
    • 在获取用户openId之前,也需要在微信公众平台来配置域名白名单,不然获取不到。
  2. 微信开放平台

    微信开放平台是商户APP接入微信支付开放接口的申请入口,通过此平台可申请微信APP支付。 注册、配置APP移动应用、网站应用的入口,注册成功后系统就会下发一个与之一一对应的APPID。 平台入口:open.weixin.qq.com

  3. 微信商户平台

    微信商户平台是微信支付相关的商户功能集合,包括参数配置、支付数据查询与统计、在线退款、代金券或立减优惠运营等功能。 微信支付业务管理中心,商户可以在商户平台进行所有支付业务相关操作,例如退款、下载对账单、查询订单、提现、账号绑定、API证书下载、API密钥设置、查看证书序列号等操作。 平台入口:pay.weixin.qq.com

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改