支付成功后,由商户服务端通过 API 申请退款。无论原支付通过收银台、Web SDK 还是 API 直连创建,均使用申请或取消退款。
申请前确认
是否支持退款、部分退款及多次退款,以及申请退款的时限,均取决于支付方式。大多数支付方式支持部分退款及多次退款;累计退款金额不得超过原支付金额,退款金额使用原支付交易的币种。
保存原支付的 Onerway transactionId,并确认原交易已支付成功。调用接口前,完成接入准备与请求签名。
申请退款并处理结果
提交退款申请
调用申请或取消退款,设置 refundType=0,将原支付交易号放入 originTransactionId,通过 refundAmount 指定本次退款金额。完整字段要求与请求示例见接口参考。
可通过 merchantTxnId 提供本次退款的商户交易号,用于跟踪和对账;不传时由 Onerway 自动生成。重复提交会被拒绝。
保存退款交易号
respCode=20000 仅表示退款申请已受理,不代表退款成功。保存响应 data 返回的新退款交易号,并将其关联到原支付和商户退款记录,供接收通知、查询或取消时使用。
处理退款通知
退款通知发送到原支付请求中的 notifyUrl。服务端需要处理两类通知:
- 退款结果通知:
txnType=REFUND,使用退款的transactionId与status更新对应退款记录。 - 退款审核拒绝通知:
notifyType=REFUND_AUDIT,仅在 Onerway 审核拒绝退款申请时发送。
按 Webhook 通知完成验签、应答与幂等处理。收到成功(S)或失败(F)通知后即可更新退款记录,无需再查询确认。
按需查询退款
等待 Webhook 通知退款结果即可,无需持续轮询。需要核对退款进度或对账时,可调用查询退款记录:查询单笔退款时使用退款交易号 transactionId;查询原支付关联的退款时使用原支付交易号 originTransactionId。
查询结果与通知不一致时,参见查询结果与通知不一致时如何处理。
大部分退款即时到账;非即时到账的退款最长需要 25 天。
取消退款申请
取消须在 Onerway 审核通过前发起。审核通过后,Onerway 将退款请求提交给支付渠道或发卡机构;退款仍在处理中不代表仍可取消。
调用申请或取消退款,设置 refundType=1,并将要取消的退款交易号放入 originTransactionId。其他必填字段与完整示例见接口参考。
取消成功不发送通知,请处理同步响应:成功响应中的 data 等于本次请求的 originTransactionId。需要核对记录时,可按该退款交易号查询。
originTransactionId 指原支付交易号;取消退款申请时,同一字段指退款交易号。两次操作使用的交易号不同。