收单接入流程
收单是指商户在不同时间段内可以重复使用子合约地址,用于接收订单支付款项,无需与特定用户关联。收单子合约地址可以多次使用,接收来自不同订单的支付款项,为商户提供了灵活的支付解决方案。
1. 支付流程
收单过程的接口调用时序图如下:
调用流程如下:
- 商家系统调用
/payment/createPaymentOrder
(创建收单订单接口)向 Pay Protocol 发起支付请求,Pay Protocol 对商家请求参数进行校验,而后返回给商户唤起支付页面的请求地址,商户通过域名与请求地址的拼接后重定向到支付页面,用户进行支付。 - 用户确认支付后,可点击页面的按钮,返回支付成功后跳转地址
redirectionUrl
(商户入参传入)。 - 交易成功后,Pay Protocol 通过 POST 请求
notifyUrl
(收单时商户入参传入),返回回调通知参数。 - 若由于网络等原因,导致商家系统没有收到回调通知,商家可自行调用
/payment/detail
(查询收单订单详情接口)查询交易以及支付信息,(商家也可以直接调用该查询接口,不需要依赖回调通知),或自行调用/payment/notify
(主动发起收单回调通知)。
注意
- 由于同步返回的不可靠性,收单结果必须以回调通知或查询接口返回为 准,不能依赖同步跳转。
- 商家系统接收到回调通知以后,必须通过验签(验证通知请求头中的
X-PAY-SIGN
参数)来确保支付通知是由 Pay Protocol 发送的。详细验签规则可查看回调通知验签。 - 接收到回调通知并验签通过后,请务必核对通知中的参数值是否与请求中的一致,并根据参数
paymentStatus
进行后续业务处理。
2. 退款流程
在交易完成后的一段时间内,若出现买家或卖家需要退款的情况,由于 Web3 技术的限制,无法直接将资金原路返回。因此,商户需要通过后台操作进行一次转账交易,以确保资金能够安全地返回到最初付款地址。退款转账中产生的网络费消耗,商户自行与用户协商。
退款过程的接口调用时序图如下:
调用流程如下:
- 商家系统调用
/refund/createRefundOrder
(发起退款申请接口)向 Pay Protocol 发起退款请求,Pay Protocol 对商家请求参数以及收单订单进行校验,生成收单对应的退款订单。 - 退款订单生成后,商户需在管理后台进行审批,通过转账的方式给用户退款。
- 退款交易完成后,Pay Protocol 通过 POST 请求
notifyUrl
(退款时商户入参传入),返回回调通知参数。 - 若由于网络等原因,导致商家系统没有收到回调通知,商家可自行调用
/refund/detail
(查询退款订单详情接口)查询交易以及退款信息,(商家 也可以直接调用该查询接口,不需要依赖回调通知),或自行调用/refund/notify
(主动发起退款回调通知)。
注意
- 由于同步返回的不可靠性,退款结果必须以回调通知或查询接口返回为准。
- 商家系统接收到回调通知以后,必须通过验签(验证通知请求头中的
X-PAY-SIGN
参数)来确保退款通知是由 Pay Protocol 发送的。详细验签规则可查看回调通知验签。 - 接收到回调通知并验签通过后,请务必核对通知中的参数值是否与请求中的一致,并根据参数
refundStatus
进行后续业务处理。
退款说明
退款方式:由于 Web3 的不可逆机制,商户以转账的方式将资金返还给用户。
退款费用:由于退款方式,导致商户需承担交易的网络费消耗,网络费消耗无固定标准,可自行与用户沟通收取手续费。