Alex
Alex
10年跨境老兵(微信:sfgoods),熟悉主流平台(Amazon Ebay 速卖通 Shopee Lazada),欢迎交流~

注册于 2年前

回答
90
文章
5
关注者
2

具体请求信息给一下看看。

在 Fulfillment Inbound API v2024-03-20 里,shippingMode 只出现在两个 schema 里,全都是响应:

  • TransportationOption.shippingMode — listTransportationOptions 返回的
  • ShippingConfiguration.shippingMode — listPackingOptions 返回的

整个 API 里没有任何一个请求体接受 shippingMode / SHIPPING_MODE。所以你前后端传得再顺畅,这个值也只是在你自己系统里打转,亚马逊那边压根没收到 → 后台运输方式当然是空的。

正确的写入方式:选 ID,不是传 mode

运输方式是通过选中一个 transportationOptionId 隐式确定的,三步:

generateTransportationOptions (POST, 异步)

listTransportationOptions (GET) → 拿到一堆 option,每个带 shippingMode + shippingSolution
↓ 在这里用你前端传来的 SHIPPING_MODE 做【筛选】
confirmTransportationOptions (POST, 异步) → 只提交 shipmentId + transportationOptionId

confirmTransportationOptions 的请求体只有这几个字段,没别的:

{
"transportationSelections": [

{
  "shipmentId": "sh1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "transportationOptionId": "to1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "contactInformation": { "name": "xxx", "phoneNumber": "1234567890" }
}

]
}

所以代码改法是:前端传的 SHIPPING_MODE 拿去 filter 列表,而不是塞进请求体。

这个现在没有。 亚马逊暂时没开放这个,暂时看没有开放的可能。毕竟爬虫都要登录的买家账号才可以。

唯一沾边的是 Customer Feedback API v2024-06-01

GET /customerFeedback/2024-06-01/items/{asin}/reviews/topics
GET /customerFeedback/2024-06-01/items/{asin}/reviews/trends
GET /customerFeedback/2024-06-01/items/{asin}/browseNode
GET /customerFeedback/2024-06-01/browseNodes/{browseNodeId}/reviews/topics|trends
GET /customerFeedback/2024-06-01/browseNodes/{browseNodeId}/returns/topics|trends

它是 Seller Central「商机探测器(Product Opportunity Explorer)」的 API 版本,返回的是评论话题洞察,不是评分数据:

  • getItemReviewTopics 响应字段只有:asin / itemName / marketplaceId / countryCode / dateRange / topics(最正面和最负面各 10 个话题)
  • 每个话题下的 ItemReviewTopicMetrics 有 occurrencePercentage(提及该话题的评论百分比)和 starRatingImpact

1 SP-API 的开发者注册不在 developer.amazon.com

developer.amazon.com 是 Alexa / Appstore / Login with Amazon 那一套,跟 SP-API 不是一个体系。SP-API 的开发者档案就在 SPP(solutionproviderportal.amazon.com)里填,或者从卖家后台 Apps and Services → Develop Apps 进去,两个入口通向同一个东西。所以不存在"1 个 SPP 账号 + 1 个开发者账号",它本来就是一个。

developer.amazon.com 唯一用得上的地方是广告 API,广告的 client 是个 LwA 应用,那个确实要在这里建。

  1. "为每个卖家账号创建独立应用"没有意义

同一个开发者档案下建五个 app,在亚马逊眼里还是同一个开发者。app 分不开,开发者档案才是主体单位。

3 Private 应用只支持 self-authorization,不支持 OAuth,而且定义上就是"仅限本组织内部使用"。你多主体去 self-authorize 同一个私有应用,等于是自己跟亚马逊报备这几个主体是一家。目前没有公开案例说这条被拿来判关联,但从安全性上讲,多公司主体授权不建议这么做。

该走的是 public,也就是商用 SPP 开发者,赛狐、领星这些都是这个形态。逻辑上它就是"服务商 + 客户 OAuth 授权"的标准模型,你的各个店铺是这个服务商的客户,这在亚马逊侧是完全正常的关系,全世界的 ERP 都长这样,没有关联含义。

