背景
(本文所站的角度是第三方支付机构)
之前做过的支付类的快捷交易,各个银行开出的接口都不尽相同(包括签约和支付),有的需要1支完成(我们称之为签约确认/支付确认),有的需要2支完成(签约申请+签约确认/支付申请+支付确认),有的则需要3支完成(签约申请+签约短信+签约确认/支付申请+支付短信+支付确认)。
设计
以下所说的几支均是针对和银行侧的交互。
在签约和支付过程中,肯定少不了短信验证,那么在银行侧开的接口不同的时候怎么做到短信验证的呢?通过一个字段smsSendState
来控制前端系统的发送短信是通过支付机构发送还是银行发送。
该字段取值如下:
取值 | 含义 | 说明 |
---|---|---|
1 | 已发送 | 标识银行已经发送,支付机构侧不再需要发送 |
2 | 要发送 | 标识银行需要发送短信,并由支付机构通过短信交易(上文提到的签约短信/支付短信)驱动发送 |
3 | 不要发送 | 标识银行不要发送短信,由支付机构自行决定是否发送(一般都是支付机构发送短信并验证) |
一支完成
这种情况是将签约信息/支付信息一次性送至银行完成协议签约/扣款的动作,这种情况可能有些不安全,就需要支付机构来确保交易的安全性。
流程图
可以看到以下流程图只和银行有一次交互。