Adyen Web Drop-in支付成功后如何验证交易状态?
验证Adyen Web Drop-in支付状态的正确方式
你在使用Adyen Web Drop-in完成支付后拿到sessionData和sessionResult,想跳转页面验证支付状态的思路是对的,但不能直接用sessionResult作为参考号单独验证,必须通过调用Adyen的/payments/details接口来确认最终支付状态,你的文档理解是正确的。
核心逻辑说明
Adyen的Web Drop-in支付完成后,无论是否涉及跳转(比如3DS验证、银行跳转),都需要通过后端调用/payments/details接口,传入前端返回的会话数据(sessionData或sessionResult)来完成支付状态的最终校验,这是Adyen支付流程的必要步骤。
分场景的代码实现
根据支付完成后返回的参数类型,调整接口调用的参数:
- 跳转类支付(返回sessionData):
$adyenService = new AdyenCheckout($adyenClient); $result = $adyenService->paymentsDetails([ 'details' => ['redirectResult' => $sessionData] ]); - 非跳转类支付(返回sessionResult):
$adyenService = new AdyenCheckout($adyenClient); $result = $adyenService->paymentsDetails([ 'details' => ['payload' => $sessionResult] ]);
如何判断支付状态
调用接口后,通过返回结果中的resultCode字段判断支付状态:
Authorised:支付成功完成;Refused:支付被拒绝;Pending:支付处于待确认状态,这类异步支付(比如银行转账)需要后续通过Adyen的webhook推送获取最终结果;- 其他状态可参考Adyen官方文档的状态定义。
重要注意事项
- 必须通过后端调用接口验证,不能仅依赖前端返回的状态,避免前端数据被篡改导致校验失效;
- 对于异步支付场景,即使
/payments/details返回Pending,也要监听Adyen的webhook事件,确保获取最终的支付结果。
内容的提问来源于stack exchange,提问作者wjae
相关产品推荐
相关产品推荐