试试订单接口。 注意:税务相关的需要有PII,税务相关的受限权限

GET /orders/2026-01-01/orders/{orderId}?includedData=TAX → 取 Order.tax.taxRegistrations[],过滤 entityType == "BUYER":

  • taxRegistrationNumber ← 对应 v0 的 TaxClassifications[].Value(就是身份证/税号本身)
  • taxRegistrationType ← 对应 TaxClassifications[].Name
  • legalName ← 对应 CompanyLegalName

大概率token用错了,看看是不是用成 refresh_token来调用接口了。 或者检查一下token是不是复制错了

问题太不清晰了。 你看的是什么时候的文档?

如果只是调用SP-API已经不需要IAM这些了。

如果需要对接通知,那就是另外一个问题了,可以参考:https://sp-api.net/ask/question/208673.html

如果遇到申请问题需要协助可以随时联系我: 微信 sfgoods

这个需求可以通过两个 API 来实现:

如果是批量统计,用 Reports API 里的 GET_FLAT_FILE_RETURNS_DATA_BY_RETURN_DATE 这个报告类型,里面直接有 Return Reason(退货原因)、Return quantity(数量)、Refunded Amount(退款金额)、Return request date(申请日期)这些字段,拿到数据之后按日期字段自己做分组统计就行了,单次最多支持查 60 天的数据。

如果只是查某一笔订单的退款,用 Finances API 的 listFinancialEventsByOrderId,传订单号进去就能拿到对应的财务事件,包括退款金额。

一般是先用 Reports API 拉一段时间的平铺文件做统计分析,单笔核查的时候再用 Finances API 补充确认,两个配合着用比较方便。

另外需要注意申请 Inventory and Order Tracking 这个角色权限,没有这个权限的话 Returns 报告是拉不到的。

最近太忙了,没注意到还有这个提问

打印箱子标签用的是 getLabels:

**GET /fba/inbound/v0/shipments/{shipmentId}/labels
**
注意 shipmentId 要传的是 shipmentConfirmationId,就是那个 FBA15G7C2CZQ 这种格式的,不是 v2024 流程里 createInboundPlan 返回的那个 shipmentId

PageType 传 PackageLabel_Plain_Paper 就行,你截图里选的 99x105 A4 纸每页6个,对应的就是这个。

文档地址: https://developer-docs.amazon.com/sp-api/reference/getlabels

API调试地址:

ERP 系统是可以直接通过 SP-API 的 FBA Inbound v2024-03-20 来实现自动分仓的,不过新版 API 的流程和以前 createInboundShipmentPlan 不一样,需要按新的流程调用。

一般 ERP 对接的流程大致是:

createInboundPlan
提交发货地址、SKU 和数量,创建 inbound plan。

generatePackingOptions / listPackingOptions
生成并获取装箱方案。

generatePlacementOptions / listPlacementOptions
生成分仓方案,Amazon 会返回系统计算好的仓库分配结果。

confirmPlacementOption
确认分仓方案后会生成对应的 shipment。

setPackingInformation
上传箱规、重量、SKU数量等装箱信息。

简单理解就是:
ERP提交SKU数量 → Amazon返回分仓结果 → ERP按分仓结果装箱并创建货件。

现在很多系统都是用 Pack Later(先分仓再装箱) 的方式来实现自动分仓,这也是新版 API 推荐的流程。

可以的,你在aws队列页面,点击Send and receive messages,就可以看到消息

这里注意,需要提前给你的SQS加一个让SP-API的AWS ID可以写入数据的权限。不然会收不到消息

你检查看看是不是图片链接的问题,我看你主图和附图用的链接也不一样

比如:
static.instudio.me(主图)或 www.ingroupcloud.com(辅图)对 Amazon 抓取端不可访问(403/防盗链/证书/跳转),导致所有图片被判无效,后台就显示全空

