为了使这些步骤对未来的人们更加明确:
处理重定向
您将用户重定向到响应中返回的 adyen 端点/payments
。购物者完成付款后,他们将被重定向回returnUrl
原始/payments
请求中指定的位置。
它们将被发送到带有 a payload
、 aresultCode
和 a 的URL type
。
payload
是支付结果对象的加密 blob。您将发送另一个调用来解密此 blob,并查看该重定向时的付款结果。
resultCode
是当时支付的结果。尽管此重定向没有任何验证,因此您不应使用此值执行任何业务逻辑,而应使用有效负载或结果通知。
type
是不推荐使用的字段。不再使用可以忽略。
示例返回 url,payload 为示例目的缩写:
https://example-site.com/handleRedirect?payload=AAd24...f511%3D%3D&type=complete&resultCode=authorised
验证重定向
提交payload
到以解密有效载荷 blob 并找到截至重定向时/payments/details
的支付结果。该调用不会查询付款状态,但会告诉您负载中包含的响应。/payments/details
此步骤是必需的,因为重定向发生在客户端空间中,并且您始终需要考虑恶意第三方。用户可以操纵resultCode
查询参数中的 ,但无法篡改有效负载对象而不会导致错误。
包括paymentData
在初始/payments
调用中返回的内容。
curl https://checkout-test.adyen.com/v49/payments/details \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
"paymentData": "Ab00!B...QABAgAuj", //abbreviated for example purposes.
"details":{
"payload":"AAd24...f511=="
}
}'
响应将为您提供重定向时的付款结果:
{
"resultCode":"AUTHORISED",
"pspReference":"888239265347586D",
... //Other payment result data
}
有时 IDEAL 不会立即导致AUTHORIZED而是PENDING状态。这意味着付款结果尚不清楚,但您需要等待通知才能知道付款的最终结果。