使用 API 进行交易时出现令人困惑的 shippo 错误

Confusing shippo error during transaction using API

我在对几天前创建的费率对象 ID 执行交易时不断收到此错误。

{
  "source": "USPS",
  "code": "",
  "text": "The selected shipment date must be within 7 days of 02/15/2017, 07:11PM CST."
}

我正在将 shippo 与我的 Node.js 网络应用程序集成。我正在使用 shippo node.js 库。

shippo.shipment.create({, function(err, shipment) {});

我建立了一个基本的商店。当用户进入结帐部分时,我会从 shippo 获得费率。我向用户显示这些费率。用户选择他想要的速率。我将费率对象 ID 保存到数据库中。

shippo.transaction.create({, function(err, transaction) {});

我完成了订单并打印了运输标签。应用程序转到数据库并检索费率对象 ID 以执行与 shippo 的交易。在 return 我想得到一个跟踪 # 和标签信息,但我得到了错误。

我首先想到的是费率对象 ID 仅持续 7 天,然后自行过期之类的。当我检查费率对象 ID 时:

https://api.goshippo.com/rates/2a0b50cbc5184362a0ea2385b490bc7b

它显示对象创建于 2/18。今天是 2/21。所以那不可能。错误显示 "The selected shipment date must be within 7 days of 02/15/2017, 07:11PM CST."

这是什么意思?为什么我得到它?

似乎只对 2 天前创建的对象 ID 进行评分。如果汇率对象 ID 是昨天创建的,我仍然可以毫无问题地执行交易。

screenshot

看起来您使用的是过去(不是同一天)的汇率,这导致了此错误的发生。

当您在 /shipments/ 端点发送货件时,您可以在创建货件时指定 submission_date。如果您没有指定 submission_date(通常只有在您知道计划发货的日期时才会这样做),Shippo 会自动将 submission_date 设置为发出请求的日期。

您收到错误的原因是您对过去 submission_date 的货件使用了费率。一些运营商只允许提交日期为当前日期或将来的某个日期。

您可以在货件对象上找到更多详细信息 here,这可能会有所帮助。