如何为 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

中获取网络结帐详细信息数据