支付回调与检查实施指南
1. 上下文
由于网络不规则或系统不稳定,可能会出现用户支付成功,但商家没有收到相应的支付通知的情况。这可能会错误地表明订单仍未支付。未能及时更新此状态可能会导致用户投诉,甚至为一个订单多次付款。
2. 目标
确保商家能够及时、准确地验证订单的支付状态——即使错过了支付结果通知——增强了商家系统的弹性,减少了订单状态差异引起的用户不满。
3. 前端支付处理
3.1 集成POS支付
3.1.1 应用程序呼叫、USB连接和局域网支付
3.1.1.1 如果前端显示“已被用户取消”,则订单仍然未付款。应通知用户付款尚未完成。
3.1.1.2 如果前端显示“成功”、“错误”、超时或任何其他不可预见的问题,商家应使用订单验证界面来确认订单状态。
- 如果验证显示支付成功,则向用户显示支付成功页面。
- 如果订单仍未付款,建议用户稍后重新访问订单管理页面进行验证,并提醒用户不要重复付款。有关进一步的逻辑实现,请参阅 后端服务处理.
3.2 云端API支付
付款请求成功后,前端应定期检查商家的订单验证界面。例如,每2秒检查一次,总共检查60秒(商家可以根据自己的需求调整此时间)。
- 如果订单被验证为已付款,则显示“付款成功”页面。
- 如果在没有成功付款验证的情况下超过了设定的时间,则通知用户交易超时。
3.3 扫码支付(客户呈现模式)
一旦前端成功启动支付请求,如果肯定响应表明交易成功,则用户将被引导到“支付成功”页面。如果没有,前端会不断轮询商家的验证接口,以确认订单的状态。
- 通常,此轮询每2秒发生一次,持续时间为60秒。然而,商家可以根据其独特的业务需求调整这些参数。
- 如果商家的验证界面在该时间段内确认付款,用户将看到“付款成功”页面。如果在指定的时间段内没有收到确认,则停止轮询,并通知用户事务超时。
3.4 扫码支付(商户呈现模式)
在显示支付二维码后,前端会定期与商家的订单验证界面进行检查,以确定订单的状态。 作为标准,此检查每2秒进行一次,总共持续60秒。商户可以自定义这些设置以满足其运营需求。
- 如果验证过程确认在此期间内成功付款,则会向用户显示“付款成功”页面。
- 如果没有,检查过程将停止,并提醒用户事务已超时。
3.5 手机网页支付和Web网页支付
3.5.1 当用户被重定向到初始支付页面或预定义的redirect_url时,应显著显示“支付完成”按钮以供用户交互。
3.5.2 按下“付款完成”按钮后,商家需要查看订单验证界面,以验证订单的状态。
- 如果此界面验证交易成功,则会将用户带到“付款成功”页面。
- 如果商家的订单检查界面返回未付款订单,则需要提醒用户“稍后进入订单管理页面验证订单状态,不要重复启动付款”。商户后端需要及时获取和更新订单状态,实现参考逻辑【【后台服务处理】(#4后台服务处理)】。当用户重新进入订单管理页面并对未付款订单再次发起支付时,商家应使用原始订单号发起支付,而不是替换支付订单号,以避免用户重复支付。
4.后端服务处理
4.1 付款回调处理
商户的后端系统应准确、快速地处理来自CodePay的异步支付结果通知。然后,他们应根据接口指南将结果转发回CodePay。有关详细说明,请参阅:
1、API规范.
2、回调处理指南.
4.2 订单验证的定期轮询
如果收到付款通知的延迟时间延长,商家的后端必须定期启动 CodePay查询订单API 以验证订单状态。
选项1:
使用订单下达时间(或成功付款通知或错误报告后的第一个不成功呼叫时间)作为参考,触发 CodePay查询订单API 时间间隔为5秒、30秒、1分钟、3分钟、5分钟、10分钟和30分钟。如果最终查询未确认成功付款,请停止后续查询并调用 CodePay订单取消API 关闭订单。 商家可以根据自己的操作调整轮询频率和计数)
选项2:
每30秒启动一次定时任务,以确定最后10分钟内仍未付款的订单。使用 CodePay查询订单API 验证其状态。跟踪订单的检查频率;如果在10次检查后状态仍然未支付,请停止进一步的查询,并使用 CodePay订单取消API 取消订单。(轮询间隔和计数可根据商家偏好进行调整)
4.3 D+N日对账处理
4.3.1 D+N天下午2:00后,商家可以请求 CodePay账单下载API 或从CodePay商家平台手动下载D日交易报告。接下来,将对账单的订单详细信息与商家的系统记录逐行进行比较。
D+N对账单的可用性可能因上游支付渠道的限制而有所不同。通常,对账时间不超过两天。具体时间请联系我们。
4.3.2 订单验证场景:
(1) 订单对齐,所有状态均表示付款成功:这表示对账成功。
(2) 订单一致,但商家的状态不是付款成功:商家可以将状态更新为付款成功,并根据其操作判断发送订单或退款给用户。
(3) 订单不匹配,商家的系统缺乏声明的特定订单记录:这种异常情况需要商家进行系统检查,以找出数据差异。
(4) 订单不匹配,即在声明中没有发现商家系统中的成功订单:这种不一致表明商家的订单处理逻辑存在潜在缺陷,需要进行调查。