如何通过Amazon SP-API编程实现亚马逊订单取消功能
SP-API 订单取消功能实现方案
你在SP-API Orders API v0文档中找不到取消/删除订单的接口是正常情况:SP-API没有把订单取消能力放在Orders API模块下,实现逻辑和旧版MWS完全一致,需要通过Feeds API提交指定类型的feed完成操作,具体流程如下:
- 前置校验:仅未进入发货履约流程的
Pending状态卖家自配送订单支持API主动取消,FBA订单、已进入发货流程的订单无法通过该方式取消 - 接口调用流程:
- 调用Feeds API的
createFeedDocument接口创建上传文档,获取feedDocumentId和文件上传预签名地址 - 构造符合规范的XML格式feed内容,使用的feed类型和旧版MWS取消订单完全一致,为
_POST_ORDER_ACKNOWLEDGEMENT_DATA_,基础结构示例如下:
- 调用Feeds API的
<?xml version="1.0" encoding="UTF-8"?> <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> <Header> <DocumentVersion>1.02</DocumentVersion> <MerchantIdentifier>你的店铺卖家ID</MerchantIdentifier> </Header> <MessageType>OrderAcknowledgement</MessageType> <Message> <MessageID>自定义消息序号,同一提交包内不重复即可</MessageID> <OrderAcknowledgement> <AmazonOrderID>待取消的亚马逊订单号</AmazonOrderID> <StatusCode>Failure</StatusCode> <CancelReason>对应平台规范的取消原因</CancelReason> </OrderAcknowledgement> </Message> </AmazonEnvelope>
- 通过第一步拿到的预签名地址,上传构造完成的XML文件
- 调用Feeds API的
createFeed接口,传入feed类型、之前获取的feedDocumentId、订单所属站点的市场ID,提交处理请求 - 轮询
getFeed接口查询处理状态,待处理完成后调用getFeedDocument拉取结果报告,核对订单取消结果,处理报错条目
如果你之前已经实现过旧版MWS的订单取消逻辑,feed的XML结构、参数规则可以直接复用,仅需要把MWS侧的Feeds接口调用替换为SP-API的对应Feeds接口即可,核心业务逻辑不需要改动。
注意:不要尝试通过Orders API的修改备注、更新履约信息等接口绕路实现取消,这类操作不会触发平台侧的正式取消流程,反而可能导致订单状态异常触发履约违规。
内容的提问来源于stack exchange,提问作者holographix
相关产品推荐
相关产品推荐

