支付平台那些事

这里写图片描述

支付无小事,开发支付平台前,首先要制定规则:
(1)支付接口交易金额单位为[分],不能带小数;对账的时候,单位为[元]

(2)时间戳,标准北京时间,时区为东八区
自1970年1月1日 0点0分0秒以来的[秒数]。
注意:部分系统取到的值为毫秒级,需要转换成秒(10位数字)。

(3)商户订单号,自定义生成,必须保证唯一性。
重新发起一笔支付要使用原订单号,避免重复支付;
已支付过或已关单的订单号不能重新发起支付

(4)支付平台需要给接入方分配appid商户编号和secret商户密钥,以及签名密钥key

=>支付请求,必须包含这些参数(商户编号,订单号,金额,时间戳,随机支付串,通知地址,签名)
=>首先要对支付请求进行验签,比对请求的sign与自己计算的sign是否匹配。

比如:微信签名算法
第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
签名规则:
◆ 参数名ASCII码从小到大排序(字典序);
◆ 如果参数的值为空不参与签名;
◆ 参数名区分大小写;
◆ 验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
◆ 微信接口可能增加字段,验证签名时必须支持增加的扩展字段

第二步,在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行SHA256运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。

=>签名验证通过,可以签证用户合法性(会员存在,余额充足),订单合法性(未支付)
然后发起[异步扣款线程任务],及时返回同步支付结果。

=>在异步扣款线程任务中,执行扣款逻辑,增加支付明细,发送消费短信通知用户。
最后还需要调用callbackUrl异步通知支付结果

=>接入方主动查询支付结果

这里写图片描述

对于支付平台,需要注意的地方:
(1)统一接入入口
不同的接入方,提供统一的接入入口,集成方便,维护成本小

(2)支付安全
验证签名,支付码消费控制,防止重复扣款等等

(3)提供状态码
让接入方根据错误类型,做对应的业务处理

猜你喜欢

转载自blog.csdn.net/u013628152/article/details/78979660