
Adyen Drop-in 支付成功后不会自动跳转页面,而是通过 onPaymentCompleted 回调通知结果;真正的重定向仅在 3D Secure 2 认证等异步验证场景下,由服务端配置的 returnUrl 驱动。
adyen drop-in 支付成功后不会自动跳转页面,而是通过 `onpaymentcompleted` 回调通知结果;真正的重定向仅在 3d secure 2 认证等异步验证场景下,由服务端配置的 `returnurl` 驱动。
在 Adyen Web Drop-in 集成中,一个常见误解是:支付状态为 "Authorised" 就意味着前端应立即跳转至订单完成页。实际上,Drop-in 组件本身不执行页面重定向——它只负责收集支付信息、调用 Adyen API 并将最终支付结果(如 resultCode: "Authorised")通过回调函数返回给前端。
关键点在于区分两类流程:
-
✅ 同步支付流程(如大部分卡支付):
支付在 Drop-in 内部完成,无需离开当前页面。此时 onPaymentCompleted 会被触发,result 对象包含 resultCode、pspReference 等字段。你应在该回调中主动处理后续逻辑,例如:onPaymentCompleted: (result, component) => { console.info('Payment completed:', result); if (result.resultCode === 'Authorised') { // ✅ 安全地跳转至成功页(需结合后端校验) window.location.href = '/order/success?pspReference=' + result.pspReference; } else { alert('Payment failed: ' + result.resultCode); } } -
⚠️ 异步挑战流程(如 3D Secure 2):
当发卡行要求额外身份验证时,Adyen 会发起重定向(通常跳转至银行页面)。此时,唯一生效的重定向地址是服务端创建支付会话(/sessions)时传入的 returnUrl,而非前端 Drop-in 配置项。该 URL 必须:- 是 HTTPS 协议(生产环境强制要求);
- 在 Adyen 后台白名单中注册;
- 能接收并处理 Adyen 的重定向参数(如 redirectResult);
- 主动调用 /payments/details 接口确认最终结果。
? 重要提醒:
- 前端 onPaymentCompleted 中的跳转必须配合后端结果确认(推荐使用 paymentResult webhook 或主动轮询 /payments/{paymentPspReference}/details),避免仅依赖前端回调导致状态不一致;
- returnUrl 仅用于 3DS2 流程的中间跳转,不是支付完成后的业务跳转入口;
- 所有敏感操作(如订单状态更新、发货触发)必须由后端完成,前端仅作展示与轻量导航。
综上,你的配置本身无误——问题不在于“未重定向”,而在于对 Adyen 事件流的理解偏差。请将业务跳转逻辑明确写入 onPaymentCompleted,并将安全校验交由后端闭环处理。










