- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在沙盒中使用亚马逊的 v2 c# SDK(MVC 应用程序)将亚马逊支付与我的网站集成。设置一切正常,我创建了 key 、返回 url 等。
在我的结帐过程中,我创建了成功的 CheckoutSession。我点击亚马逊支付按钮,使用我的测试买家账户登录,然后使用他们有效的测试信用卡“支付”商品。
亚马逊按预期使用结账 session ID 重定向到我的返回 URL。
当我尝试 CompleteCheckoutSession 时,结果是从 Amazon API 返回的错误
error: InvalidCheckoutSessionStatus
message: You tried to call an operation on a Checkout Session that is in a state where that operation is not allowed
我在尝试完成之前放入了一行代码来检索 CheckoutSession 查看它,它显示当前状态为“打开”,这是尝试完成时的正确状态,所以我不知道为什么结帐 session 状态无效。
编辑:
请注意,我将此流程用于我的交易,因此没有对交易的“审查”。买家在我的网站上选择他的商品。
另请注意,我正在根据此动态创建有效载荷:
因此,当单击 amazonpay 按钮时,它会调用我网站上的一个方法,该方法构建开始 CheckoutSession 的有效负载。然后,我将 Amazon Session ID 保存在我的缓存中,并保存总数。有效载荷返回到亚马逊支付脚本,然后将我带到亚马逊网站。我选择付款类型并点击“继续结帐”,这会将我带回我的网站以执行“完成”步骤。
我对 CompleteCheckoutSession(sessionId) 的请求
{"chargeAmount":{"amount":99,"currencyCode":"USD"}}
result.RawResponse 来自 client.CompleteCheckoutSession(sessionId) 方法:
{
"reasonCode":"InvalidCheckoutSessionStatus",
"message":"You tried to call an operation on a Checkout Session that is in a state where that operation is not allowed"
}
编辑示例代码:
我创建了一个具有基本功能的全新测试 MVC 应用程序:
public ActionResult Index()
{
var client = InitiateClient(); //hidden for security
// prepare the request
var request = new CreateCheckoutSessionRequest
(
checkoutReviewReturnUrl: "http://localhost:44300/home/completecheckout",
storeId: "amzn1.application-oa2-client.mystoreid"
);
request.PaymentDetails.PaymentIntent = Amazon.Pay.API.WebStore.Types.PaymentIntent.AuthorizeWithCapture;
request.PaymentDetails.ChargeAmount.Amount = 99;
request.PaymentDetails.ChargeAmount.CurrencyCode = Currency.USD;
// generate the signature and payload string that is passed back to the frontend
ViewBag.Signature = client.GenerateButtonSignature(request);
ViewBag.Payload = request.ToJson();
return View();
在 Index.cshtml 文件中:
<div id="AmazonPayButton"></div>
<script src="https://static-na.payments-amazon.com/checkout.js"></script>
<script type="text/javascript" charset="utf-8">
amazon.Pay.renderButton('#AmazonPayButton', {
merchantId: 'mymerchantid',
ledgerCurrency: 'USD',
sandbox: true,
checkoutLanguage: 'en_US',
productType: 'PayOnly',
placement: 'Checkout',
buttonColor: 'Gold',
createCheckoutSessionConfig: {
payloadJSON: '@Html.Raw(ViewBag.Payload)', // string generated in step 2
signature: '@Html.Raw(ViewBag.Signature)', // signature generated in step 3
publicKeyId: 'AGPTYXGL5VH6PSYLJUSHTKW6'
}
});
</script>
最后是不成功的完整结帐代码:
public ActionResult CompleteCheckout(string amazonCheckoutSessionId)
{
var client = InitiateClient(); //hidden for security
var request = new CompleteCheckoutSessionRequest(99.00M, Currency.USD);
// send the request
var result = client.CompleteCheckoutSession(amazonCheckoutSessionId, request);
// check if API call was successful
if (!result.Success)
{
throw new Exception("API Call unsuccessful");
}
return View();
}
注意:某些键被混淆了,但实际的键在示例代码中。
最佳答案
手动创建 CheckoutSession 不适用于您遵循的“无评论页面”流程。如果您想集成此流程,则必须让 Amazon Pay 使用按钮代码中的 createCheckoutSessionConfig 参数为您创建 CheckoutSession,请参见此处:https://amazonpaycheckoutintegrationguide.s3.amazonaws.com/amazon-pay-apb-checkout/add-the-amazon-pay-button.html#4-render-the-button
编辑:
下面的代码示例展示了如何为“无订单审查”支付流程构建负载和签名。请注意 CheckoutMode 参数,它指示 Amazon Pay 立即处理付款,以及 checkoutResultReturnUrl,它定义了买家被发送到的 URL 以完成结账。当用户到达该 URL 时,您必须调用 Complete CheckoutSession,现在应该会成功。
public ActionResult Index()
{
var client = InitiateClient(); //hidden for security
// prepare the request
var request = new CreateCheckoutSessionRequest
(
checkoutReviewReturnUrl: null,
storeId: "amzn1.application-oa2-client.mystoreid"
);
// instructs Amazon Pay to immediately process the payment
request.WebCheckoutDetails.CheckoutMode = CheckoutMode.ProcessOrder;
request.WebCheckoutDetails.CheckoutResultReturnUrl = "http://localhost:44300/home/completecheckout";
// payment details
request.PaymentDetails.PaymentIntent = Amazon.Pay.API.WebStore.Types.PaymentIntent.AuthorizeWithCapture;
request.PaymentDetails.ChargeAmount.Amount = 99;
request.PaymentDetails.ChargeAmount.CurrencyCode = Currency.USD;
// generate the signature and payload string that is passed back to the frontend
ViewBag.Signature = client.GenerateButtonSignature(request);
ViewBag.Payload = request.ToJson();
return View();
}
关于c# - Amazon Pay SDK CompleteCheckoutSession 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65535379/
Google Pay 是否使用 Google 帐户的 session cookie 来确定用户可以使用哪种付款方式? 最佳答案 Google Pay 付款方式附在 Google 个人资料中,登录后即可
我正在计划我的新应用程序,它包含付款方式,经过对Google的研究,我发现Google Pay会更好。 但是 google pay 如何从用户那里扣除金额并将其转入我的银行号码呢?他们有什么流程或第三
有这段代码(取自 https://stackoverflow.com/a/5016624/1369016 ): private boolean isAppInstalled(String packag
我正在尝试通过以下示例在网络上实现 Google 支付:https://developers.google.com/pay/api/web/guides/paymentrequest/tutorial
我有一个电子商务网站,我想在其中添加 SAMSUNG PAY 和 ANDROID PAY当从移动设备访问网站时。 是否有适用于 PHP 的 API/SDK?例如,如 https://stripe.co
我开始关注 Google Pay API (.Net)。我不清楚 LoyalityObject 和 LoyalityClass 之间的区别。哪个用于哪个?哪张是忠诚卡?提前致谢 public sta
我在我的应用程序中设置了 Apple Pay,在阅读文档后,它说不要只使用 .png 作为“使用 Apple Pay 支付”按钮,而是使用他们的文档代码来显示按钮(那时,它完全符合规范)。我似乎无法在
我正在尝试在我的应用程序上设置 Apple Pay,但我目前没有 iPhone 6。因此,在我去购买模拟器或尝试找人借给我之前,我会尝试使用模拟器启动并运行所有功能。 无论如何,我到了实际展示 App
Google Pay Api 和 Android Pay Api 有什么区别。我所知道的是使用我们使用的 Android Pay Api 进行支付和添加成员(member)卡。现在 google 已经
我成功调用DropIn从 Braintree SDK 查看。 BTDropInRequest设置应该显示三个项目: Paypal 信用卡 苹果支付 但由于某种原因在 DropIn view 只渲染两个
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭去年。 Improve this quest
如何通过应用发送 Google Pay 或 Bhim UPI 请求。我知道这件事,但我想发送付款请求: try { Uri uri = Uri.parse("upi://pay?pa="+pa
我正在分析 S2AP API 是否能够通过真实的 NFC 卡有效替代现有的 NFC 识别过程。我们的想法是摆脱实体卡并使用虚拟卡。 这些卡获得了一些加密的有效负载,它们在 NDEF 记录中发送到 NF
我的 iTunesConnect 应用程序显示 Apple Pay 选项。我正在使用布伦特里。 即使我们没有在应用程序中使用 Apple Pay 功能。 有人可以帮我解决如何在我的 itunesCon
根据documentation谷歌钱包似乎只支持每月定期订阅。 我会每年向用户收取托管在 AppEngine 上的应用程序的使用费(纯粹是为了能够为用户提供更优惠的价格并降低管理成本)。是否有支持每年
所以我需要将 Android Pay 集成到我正在开发的应用程序中。应用程序中的此选项仅适用于美国用户,但我在英国并且在尝试测试我的实现时遇到很大困难。我正在使用沙盒 Stripe 帐户 atm 作为
我在一家金融科技公司工作,该公司在我们的卡中提供对 Apple Pay 的支持,即我们的用户可以选择使用我们的应用程序(应用程序内配置)将他们的卡添加到 Apple Pay。我们公司已经从 Apple
我正在尝试将 Google Pay 支持添加到我们已经为本地应用程序工作的网站。应用内实现不允许使用 PAN_ONLY 卡(由于高退款),仅允许使用 CRYPTOGRAM_3DS。这很好用。 当我将网
我正在尝试实现上述提到的Google Pay解密方法。 https://developers.google.com/pay/api/android/guides/resources/payment-d
实现 google pay 时,您是否需要手动计算销售税并将其提供给 api,还是 google pay api 会为您处理这个问题? 最佳答案 您需要自己计算并将其提供给API。 以下是如何构建请求
我是一名优秀的程序员,十分优秀!