另外还有一个常见的原因是,亚马逊抓到主图图片里有不符合图片要求和政策的内容。
比如 logo/文字 等,亚马逊对主图要求还是比较多的

可以从上面两个原因里查一下

有几个地方的原因,你可以试试:
"transactionType": "Cancel"
这个操作是在取消货件吗?

另外你需要确认好,你是用AMZNCC 还是SSCC ,两个不太一样。

修正了一下你的参数,你参考一下

{
  "shipments": [{
    "vendorShipmentIdentifier": "AMAZON-SHIP20260113121254-000026",
    "transactionType": "Original",  // 改为Original
    "transactionDate": "2026-01-20T12:00:00.000Z",
    
    "sellingParty": {
      "partyId": "UH681"
    },
    "shipFromParty": {
      "partyId": "0-188422721",
      "address": {
        "name": "LinkW Technology Logistics Inc.",
        "addressLine1": "14650 Meyer Canyon Drive"
      }
    },
    "shipToParty": {
      "partyId": "GEU5"
    },
    
    "shipmentFreightTerm": "Collect",
    "transportationDetails": {
      "shipMode": "SmallParcel"
    },
    
    "collectFreightPickupDetails": {
      "requestedPickUp": "2026-01-14T12:00:00.000Z",
      "scheduledPickUp": "2026-01-14T12:00:00.000Z"
    },
    
    "shipmentMeasurements": {
      "totalCartonCount": 1,
      "totalPalletStackable": 0,
      "totalPalletNonStackable": 0,
      "shipmentWeight": {
        "unitOfMeasure": "Lb",
        "value": 3.6
      },
      "shipmentVolume": {
        "unitOfMeasure": "CuFt",
        "value": "2.682"
      }
    },
    
    "purchaseOrders": [{
      "purchaseOrderNumber": "8TWTXM8G",
      "purchaseOrderDate": "2026-01-12T00:00:00.000Z",
      "shipWindow": "2026-01-12T00:00:00.000Z--2026-01-29T00:00:00.000Z",
      "items": [{
        "itemSequenceNumber": "001",  // 保持字符串格式
        "buyerProductIdentifier": "B07837W5NX",
        "vendorProductIdentifier": "B07837W5NX",
        "shippedQuantity": {
          "amount": 1,
          "unitOfMeasure": "Eaches",
          "unitSize": 1
        }
      }]
    }],
    
    "containers": [{
      "containerSequenceNumber": "1",
      "containerType": "Carton",
      
      // 方案1: 提供正确的18位SSCC
      "containerIdentifiers": [{
        "containerIdentificationType": "SSCC",
        "containerIdentificationNumber": "000059203339970001"  // 18位
      }],
      
      // 或者 方案2: Small Parcel可以不提供,让Amazon生成
      // "containerIdentifiers": [],
      
      "dimensions": {
        "length": 10,
        "width": 10,
        "height": 10,
        "unitOfMeasure": "In"
      },
      "weight": {
        "unitOfMeasure": "Lb",
        "value": 1
      },
      
      "packedItems": [{
        "itemSequenceNumber": "001",  // 与PO中保持一致
        "buyerProductIdentifier": "B07837W5NX",
        "vendorProductIdentifier": "B07837W5NX",
        "itemDetails": {
          "purchaseOrderNumber": "8TWTXM8G"
        },
        "packedQuantity": {
          "amount": 1,
          "unitOfMeasure": "Eaches"  // 改为Eaches保持一致
        }
      }]
    }]
  }]
}

你试试,
重新提交 SubmitShipments
等待承运商分配
轮询查询: GET /vendor/shipping/v1/shipments

然后下载标签

   GET vendor/shipping/v1/transportLabels

正常操作应该是你重新put一下,把其他链接删掉。put是覆盖的

如果非要patch,可以试试一个邪修招数main_product_image_locator 正常传值, other_product_image_locator_1 - other_product_image_locator_3 传无法访问的图片,这样子试试

发布
问题

公众
平台

最新资讯发布