微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在 Commerce JS 上“捕获订单”

如何解决无法在 Commerce JS 上“捕获订单”

我一直在尝试使用 Commerce JS 构建电子商务网站。我被困在“捕获订单”阶段。这是我发送到 Commerce JS 以捕获的 orderData 代码,但它返回错误代码 401 和 422。第一个错误是:

{
    "status_code": 401,"error": {
        "message": "You did not provide an API key. You need to provide your API key in the X-Authorization header (e.g. 'X-Authorization: YOUR_API_KEY').","type": "authentication_error"
    }
}

现在如果我没有提供 API 密钥,那么我如何使用 Commerce JS 的其他功能

第二个错误是: “未找到订单项 ID”,相反,每个项目都存在订单项 ID,它由 Commmerce.js 本身维护,我可以在控制台中看到订单项 ID。

line_items : checkoutToken.live.line_items,customer: {
    firstname : shippingData.firstName,lastname: shippingData.lastName,email: shippingData.email
},shipping: {
    name :"Primary",street: shippingData.address1,town_city: shippingData.city,county_state: shippingData.shippingSubdivision,postal_zip_code: shippingData.zip,country: shippingData.shippingCountry
},fulfillment: {
    shipping_method: shippingData.shippingOption
},billing:{
    "name": "John Doe","street": "234 Fake St","town_city": "San Francisco","county_state": "US-CA","postal_zip_code": "94103","country": "US"
},payment : {
    gateway: 'stripe',stripe: {
        payment_method_id: paymentMethod.id
    }
}

enter image description here

解决方法

您尚未在此处展示任何实际使用 Commerce.js 的代码。您的第一个问题很简单,即您在构建 API 密钥时未将其提供给 Commerce.js:

import { Commerce } from '@chec/commerce.js';

const commerce = new Commerce('put_your_api_key_here');

很可能您在此处使用了环境变量,并且环境变量可能未正确加载。在这种情况下,请确保您项目中的 .env 文件位于项目根文件夹中(与 package.json 处于同一级别),并且它具有正确定义的环境变量,如您的代码所引用。

关于第二个错误,您与我们分享的与此错误相关的代码是 line_items : checkoutToken.live.line_items。看起来您将订单项列表直接从 the live object 传递到捕获方法中。这不提供 the way Commerce.js expects it 中的信息。

您的 line_items 对象应该是这样的:

commerce.checkout.capture('chkt_ABC123',{
  line_items: {
    item_7RyWOwmK5nEa2V: {
      quantity: 1,variants: {
        vgrp_p6dP5g0M4ln7kA: 'optn_DeN1ql93doz3ym',}
    }
  },...

quantity 参数是可选的,如果您没有提供它,它将使用您的订单项的存储数量(请参阅您的结帐令牌以了解数量是多少 - 默认情况下为 1)。 variants 也是可选的。如果您的产品没有变体,或者您之前使用过“检查变体”助手,那么您可能不需要提供此信息。不过,如果可以的话,为了清楚起见,提供这些信息总是好的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。