javascript - 如何授权 amazon pay 请求到 "get checkout session"?

标签 javascript vue.js amazon-pay

我一直在尝试将亚马逊支付作为我网站上客户的一种支付方式,但遇到了文档中详述的一些问题。我希望更好地理解与调用 amazon pay api 相关联的请求 header 。

我正在向“https://pay-api.amazon.com/v2/checkoutSessions/checkoutSessionId”发出请求并收到 CORS 策略错误。

Access to fetch at 'https://pay-api.amazon.com/v2/checkoutSessions/d9b4418d-0c6f-4085-8c37-08bef6da6807' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

这是我尝试发出请求的获取请求

fetch(`https://pay-api.amazon.com/v2/checkoutSessions/${this.$route.query.amazonCheckoutSessionId}`, {
    method: 'GET',
    headers: {
      'Content-Type': 'application/json',
      'authorization': 'Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE',
      'x-amz-pay-date': `${new Date()}`
    }
  })

this.$route.query.amazonCheckoutSessionId 在用户使用亚马逊支付按钮创建结账 session 后引用返回的 url 扩展。

文档概述了应按如下方式提出请求

curl "https://pay-api.amazon.com/:version/checkoutSessions/:checkoutSessionId"
-X GET
-H "authorization:Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE"
-H "x-amz-pay-date:20201012T235046Z"

谁能解释一下我应该从哪里获得授权字符串及其格式?另外,有没有办法轻松地将日期字符串格式化为文档中显示的格式?还是日期字符串格式无关紧要?

我通过与 Amazon pay 相关的堆栈溢出帖子(其中很少)进行了相当广泛的搜索,并搜索了其他 Amazon 和 AWS 文档以详细说明如何格式化 auth 字符串。不幸的是,我似乎找不到答案。我也尝试过将我的按钮签名​​作为我的授权字符串传递,但这似乎没有帮助。

感谢您提供的任何帮助。

最佳答案

您的问题分为两部分:

  1. API 并非设计用于监听示例中的浏览器 JS (AJAX) 请求。 CORS 限制已到位以防止这种情况。相反,这部分过程将在服务器端完成
  2. 要使用 API,我强烈建议使用其中一种 SDK ( https://pay.amazon.co.uk/help/201212390?ld=APUKLPADirect)。您会在文档 ( https://developer.amazon.com/docs/amazon-pay-checkout/add-the-amazon-pay-button.html) 中注意到,它们始终具有所有四个提供的 SDK 的代码示例。因此,按照这些说明进行操作要容易得多。 enter image description here

关于javascript - 如何授权 amazon pay 请求到 "get checkout session"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69747325/

相关文章:

Javascript 函数可以记录并显示弹出警报吗?

php - 亚马逊结帐付款按钮集成

php - 如何测试拒绝 Amazon Payments 授权?

javascript - JQuery 删除样式表和 JS

javascript - 用一种以上的颜色按程序填充一个形状

javascript - 填空和多项选择测验

javascript - Vue.js 将事件处理程序委托(delegate)给父组件?

javascript - 来自文档的简单 Vue Axios 示例,但使用组件

javascript - VueJS 元素类不呈现

node.js - 如何根据 Amazon Pay 的计费协议(protocol)自动捕获?