处理支付
支付处理开始于 Genstore 向支付应用发起 HTTP 请求,支付应用需通过 Update payment result 异步通知 Genstore 支付结果。一旦支付状态被回调为 成功 (true) 或 失败 (false),即进入支付生命周期的终态,状态不可再变更。
整个流程依赖 Genstore 与支付应用之间的幂等异步通信。支付应用必须实现:
- 幂等性:避免重复请求导致结果不一致。
- 重试策略:在网络错误或超时情况下安全重试。
TIP
- 支付应用必须支持测试模式。商家可以在支付应用中开启或关闭测试模式。当测试模式开启时,除查询类请求外,所有请求的业务参数中都会携带
test: true字段。 - 涉及到先授权后捕获的操作,商户可以选择先进行授权。如果您的应用不支持先授权后捕获,您需要自行处理支付接口中的授权请求。在商户订单中,系统会根据您返回的支付状态为“已授权”来启用捕获按钮,您需要自行处理捕获请求,而不是简单返回“已授权”状态。
直连卡支付
下图说明了 Genstore 与信用卡支付应用之间的支付流程:
- 客户触发支付请求。
- Genstore 向支付应用发送请求,请求中指定了要收取的金额、货币以及加密的信用卡信息。
- 应用以 HTTP 代码
200(OK)响应,表示请求有效且已被接收。 - 支付应用使用请求中接收到的支付信息来处理支付。
- 支付应用通过调用 Genstore 的
Update payment resultAPI,将支付结果同步给Genstore,并根据需要实施重试策略。 - Genstore 通过 HTTP 代码
200(OK)响应,表示请求有效且已被接收。 - 客户继续完成结账。
启用 3D-Secure 的直连卡支付
在需要 3-D Secure 验证的场景下,直连卡支付会增加额外的认证步骤。在该流程中,支付应用需返回 3-D Secure 重定向 URL,Genstore 将客户引导至认证页面,待验证完成后,应用再通过 Update payment result API 通知 Genstore 最终支付结果。
下图说明了在启用 3D Secrue 的场景下,Genstore 与信用卡支付应用扩展的支付流程:
流程步骤
- 客户在 Genstore 完成结账,触发支付请求。
- Genstore 向支付应用发送请求(包含金额、货币、加密的信用卡信息)。
- 支付应用确定是否需要 3-D Secure 重定向。如需认证,应用需返回客户应重定向的 URL。
- Genstore 将客户重定向至该认证页面,客户完成 3-D Secure 身份验证。客户在 3-D Secure 认证过程中可能会被挑战。
- 如果3-D Secure 身份验证失败,应用程序调用
Update payment result将支付最终确定为或已拒绝; - 如果3-D Secure 身份验证成功,则继续进行支付,应用完成支付,使用
Update payment result向 Genstore 同步支付结果。
- 如果3-D Secure 身份验证失败,应用程序调用
- Genstore 通过 HTTP 代码
200(OK)响应,确认支付状态已更新。 - 客户继续完成结账流程。
站外支付
对于需要将客户跳转到外部页面完成支付的场景,采用 站外支付模型。
流程步骤
- 客户在 Genstore 完成结账,触发支付请求。
- Genstore 向支付应用发送请求,包含金额与货币信息。
- 支付应用以 HTTP
200(OK) 响应,并返回由应用托管的支付页面重定向 URL。 - Genstore 将客户重定向至该 URL。
- 客户在当前页面进行支付,支付应用收集客户支付凭证,并执行支付处理。
- 支付应用调用
Update payment resultAPI:- 若支付已完成 → 更新为成功或失败,并根据需要实施重试策略。
- 若支付需等待第三方(客户 / 支付合作伙伴 / 支付网络) → 可先设置为 处理中。
- Genstore 返回 HTTP 状态码
200(OK) 并携带重定向 URL。 - 支付应用将客户重定向回 Genstore。
- 客户继续完成结账流程。