我已经按照说明将Amazon V2集成到PHP中
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”:“您试图调用处于不允许该操作的状态的签出会话上的操作”}
你能告诉我我的代码有什么问题吗?
$headers = array('x-amz-pay-Idempotency-Key' => uniqid()); // added externally
$client = new Amazon\Pay\API\Client($amazonpay_config);
$result = $client->updateCheckoutSession($checkoutSessionId, $payload , $headers);
这对我来说是有效的,因为我在$响应中获取了网络结帐详细信息数据
updateCheckoutSession()的结果将在webCheckoutDetails中为您提供一个amazonPayRedirectUrl。您需要将客户端重定向到此URL。
客户端在该外部页面上完成输入后,将重定向回您的checkoutResultReturnUrl。此时,您将能够完成CheckoutSession。
更新Checkout会话响应将包含一个Constraint对象,直到提供所有强制参数。(强制参数:check outResultReportnUrl、chargeAmount、paymentIntent)
一旦没有约束,响应将返回一个唯一的amazonPayReDirectUrl。将买家重定向到该URL以让Amazon Pay运行交易。然后,在Amazon Pay处理完交易(必要时包括任何拒绝流)后,买家将被重定向到check outResultRESTNUrl。Amazon Pay结帐会话ID将作为查询参数包含在check outResultRESTNUrl上。
问题内容: 在我的应用程序中,我尝试为用户打印出凭证页面,如下所示: “ ”是我的页面中的,用于存储有关凭证的信息。 它有效,并且打印页面弹出。但是,我希望用户一旦在浏览器的弹出式打印对话框中单击“ ”或“ ”,便可以升级该应用程序。 例如,我想在弹出窗口关闭后将用户重定向到另一个页面: 如何确定何时关闭弹出的打印窗口或打印完成? 问题答案: 在FireFox和Internet Explorer中
问题内容: 这可能是一个愚蠢的问题,但是由于找不到答案,我不得不提出这个问题。 在交互式python中,我想处理一条消息: 一切正常,但是…如何阻止它获取输入并将其保存到message变量中?使用ctrl + c停止将停止整个过程,因此没有输入要保存在任何地方。我想我找不到一个简单的答案… 问题答案: 对于基于Unix的系统: 您好,您可以录音: 通过发送EOF关闭标准输入(stdin)。 范例:
问题内容: 我的问题: 如何在a上执行一堆线程对象并等待它们全部完成后再继续? 我是ThreadPoolExecutor的新手。因此,此代码是测试以了解其工作方式。现在我什至都不用对象填充,因为我不理解如何在不调用另一个队列的情况下开始队列。无论如何,现在我只是打电话给我,但我认为我仍然缺少一些东西。任何提示都很棒!谢谢。 RunnableObject类: 问题答案: 你应该循环
我正在制作一个有游戏的网站。对于游戏,我需要发送数据。加载页面时一切正常,但我无法让握手生效。 socketReq变量存在是因为我不希望任何人直接从浏览器连接到localhost:25580。我的发送和接收功能在不同的线程中,它们将在握手后启动。 JS中新WebSocket(ws://localhost:25580)的结果是 到“ws://localhost:25580/”的WebSocket连接
我想要一个完整的未来,只发出完成的信号(例如,我没有返回值)。 我可以将CompletableFuture实例化为: 但是我应该向完整的方法提供什么呢?例如,我不能做
现在,我有三个函数:updateFieldFromCollection1()、