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