如何为 PHP Amazon Pay SDK 完成 CheckoutSession?
How to CompleteCheckoutSession for PHP Amazon Pay SDK?
我已经按照说明如何为 PHP
集成 Amazon V2
https://github.com/amzn/amazon-pay-api-sdk-php
但是我找不到任何部分如何实现完整的结帐会话功能以获得“chargeID”。
这是我实现的
$payload = array(
'webCheckoutDetails' => array(
"checkoutResultReturnUrl" => HTTPS_SERVER . "index.php?route=payment/amazon/returnURL"
),
'paymentDetails' => array(
'paymentIntent' => 'Authorize',
'canHandlePendingAuthorization' => false,
'chargeAmount' => array(
'amount' => (int)$total_amount,
'currencyCode' => 'JPY'
),
),
'merchantMetadata' => array(
'merchantReferenceId' => $order_id,
'merchantStoreName' => 'MWYW Online Store',
'noteToBuyer' => 'Thank you for your order!'
)
);
try {
$client = new Amazon\Pay\API\Client($amazonpay_config);
$result = $client->updateCheckoutSession($checkoutSessionId, $payload);
$payload = array(
'chargeAmount' => array(
'amount' => (int)$total_amount,
'currencyCode' => 'JPY'
),
);
$result = $client->completeCheckoutSession($checkoutSessionId, $payload);
但是我收到这样的错误信息
{"reasonCode":"InvalidCheckoutSessionStatus","message":"您试图在不允许执行该操作的状态下对结帐会话调用操作"}
你能告诉我我的代码有什么问题吗?
::updateCheckoutSession()
的结果将在 webCheckoutDetails
中得到 amazonPayRedirectUrl
。您需要将客户端重定向到此 URL.
客户在该外部页面上完成输入后,他们将被重定向回您的 checkoutResultReturnUrl
。此时您将能够完成 CheckoutSession。
更新结帐会话响应将包含约束对象,直到提供了所有必需参数。 (必填参数:checkoutResultReturnUrl、chargeAmount、paymentIntent)
一旦没有约束,响应将 return 一个唯一的 amazonPayRedirectUrl。将买家重定向到 URL 以让亚马逊支付 运行 交易。然后,在 Amazon Pay 处理交易(包括必要的任何拒绝流程)后,买家将被重定向到 checkoutResultReturnUrl。 Amazon Pay 结账会话 ID 将作为查询参数包含在 checkoutResultReturnUrl 中。
$headers = array('x-amz-pay-Idempotency-Key' => uniqid()); // added externally
$client = new Amazon\Pay\API\Client($amazonpay_config);
$result = $client->updateCheckoutSession($checkoutSessionId, $payload , $headers);
这对我有用,可以在 $response
中获取网络结帐详细信息数据
我已经按照说明如何为 PHP
集成 Amazon V2https://github.com/amzn/amazon-pay-api-sdk-php
但是我找不到任何部分如何实现完整的结帐会话功能以获得“chargeID”。
这是我实现的
$payload = array(
'webCheckoutDetails' => array(
"checkoutResultReturnUrl" => HTTPS_SERVER . "index.php?route=payment/amazon/returnURL"
),
'paymentDetails' => array(
'paymentIntent' => 'Authorize',
'canHandlePendingAuthorization' => false,
'chargeAmount' => array(
'amount' => (int)$total_amount,
'currencyCode' => 'JPY'
),
),
'merchantMetadata' => array(
'merchantReferenceId' => $order_id,
'merchantStoreName' => 'MWYW Online Store',
'noteToBuyer' => 'Thank you for your order!'
)
);
try {
$client = new Amazon\Pay\API\Client($amazonpay_config);
$result = $client->updateCheckoutSession($checkoutSessionId, $payload);
$payload = array(
'chargeAmount' => array(
'amount' => (int)$total_amount,
'currencyCode' => 'JPY'
),
);
$result = $client->completeCheckoutSession($checkoutSessionId, $payload);
但是我收到这样的错误信息
{"reasonCode":"InvalidCheckoutSessionStatus","message":"您试图在不允许执行该操作的状态下对结帐会话调用操作"}
你能告诉我我的代码有什么问题吗?
::updateCheckoutSession()
的结果将在 webCheckoutDetails
中得到 amazonPayRedirectUrl
。您需要将客户端重定向到此 URL.
客户在该外部页面上完成输入后,他们将被重定向回您的 checkoutResultReturnUrl
。此时您将能够完成 CheckoutSession。
更新结帐会话响应将包含约束对象,直到提供了所有必需参数。 (必填参数:checkoutResultReturnUrl、chargeAmount、paymentIntent)
一旦没有约束,响应将 return 一个唯一的 amazonPayRedirectUrl。将买家重定向到 URL 以让亚马逊支付 运行 交易。然后,在 Amazon Pay 处理交易(包括必要的任何拒绝流程)后,买家将被重定向到 checkoutResultReturnUrl。 Amazon Pay 结账会话 ID 将作为查询参数包含在 checkoutResultReturnUrl 中。
$headers = array('x-amz-pay-Idempotency-Key' => uniqid()); // added externally
$client = new Amazon\Pay\API\Client($amazonpay_config);
$result = $client->updateCheckoutSession($checkoutSessionId, $payload , $headers);
这对我有用,可以在 $response
中获取网络结帐详细信息数据