【问题标题】:How to authorize amazon pay request to "get checkout session"?如何授权亚马逊支付请求“获取结帐会话”?
【发布时间】:2021-12-13 06:09:25
【问题描述】:

我一直在尝试将 Amazon pay 作为我网站上客户的付款方式集成,但遇到了文档中详细说明的一些问题。我希望能更好地理解与调用 amazon pay api 相关联的请求标头。

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

CORS 已阻止从源“http://localhost:3000”访问“https://pay-api.amazon.com/v2/checkoutSessions/d9b4418d-0c6f-4085-8c37-08bef6da6807”策略:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

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

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 引用用户使用亚马逊支付按钮创建结帐会话后返回的 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 字符串。不幸的是,我似乎找不到答案。我也尝试过将我的按钮签名​​作为我的授权字符串传递,但这似乎没有帮助。

感谢您提供的任何帮助。

【问题讨论】:

    标签: javascript vue.js amazon-pay


    【解决方案1】:

    Amazon Pay API 不支持直接客户端请求,因此您需要在服务器端发出这些请求。这就是您看到 CORS 错误的原因。

    您可以在此处找到有关对每个 API 请求进行签名所需的签名生成的详细演练:https://developer.amazon.com/docs/amazon-pay-api-v2/signing-requests.html

    您应该能够利用 Amazon Pay Node.js SDK,这将节省大量编码 - https://developer.amazon.com/docs/amazon-pay-checkout/get-set-up-for-integration.html#nodejstab

    我还建议使用开发人员暂存器来检查您的工作并获取所需代码的提示,因为它会为您发出请求并生成代码 sn-ps! https://pay-api.amazon.com/tools/scratchpad/index.html

    【讨论】:

      【解决方案2】:

      您的问题有两个部分:

      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 的代码示例。所以按照这些说明操作要容易得多。

      【讨论】:

        猜你喜欢
        • 2020-05-28
        • 2015-06-29
        • 2020-03-23
        • 2021-06-02
        • 2017-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多