1

我已经按照说明如何为 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":"您试图对处于不允许该操作状态的 Checkout Session 调用操作"}

你能告诉我我的代码有什么问题吗?

4

3 回答 3

1

的结果::updateCheckoutSession()会给你一个amazonPayRedirectUrlin webCheckoutDetails。您需要将客户端重定向到此 URL。

客户在该外部页面上完成输入后,他们将被重定向回您的checkoutResultReturnUrl. 此时您将能够完成 CheckoutSession。

于 2021-10-06T10:49:41.137 回答
1

更新 Checkout Session 响应将包含一个 Constraint 对象,直到提供了所有强制参数。(强制参数:checkoutResultReturnUrl、chargeAmount、paymentIntent)

一旦没有约束,响应将返回一个唯一的amazonPayRedirectUrl。将买家重定向到该 URL 以让 Amazon Pay 运行交易。然后,在 Amazon Pay 处理完交易(包括任何必要的拒绝流)后,买家将被重定向到checkoutResultReturnUrl 。Amazon Pay 结账会话 ID 将作为查询参数包含在 checkoutResultReturnUrl 中。

于 2021-10-06T13:41:03.033 回答
0
$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 中获取网络结帐详细信息数据

于 2022-01-19T09:28:23.393 回答