# 概述
用于直接履行的销售伙伴API帮助直接履行(DF)计划中的供应商通过网络服务集成以编程方式管理他们的直接履行业务.这可以帮助供应商提高和保持他们的性能规模,并与亚马逊的业务增长.
供应商可以使用这些API来构建应用程序,以提高运营效率,减少工作,减少错误,并提高性能.
关于认证和授权的信息,请参见销售伙伴API开发者指南 (opens new window).
# 什么是直接履行订单的API?
使用Direct Fulfillment Orders API (opens new window),供应商可以接收采购订单并发送订单确认.
以下操作是可用的
Operation | HTTP方法 | 路径 | Description |
---|---|---|---|
getOrders | 获取 | /vendor/directFulfillment/orders/v1/purchaseOrders | 根据创建日期范围获取订单列表. 注:这是一个受限操作,因此需要一个受限数据令牌(RDT)进行授权.更多信息,请参阅Tokens API使用案例指南. |
getOrder | 获取 | /vendor/directFulfillment/orders/v1/purchaseOrders /{purchaseOrderNumber} | 通过采购订单号获取特定订单的详细信息. 注:这是一个受限操作,因此需要一个受限数据令牌(RDT)进行授权.更多信息,请参阅Tokens API用例指南. |
submitAcknowledgement | 张贴 | /vendor/directFulfillment/orders/v1/acknowledgements | 确认(接受或拒绝)单个或多个订单. |
您可以使用getOrders (opens new window)操作来访问在您指定的时间范围内创建的订单(时间范围为过去6个月的滚动窗口中的7天,在供应商上线后).您也可以使用getOrder操作获得特定订单的详细订单信息.然后您可以使用submitAcknowledgement操作确认订单.
注意使用getOrders操作有可能只得到采购订单的编号而没有完整的订单细节(在查询参数中使用 "includeDetails=false").这个参数的默认值是true,所以如果你不包括这个查询参数,你将得到采购订单的完整细节.
下图显示了使用直接履行订单API的工作流程.
每个操作的细节都在下面的章节中.
# 获取采购订单
getOrders操作返回一个订单参考列表(采购订单号)或符合指定条件的所有订单的完整订单细节.如果只返回订单号,以后可以用getOrder操作使用每个订单号来获取特定订单的细节.
**注意:**这是一个受限的操作,因此需要一个受限数据令牌(RDT)进行授权.更多信息,见Tokens API用例指南 (opens new window).
你应该使用这个API来获取可供你执行的采购订单.亚马逊建议供应商在营业时间内每小时至少检查一次订单.根据你的业务量,你可以选择更频繁的检查.你可以在一次API调用中最多返回100个订单.如果有超过100个订单,你可以使用响应中的nextToken值来获取下一组订单.
下图显示了检索采购订单时的整合工作流程
# getOrders Request
要返回采购订单的列表,请调用getOrders (opens new window)操作并传递以下参数
查询参数
姓名 | Description | 要求 |
---|---|---|
shipFromPartyId | 订单将从哪个供应商仓库完成.如果不指定,结果将包含所有仓库的订单.
类型: string | No |
状态 | 只返回属于此状态的订单.如果没有指定,结果将包含任何状态的订单.
类型: enum ( Status ) |
属于 "不属于",即 "不属于"
|
limit | 返回记录的数量限制.
类型: 整数(int64) | 没有 |
createdAfter | 在此日期和时间之后可用的订单将包括在结果中.必须采用ISO-8601日期/时间格式.
类型: string (date-time) | 是的 |
createdBefore | 在此日期和时间之前可用的订单将包括在结果中.必须是ISO-8601日期/时间格式.
类型: string (date-time) | 是的 |
sortOrder | 按订单创建日期进行ASC或DESC排序.
类型: 枚举( SortOrder ) | 没有 |
nextToken | 当有更多的订单超过指定的结果大小限制时,用于分页.该令牌值在之前的API调用中返回.
类型: string | 没有 |
includeDetails | 默认值为true.当为true时,这个API将返回一个有完整细节的订单列表.当为false或不包括在过滤器中时,只返回采购订单号码.
类型: string | No |
请求示例
GET https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/orders/v1/purchaseOrders?limit=2&createdAfter=2020-02-15T14:00:00-08:00&createdBefore=2020-02-20T00:00:00-08:00&sortOrder=DESC&includeDetails=true
# getOrders Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
pagination | 如果返回超过100个订单,则在响应中返回nextToken进行分页.
类型: string | 没有 |
订单 | 包括采购订单的详细信息.
类型 Order | 没有 |
响应示例
{
"pagination":
{
"nextToken": "MDAwMDAwMDAwMQ=="
},
"订单": [
{
"purchaseOrderNumber": "2JK3S9VC",
"orderDetails":
{
"customerOrderNumber": "123-ABC",
"orderDate": "2020-02-20T13:51:00Z",
"shipmentDetails":
{
"isPriorityShipment": false,
"isScheduledDeliveryShipment": false,
"isPslipRequired": true,
"isGift": false,
"shipMethod": "UPS_2ND",
"装运日期":
{
"requiredShipDate": "2020-02-21T00:00:00Z",
"promisedDeliveryDate": "2020-02-24T00:00:00Z"
},
"essageToCustomer": "这批货物完成了您的订单.您可以随时从我们网站每个页面顶部的 "您的账户 "链接查看您的订单状态.感谢您在亚马逊购物.com"
},
"taxTotal":
{
"taxLineItem": [
{
"taxRate": "0.1",
"taxAmount":
{
"currencyCode": "USD",
"金额": "190"
},
"类型": "总计"
}
]
},
"sellingParty":
{
"partyId": "999US"
},
"shipFromParty":
{
"partyId": "ABCD"
},
"shipToParty":
{
"名称": "ABCD",
"注意": "ABCD",
"addressLine1": "123 XYZ街",
"addressLine2": "Apt 5",
"城市": "圣何塞",
"stateOrRegion": "CA",
"postalCode": "94086",
"countryCode": "美国"
},
"billToParty":
{
"partyId": "ABCD"
},
"项目": [
{
"itemSequenceNumber": "00001",
"buyerProductIdentifier": "B07DFVDRAB",
"vendorProductIdentifier": "8806098286500",
"标题": "LG 8 kg Inverter Wi-Fi Fully-Automatic Front Loading Washing Machine (FHT1408SWS, STS-VCM, Inbuilt Heater)",
"orderedQuantity":
{
"数量": 1,
"unitOfMeasure": "EACH"
},
"netPrice":
{
"currencyCode": "USD",
"金额": "500"
},
"taxDetails":
{
"taxLineItem": [
{
"taxRate": "0.1",
"taxAmount":
{
"currencyCode": "USD",
"数额": "50"
},
"类型": "总计"
}
]
}
},
{
"itemSequenceNumber": "00002",
"buyerProductIdentifier": "B07DFYF5AB",
"vendorProductIdentifier": "8806098286123",
"标题": "LG 6.5 kg Inverter Fully-Automatic Front Loading Washing Machine (FHT1065SNW, Blue and White, Inbuilt Heater)",
"orderedQuantity":
{
"数量": 2,
"unitOfMeasure": "EACH"
},
"netPrice":
{
"currencyCode": "USD",
"金额": "700"
},
"taxDetails":
{
"taxLineItem": [
{
"taxRate": "0.1",
"taxAmount":
{
"currencyCode": "USD",
"数额": "140"
},
"类型": "总计"
}
]
}
}
]
}
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# 获取采购订单
getOrder (opens new window) 操作返回您使用采购订单号指定的采购订单信息. 响应包括采购订单的完整采购订单信息,包括细列项目细节、数量、成本等.
**注意:**这是一个受限的操作,因此需要一个受限数据令牌(RDT)进行授权.更多信息,见Tokens API用例指南 (opens new window).
你应该使用这个API来获取由getOrders (opens new window)操作返回的特定订单的细节.你也可以使用这个API来获取任何采购订单的细节(在过去6个月的滚动窗口的7天时间范围内,在供应商启用API后).
下图显示了检索特定采购订单的集成工作流程
# Business Requirements
- **所有订单都需要装箱单吗?
如果是企业对企业的订单或礼品订单,就需要装箱单.当 "isPslipRequired "为真时,该订单就需要装箱单.
- **该订单应在何时发货?
您需要读取 "requiredShipDate "字段的值,这是订单从仓库发货的最晚日期. "promisedDeliveryDate "字段的值表示我们承诺交付给客户的日期.
- 使用API更改订单
目前不可能使用API提交对订单的更改.在订单下达后,不可能更改它.
# 国家具体业务要求
功能 | 印度 | 欧洲 | 北美洲 |
---|---|---|---|
净成本 | 条件.净成本或清单价格. | 条件.净成本或清单价格. | 条件.净成本或清单价格. |
清单价格 | 有条件的.净成本或清单价格. | 有条件的.净成本或清单价格. | 有条件的.净成本或清单价格. |
发货方 | 分配给供应商的仓库代码. | 分配给供应商的仓库代码. | 分配给供应商的仓库代码. |
销售方 | 分配给供应商的供应商代码. | 分配给供应商的供应商代码. | 分配给供应商的供应商代码. |
发货方 | 客户的地址. | 客户的地址. | 客户的地址. |
账单收方 | 账单收方的地址. | 账单收方的地址. | 不适用. |
# getOrder Request
要返回一个特定采购订单的信息,请调用getOrder (opens new window)操作并传递以下参数
路径参数
姓名 | Description | 要求 |
---|---|---|
purchaseOrderNumber | 需要获取详细信息的订单ID.格式化说明8-character alpha-numeric code.
类型:字符串 | 是的 |
请求示例
GET https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/orders/v1/purchaseOrders/4Z32PABC
# getOrder Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
purchaseOrderNumber | 这个字段将包含这个订单的亚马逊采购订单号.格式化说明8-character alpha-numeric code.>
类型:字符串 | 没有 |
orderDetails | 订单的细节.
类型 OrderDetails | 没有 |
响应示例
{
"purchaseOrderNumber": "2JK3S9VC",
"orderDetails":
{
"customerOrderNumber": "123-ABC",
"orderDate": "2020-02-20T13:51:00Z",
"shipmentDetails":
{
"isPriorityShipment": false,
"isScheduledDeliveryShipment": false,
"isPslipRequired": true,
"isGift": false,
"shipMethod": "UPS_2ND",
"装运日期":
{
"requiredShipDate": "2020-02-21T00:00:00Z",
"promisedDeliveryDate": "2020-02-24T00:00:00Z"
},
"essageToCustomer": "这批货物完成了您的订单.您可以随时从我们网站每个页面顶部的 "您的账户 "链接查看您的订单状态.感谢您在亚马逊购物.com"
},
"taxTotal":
{
"taxLineItem": [
{
"taxRate": "0.1",
"taxAmount":
{
"currencyCode": "USD",
"金额": "190"
},
"类型": "总计"
}
]
},
"sellingParty":
{
"partyId": "999US"
},
"shipFromParty":
{
"partyId": "ABCD"
},
"shipToParty":
{
"名称": "ABCD",
"注意": "ABCD",
"addressLine1": "123 XYZ街",
"addressLine2": "Apt 5",
"城市": "圣何塞",
"stateOrRegion": "CA",
"postalCode": "94086",
"countryCode": "美国"
},
"billToParty":
{
"partyId": "ABCD"
},
"项目": [
{
"itemSequenceNumber": "00001",
"buyerProductIdentifier": "B07DFVDRAB",
"vendorProductIdentifier": "8806098286500",
"标题": "LG 8 kg Inverter Wi-Fi Fully-Automatic Front Loading Washing Machine (FHT1408SWS, STS-VCM, Inbuilt Heater)",
"orderedQuantity":
{
"数量": 1,
"unitOfMeasure": "EACH"
},
"netPrice":
{
"currencyCode": "USD",
"金额": "500"
},
"taxDetails":
{
"taxLineItem": [
{
"taxRate": "0.1",
"taxAmount":
{
"currencyCode": "USD",
"数额": "50"
},
"类型": "总计"
}
]
}
},
{
"itemSequenceNumber": "00002",
"buyerProductIdentifier": "B07DFYF5AB",
"vendorProductIdentifier": "8806098286123",
"标题": "LG 6.5 kg Inverter Fully-Automatic Front Loading Washing Machine (FHT1065SNW, Blue and White, Inbuilt Heater)",
"orderedQuantity":
{
"数量": 2,
"unitOfMeasure": "EACH"
},
"netPrice":
{
"currencyCode": "USD",
"金额": "700"
},
"taxDetails":
{
"taxLineItem": [
{
"taxRate": "0.1",
"taxAmount":
{
"currencyCode": "USD",
"数额": "140"
},
"类型": "总计"
}
]
}
}
]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# 确认命令
submitAcknowledgement (opens new window)操作允许供应商接受或拒绝履行的采购订单.亚马逊希望得到一份完整的确认书,包括采购订单的所有采购项目.如果供应商在确认书中没有提供采购订单的所有项目,亚马逊不接受部分确认书.
亚马逊希望供应商尽快提交确认书,最迟在24小时内提交.确认书应该是对实际发货数量和项目的准确反映.
# 验证成功提交的订单确认书
供应商可以使用Vendor Central (opens new window)或使用直接履行交易管理API来验证订单回执的原始/更新版本的状态.允许系统在提交后最多需要15分钟来显示原始/更新版本.如果Vendor Central没有显示回执的正确值,请在Vendor Central打开一个 "联系我们 "案例.
下图显示了确认订单时的整合工作流程.
# Business Requirements
- 供应商可以使用submitAcknowledgement操作增加采购订单中提交的原始数量吗?
不可以,亚马逊不允许供应商在确认中发送比采购订单中提交的更多的数量.
- **是否需要为每个采购订单发送订单确认书?
是的,为了正确更新亚马逊系统中的订单状态,亚马逊要求使用API或Vendor Central确认PO.如果您无法使用API满足我们的订单确认要求,您必须使用Vendor Central确认您的PO.如果您没有Vendor Central账户,请联系您的亚马逊业务代表.
- 是否需要在相应的订单确认中提供每一个PO行项目?
是的,这样亚马逊才能正确地更新订单状态.
- 应如何使用订单确认书报告订单上的无效项目或细节?
不要处理或运送订单上有无效货号的商品.请在确认单上返回无效的货号,并以下列代码之一确认.
以下是文件中可能使用的代码的例子.亚马逊和供应商将共同商定一个适合他们关系的代码列表.
代码和描述
"00 "运送100%的订购产品
"02 "由于缺少/无效的SKU而取消
"03" 因缺货而取消
"04" 由于亚马逊发货ID重复而取消
"05" 由于缺失/无效的账单地址代码而取消
"06" 由于缺失/无效的发货地代码
而被取消
"07" 由于缺少/无效的客户发货地名称而取消
"08" 由于缺少/无效的客户发货地址行1而取消
"09" 由于缺少/无效的客户寄往城市
而取消
"10" 由于缺失/无效的客户寄往州
而取消
"11" 由于缺少/无效的客户寄往邮政编码
而取消
"12" 由于缺少/无效的客户寄往国家代码
而取消
"13" 由于缺失/无效的运输公司/运输方式而被取消
"20" 因缺失/无效的单价而取消
"21 "由于缺失/无效的发货地址线2而取消
"22" 由于缺失/无效的收货地址线3而被取消
"50 "由于税收关系问题而取消
"51" 由于限制SKU/数量而被取消
"53" 由于USPS >400美元而取消
"54" 由于缺少AmazonShipID而被取消
"55" 由于缺少AmazonOrderID
而被取消
"56" 由于缺少LineItemId
而被取消
"71 "由于停产的商品而取消
注意:即使采购订单上的所有行项目都是无效的,并且没有产生订单或发票,亚马逊也希望收到确认函.
- **我是否需要在回执中返回与订单交易中收到的相同的产品标识符?
答谢必须返回与采购订单中发送的产品标识符完全相同的产品标识符._
- **是否要求我为所有细列项目提供一个确认代码,无论其状态如何?
是的,这是必须的,这样我们才能正确地更新订单的状态.如果省略了确认代码,确认将在我们的系统中被拒绝.
- 亚马逊.com对部分货物的政策是什么?在提交订单确认时,应如何报告部分货物?
不允许部分发货.供应商需要确认或拒绝整个订单(填充或杀死模型).
# 国家具体业务要求
对于订单确认,没有任何国家的具体要求.
# submitAcknowledgement Request
要提交订单确认,请调用submitAcknowledgement (opens new window)操作并传递以下参数
主体参数
姓名 | Description | 要求 |
---|---|---|
orderAcknowledgements | 被确认的个人订单的详细信息.
类型:< OrderAcknowledgementItem > 阵列 | 是的 |
请求示例
POST https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/orders/v1/acknowledgements
{
"orderAcknowledgements": [
{
"purchaseOrderNumber": "2JK3S9VC",
"vendorOrderNumber": "ABC",
" acknowledgementDate": "2020-02-20T19:17:34.304Z",
" acknowledgementStatus":
{
"代码": "00",
"描述": "运送百分之百的订购产品"
},
"sellingParty":
{
"partyId": "999US"
},
"shipFromParty":
{
"partyId": "ABCD"
},
"itemAcknowledgements": [
{
"itemSequenceNumber": "00001",
"buyerProductIdentifier": "B07DFVDRAB",
"vendorProductIdentifier": "8806098286500",
"recognizedQuantity":
{
"数额": 1,
" unitOfMeasure": "每个"
}
}
]
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# submitAcknowledgements Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
transactionId | 亚马逊分配的GUID,用于识别此交易.它可以与直接履行交易状态API一起使用,以返回此交易的状态.
类型: string | 是的 |
响应示例
{
"transactionId": "20190827182357-8725bde9-c61c-49f9-86ac-46efd82d4da5"
}
2
3
4
5
# 确认用例
# 采购订单中无效的行项目
如果供应商在采购订单中收到一个无效的产品标识符,供应商应拒绝该项目,确认代码为 "02","描述 "为 "因缺少/无效的SKU而取消".
{
"orderacknowledgements": [
{
"purchaseOrderNumber": "2JK3S9VC",
"vendorOrderNumber": "ABC",
" acknowledgementDate": "2020-02-20T19:17:34.304Z",
" acknowledgementStatus": {
"代码": "02",
"描述": "由于缺少/无效的SKU而被取消"
},
"销售方": {
"partyId": "999US"
},
"shipFromParty": {
"partyId": "ABCD"
},
"项目": [
{
"itemSequenceNumber": "1",
"buyerProductIdentifier": "B07DFVDRAB",
"vendorProductIdentifier": 8806098286500,
"recognizedQuantity": {
"金额": 1,
"unitOfMeasure": "每个"
}
}
]
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 采购订单中的缺货行项目
如果供应商在采购订单中收到的产品现在已经缺货,供应商应该拒绝该项目,确认代码为 "03","描述 "为 "取消缺货".
{
"orderacknowledgements": [
{
"purchaseOrderNumber": "2JK3S9VC",
"vendorOrderNumber": "ABC",
" acknowledgementDate": "2020-02-20T19:17:34.304Z",
" acknowledgementStatus": {
"代码": "03",
"描述": "取消了,没货了"
},
"销售方": {
"partyId": "999US"
},
"shipFromParty": {
"partyId": "ABCD"
},
"项目": [
{
"itemSequenceNumber": "1",
"buyerProductIdentifier": "B07DFVDRAB",
"vendorProductIdentifier": 8806098286500,
"recognizedQuantity": {
"金额": 1,
"unitOfMeasure": "每个"
}
}
]
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 确认采购单被接受
如果供应商收到采购订单中的产品可以发货,供应商应该接受该项目,确认代码为 "00","描述 "为 "运送100%的订购产品".
{
"orderacknowledgements": [
{
"purchaseOrderNumber": "2JK3S9VC",
"vendorOrderNumber": "ABC",
" acknowledgementDate": "2020-02-20T19:17:34.304Z",
" acknowledgementStatus": {
"代码": "00",
"描述": "运送百分之百的订购产品"
},
"sellingParty": {
"partyId": "999US"
},
"shipFromParty": {
"partyId": "ABCD"
},
"项目": [
{
"itemSequenceNumber": "1",
"buyerProductIdentifier": "B07DFVDRAB",
"vendorProductIdentifier": 8806098286500,
"recognizedQuantity": {
"金额": 1,
"unitOfMeasure": "每个"
}
}
]
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 什么是直接履行发货API?
供应商可以使用Direct Fulfillment Shipping API (opens new window),与亚马逊交换发货相关文件.供应商可以请求发货标签,接收发货标签,发送发货确认,获得装箱单,并检索客户发票.
请注意,客户发票是针对印度地区的.
可进行以下操作
Operation | HTTP方法 | 路径 | Description |
---|---|---|---|
submitShippingLabelRequest | 张贴 | /vendor/directFulfillment/shipping/v1/shippingLabels | 提交单个或多个运输标签请求. |
getShippingLabels | 获取 | /vendor/directFulfillment/shipping/v1/ shippingLabels | 根据过滤标准获取运输标签列表. 注:这是一个受限操作,因此需要一个受限数据令牌(RDT)进行授权.更多信息,请参阅Tokens API用例指南. |
getShippingLabel | 获取 | /vendor/directFulfillment/shipping/v1/shippingLabels/{purchaseOrderNumber} | 按采购订单号获取运输标签. |
submitShipmentConfirmations | 张贴 | /vendor/directFulfillment/shipping/v1/shipmentConfirmations | 向亚马逊提交单个或多个货件确认书. |
submitShipmentStatusUpdates | 张贴 | /vendor/directFulfillment/shipping/v1/shipmentStatusUpdates | 提交货件状态更新.仅供应商自己的承运人供应商. |
getPackingSlips | 获取 | /vendor/directFulfillment/shipping/v1/packingSlips | 根据创建日期范围获取包装单列表. 注:这是一个受限操作,因此需要一个受限数据令牌(RDT)进行授权.更多信息,请参阅Tokens API用例指南. |
getPackingSlip | 获取 | /vendor/directFulfillment/shipping/v1/packingSlips/{purchaseOrderNumber} | 按采购订单号获取特定订单的装箱单. |
getCustomerInvoices | 获取 | /vendor/directFulfillment/shipping/v1/customerInvoices | 根据过滤标准获取客户发票列表. 注:这是一个受限操作,因此需要一个受限数据令牌(RDT)进行授权.更多信息,请参阅Tokens API使用案例指南. |
getCustomerInvoice | 获取 | /vendor/directFulfillment/shipping/v1/customerInvoices/{purchaseOrderNumber} | 按采购订单号获取客户发票. |
# 提交运输标签请求
submitShippingLabelRequest (opens new window)操作允许供应商为每个采购订单向亚马逊请求运输标签信息.你可以通过遵守模式,在一次API调用中批量发送多个运输标签请求.当亚马逊创建运输标签时,它们将可以使用getShippingLabel操作下载.
# 验证成功提交的发货标签请求
供应商可以使用Direct Fulfillment Transaction Status API来验证他们的运输标签请求的状态.一旦提交,允许系统在15分钟内显示状态.如果30分钟后交易状态没有更新,请在Vendor Central打开一个 "Contact Us "案例.
# 装运标签请求API整合工作流程
下图显示了提交运输标签请求的工作流程. ###
# Business Requirements
- 亚马逊必须在采购订单被确认为被供应商使用订单确认API接受后收到运输标签请求.
-如果使用亚马逊自己的运输标签,在请求中发送物品信息或包裹信息是可选的.
# 国家具体业务要求
不存在任何国家的具体要求.
# submitShippingLabelRequest Request
要申请运输标签,请调用submitShippingLabelRequest (opens new window)操作并传递以下参数
主体参数
姓名 | Description | 要求 |
---|---|---|
shippingLabelRequests | 请求一个或多个运输标签.
类型: < 航运标签请求 > 阵列 | 是的 |
请求示例
POST "https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/shipping/v1/shippingLabels"
{
"shippingLabelRequests": [
{
"purchaseOrderNumber": "2JK3S9VC",
"sellingParty": {
"partyId": "999US"
},
"shipFromParty": {
"partyId": "ABCD"
},
"集装箱": [
{
"容器类型": "纸箱",
"containerIdentifier": "123",
"trackingNumber": "XXXX",
"尺寸": {
"长度": "12",
"宽度": "12",
"高度": "12",
"unitOfMeasure": "IN"
},
"重量": {
"unitOfMeasure": "KG",
"值": "10"
},
"packedItems": [
{
"itemSequenceNumber": 1,
"buyerProductIdentifier": "B07DFVDRAB",
"包装数量": {
"数量": 1,
"unitOfMeasure": "每个"
}
}
]
}
]
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# submitShippingLabelRequest Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
transactionId | GUID来识别这个交易.这个值可以和交易状态API一起使用来返回这个交易的状态.
类型: string | No |
响应示例
{
"transactionId": "20190905010908-8a3b6901-ef20-412f-9270-21c021796605"
}
2
3
# 获取运输标签
getShippingLabels (opens new window) 操作会返回符合请求中指定的过滤条件的所有订单的运输标签. 你必须已经使用[submitShippingLabelRequest](https请求运输标签 //spapi.cyou/zh/references/vendor-direct-fulfillment-shipping-api-v1-reference.html#post-vendordirectfulfillmentshippingv1shippinglabels)操作,然后才能使用这个API获得可用的运输标签这个API来获取可用于履行的运输标签.亚马逊建议供应商在营业时间内至少每小时检查一次运输标签.根据你的业务量你可以选择更频繁的检查.你可以在一次API调用中获得最多100个发货标签.如果有超过100个发货标签,你可以使用nextToken值来获得下一组发货标签.
**注意:**这是一个受限操作,因此需要一个受限数据令牌(RDT)进行授权.更多信息,请参见Tokens API用例指南 (opens new window).
下图显示了检索运输标签时的整合工作流程
# getShippingLabels Request
要检索发货标签的列表,请调用getShippingLabels (opens new window)操作并传递以下参数
查询参数
姓名 | Description | 要求 |
---|---|---|
shipFromPartyId | 订单将从哪个供应商仓库完成.如果没有指定,结果将包含所有仓库的订单.
类型: string | No |
limit | 返回记录的数量限制.
类型: 整数 | 没有 |
createdAfter | 在此日期和时间之后可用的运输标签将包括在结果中.必须是ISO-8601日期/时间格式.
类型: string (date-time) | 是的 |
createdBefore | 在此日期和时间之前可用的运输标签将包括在结果中.必须是ISO-8601日期/时间格式.
类型: string (date-time) | 是的 |
sortOrder | 按订单创建日期进行ASC或DESC排序.
类型: 枚举( SortOrder ) | 没有 |
nextToken | 当有更多的船舶标签超过指定的结果大小限制时,用于分页.该令牌值在前一个API调用中返回.
类型: string | 没有 |
请求示例
GET https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/shipping/v1/shippingLabels?limit=2&createdAfter=2020-02-15T14:00:00-08:00&createdBefore=2020-02-20T00:00:00-08:00&sortOrder=DESC
# getShippingLabels Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
pagination | 如果返回超过100个船标,在响应中返回nextToken进行分页.
类型: string | 没有 |
shippingLabels | 船舶标签列表.
类型: < ShippingLabel > 阵列 | No |
响应示例
{
"pagination": {
"nextToken": "MDAwMDAwMDAwMQ=="
},
"shippingLabels": [
{
"purchaseOrderNumber": "2JK3S9VC",
"sellingParty": {
"partyId": "999US"
},
"shipFromParty": {
"partyId": "ABCD"
},
"labelFormat": "PNG",
"labelData": [
{
"packageIdentifier": "PKG001",
"trackingNumber": "1Z6A34Y60369738804",
"shipMethod": "UPS_GR_RES"
"shipMethodName": "UPS地面住宅"
"内容": "Base 64编码的字符串在这里"
}
]
}, {
"purchaseOrderNumber": "2JK3S9VD",
"销售方": {
"partyId": "999US"
},
"shipFromParty": {
"partyId": "ABCD"
},
"labelFormat": "PNG",
"labelData": [
{
"packageIdentifier": "PKG002",
"trackingNumber": "1Z6A34Y60369738805",
"shipMethod": "UPS_GR_RES"
"shipMethodName": "UPS地面住宅"
"内容": "Base 64编码的字符串在这里"
}
]
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 获取运输标签
getShippingLabel (opens new window) 操作返回您使用采购订单号指定的运输标签信息. 响应包括采购订单的完整运输标签信息,包括标签类型、采购订单细节和运输方式.
你也可以使用这个API来获取任何发货标签的详细信息(在过去6个月的滚动窗口中,在供应商上线API后的7天内).
下图显示了检索一个特定货运标签的整合工作流程
!"Direct Fulfillment "整合工作流程用于检索一个特定的运输标签 (opens new window)
# Business Requirements
- 什么样的标签可以下载?
ZPL和PNG文件格式的标签都被支持.标签内容是以base64字符串格式提供的,所以你可以将字符串转换成所需的标签格式.标签格式的选择是由供应商决定的,他们在直接履行程序的on-boarding过程中决定这一点.
- **应该在什么时候申请运输标签?
ZPL和PNG标签应该只在订单应运的那一天申请.
# 国家具体业务要求
对于运输标签的回复,没有任何国家的具体要求.
# getShippingLabel Request
要请求一个运输标签,请调用getShippingLabel操作并传递下列参数
路径参数
姓名 | Description | 要求 |
---|---|---|
purchaseOrderNumber | 您想退回运输标签的采购订单号.它应该与订单信息中收到的采购订单号相同.
类型: string | 是的 |
请求示例
GET https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/shipping/v1/shippingLabels/2JK3S9VC
# getShippingLabel Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
purchaseOrderNumber | 这个字段将包含这个订单的采购订单号.
类型: string | 是的 |
sellingParty | 销售方或供应商的ID. | 是的 |
shipFromParty | 供应商的仓库代码. | 是的 |
labelFormat | 标签的格式.
enum ( LabelFormat ) | 是的 |
labelData | 提供了这批货物中包裹的详细信息.
类型: < LabelData > 阵列 | 是的 |
响应示例
{
"purchaseOrderNumber": "2JK3S9VC",
"sellingParty": {
"partyId": "999US"
},
"shipFromParty": {
"partyId": "ABCD"
},
"labelFormat": "PNG",
"labelData": [
{
"packageIdentifier": "PKG001",
"trackingNumber": "1Z6A34Y60369738804",
"shipMethod": "UPS_GR_RES"
"shipMethodName": "UPS地面住宅"
"内容": "Base 64 encoded string goes here"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 提交货件确认书
通过submitShipmentConfirmations (opens new window)操作,供应商可以向亚马逊提交发货确认书.您的发货确认书可以让我们有效地跟踪您的发货并通知我们的客户.它包含了关于正在发货的物品信息,包括采购订单号、发货日期、预计交货日期和跟踪号码.
发货确认书使我们能够更有效地与承运人合作,跟踪您的货物.
缺乏有效的货件确认可能会导致
-对货件的可见度不足.
- 在核对实物装运和采购订单时出现错误.
-手动跟进解决差异.
# 验证成功提交的货件确认书
供应商可以通过 "Vendor Central >Orders>Direct Fulfillment Orders "或使用Direct Fulfillment Transaction Status API来验证其发货确认的状态.允许系统在提交后10分钟内查看状态.如果Vendor Central没有显示发货确认的正确数值,请在Vendor Central打开一个 "Contact Us "案例.关于创建发货确认的信息请参考业务需求部分.
下图显示了提交货件确认书的整合工作流程
# Business Requirements
-您应该在订单从您的仓库发货后的4小时内使用此API来确认订单的发货.
-对于楼层拒绝的货物,将 "shipmentStatus "字段值设置为 "FLOOR/_DENIAL".
所有的采购订单项目都应该出现在发货确认书中. 不允许部分订单的执行. 如果有任何项目无法执行,供应商应该将订单作为地面拒绝处理.
项目的 "itemSequenceNumber "应该与订单信息中收到的一样.
"buyerProductIdentifier "或 "vendorProductIdentifier "是必须在发货确认中发送的.您需要发送与采购订单中收到的相同的值.
-对于供应商自己的承运人,必须发送 "scacCode".
- 如果货物标签是由亚马逊提供的,那么容器部分是可选的,因为亚马逊可以访问包裹信息.物品部分是必须提交的.
-货件确认中的容器必须有一个指定的shipMethod.
# 国家具体业务要求
无
# submitShipmentConfirmations Request
要提交货件确认,请调用submitShipmentConfirmations (opens new window)操作并传递以下参数
主体参数
姓名 | Description | 要求 |
---|---|---|
shipmentConfirmations | 确认的货物清单
类型: < ShipmentConfirmation > 阵列 | 是的 |
请求示例
POST https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/shipping/v1/shipmentConfirmations
{
"shipmentConfirmations": [
{
"purchaseOrderNumber": "PO00050003",
"shipmentDetails": {
"shippedDate": "2019-08-07T19:56:45.632Z",
"shipmentStatus": "SHIPPED",
"isPriorityShipment": true,
"预计交付日期": "2019-08-07T19:56:45.632Z"
},
"销售方": {
"partyId": "VENDORCODE"
},
"shipFromParty": {
"partyId": "vendorwarehousecode"
},
"项目": [
{
"itemSequenceNumber": 1,
"buyerProductIdentifier": "ASIN001",
"vendorProductIdentifier": "9782700001659",
"shippedQuantity": {
"金额": 100,
"unitOfMeasure": "每个"
}
},
{
" itemSequenceNumber": 2,
"buyerProductIdentifier": "ASIN002",
"vendorProductIdentifier": "9782700001659",
"shippedQuantity": {
"金额": 100,
"unitOfMeasure": "每个"
}
},
{
" itemSequenceNumber": 3,
"buyerProductIdentifier": "ASIN003",
"vendorProductIdentifier": "9782700001659",
"shippedQuantity": {
"金额": 100,
"unitOfMeasure": "每个"
}
},
{
" itemSequenceNumber": 4,
"buyerProductIdentifier": "ASIN004",
"vendorProductIdentifier": "9782700001659",
"shippedQuantity": {
"金额": 100,
"unitOfMeasure": "每个"
}
}
],
"容器": [
{
"容器类型": "纸箱",
"containerIdentifier": "123",
"trackingNumber": "TRACK001",
"scacCode": "SCAC001",
"carrier": "ABCD001",
"shipMethod": "UPS",
"尺寸": {
"长度": "10",
"宽度": "10",
"高度": "10",
"unitOfMeasure": "IN"
},
"重量": {
"unitOfMeasure": "KG",
"值": "10"
},
"packedItems": [
{
"itemSequenceNumber": 1,
"buyerProductIdentifier": "ASIN001",
"packedQuantity": {
"数量": 100,
"unitOfMeasure": "每个"
}
}
]
},
{
"容器类型": "纸箱",
"containerIdentifier": "234",
"trackingNumber": "TRACK002",
"scacCode": "SCAC001",
"carrier": "ABCD001",
"shipMethod": "UPS",
"尺寸": {
"长度": "10",
"宽度": "10",
"高度": "10",
"unitOfMeasure": "IN"
},
"重量": {
"unitOfMeasure": "KG",
"值": "10"
},
"packedItems": [
{
" itemSequenceNumber": 2,
"buyerProductIdentifier": "ASIN002",
"packedQuantity": {
"数额": 100,
"unitOfMeasure": "每个"
}
}
]
},
{
"容器类型": "纸箱",
"containerIdentifier": "ABCD",
"trackingNumber": "TRACK003"
"scacCode": "SCAC001",
"carrier": "ABCD001",
"shipMethod": "UPS",
"尺寸": {
"长度": "10",
"宽度": "10",
"高度": "10",
"unitOfMeasure": "IN"
},
"重量": {
"unitOfMeasure": "KG",
"值": "10"
},
"packedItems": [
{
" itemSequenceNumber": 3,
"buyerProductIdentifier": "ASIN003",
"packedQuantity": {
"数量": 100,
" unitOfMeasure": "每个"
}
}
]
},
{
"容器类型": "纸箱",
"containerIdentifier": "id12",
"trackingNumber": "TRACK004",
"scacCode": "SCAC001",
"carrier": "ABCD001",
"shipMethod": "UPS",
"尺寸": {
"长度": "10",
"宽度": "10",
"高度": "10",
"unitOfMeasure": "IN"
},
"重量": {
"unitOfMeasure": "KG",
"值": "10"
},
"packedItems": [
{
" itemSequenceNumber": 4,
"buyerProductIdentifier": "ASIN004",
"packedQuantity": {
"数量": 100,
"unitOfMeasure": "每个"
}
}
]
}
]
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# submitShipmentConfirmations Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
transactionId | GUID来识别这个交易.这个值可以和交易状态API一起使用来返回这个交易的状态.
类型: string | 是的 |
响应示例
{
"transactionId": "20190905010908-8a3b6901-ef20-412f-9270-21c021796605"
}
2
3
# 提交货件状态更新
重要的是货件状态更新仅适用于VOC(供应商自己的承运人)供应商.这意味着供应商使用自己的承运人运送货物,不使用亚马逊承运人将货物运送给客户.供应商将最终承担运输费用和将货物运送给客户的责任.
submitShipmentStatusUpdates (opens new window)操作允许供应商更新正在运往最终客户的货件的运输状态事件.VOC供应商需要在运输阶段更新货件状态(commonly known as scans)
这些信息将在 "您的订单 "页面上转发给亚马逊客户,从而提高订单跟踪和交付过程的可见度.
如果不更新货物状态更新,会导致不良的运营KPI,如低扫描率,最终导致仓库停运.
# 验证成功提交的货件状态更新
供应商可以通过 "Vendor Central >Orders>Direct Fulfillment Orders "或使用Direct Fulfillment Transaction Status API来验证他们的货件状态更新.一旦提交,允许系统在10分钟内看到状态.如果Vendor Central没有显示货件确认的正确数值,请在Vendor Central打开一个 "Contact Us "案例.关于创建货件确认的信息请参考业务需求部分.
下图显示了提交货件状态更新的整合工作流程
# Business Requirements
-只有当您使用自己的承运人将货物运送给客户时,您才应该使用此API,即您是一个VOC (Vendor Own Carrier)供应商.
-您只能在货件通过货件确认API或Vendor Central货件确认后使用此API来更新货件的状态.
-货件状态API中的trackingNumber应与货件确认中提供的trackingNumber100%匹配,否则货件状态更新将失败.
-一次货件状态更新的API调用应该对应一个物理包裹.您可以在一次API调用中更新多个包裹的货件状态,方法是将它们作为一个货件状态更新的数组来批处理.
一个直接履行的订单可能会导致几个实物包裹交付给客户. 因此,需要几个发货状态更新来反映整个订单的完整发货状态.
供应商应尽可能按照亚马逊发货状态指南发送发货状态.
-对于预定交货的订单,供应商应该发送 "*shipmentSchedule "*数组,指定预计交货时间和交货窗口.
# 国家具体业务要求
无
# 附加字段说明
1)"statusCode "和 "reasonCode "
这些字段是EDI标准中使用的标准代码(例如ISA X12和EDIFACT),用于提供特定的状态事件和状态事件的原因.我们期望 "statusCode "和 "reasonCode "的特定组合,以确定到最终客户的货物运输阶段的一个事件.
这些是我们支持的状态和原因代码以及它们与当前Vendor Central的对应关系
EDIFACT状态代码 | EDIFACT原因代码 | 操作描述 | Vendor Central用户界面等效 |
---|---|---|---|
404 | 117 | 由于大规模的事故,货物被延误了 | 延误了 |
301 | 000 | 货物交付给客户 | DELIVERED |
101 | 000 | 货物已离开FC | DEPARTED/_FROM/FC |
201 | 000 | 货物到达承运人设施 | IN_TRANSIT |
409 | 000 | 承运人丢失了货物 | LOST |
302 | 000 | 货物已出库待运 | OUT_FOR_DELIVERY |
407 | 000 | 收件人拒绝接受货件 | REJECTED |
416 | 000 | 货物无法送达,将被销毁 | 无法送达 |
X12状态代码 | X12原因代码 | 操作说明 | 供应商中央用户界面等效 |
---|---|---|---|
DE | AF | 由于大规模的事故,货物被延误了 | DELAYED |
D1 | NS | 货物交付给客户 | DELIVERED |
XB | NS | 货物已离开FC | DEPARTED/_FROM/FC |
O1 | NS | 货物已到达承运人设施 | IN_TRANSIT |
CA | PL | 承运人丢失了货物 | LOST |
OD | NS | 货物已出库待运 | OUT_FOR_DELIVERY |
A7 | AM | 收件人拒绝接受货件 | REJECTED |
AP | BG | 货物无法送达,将被销毁 | 无法送达 |
# submitShipmentStatusUpdates Request
要提交货件状态更新,请调用submitShipmentStatusUpdates (opens new window)操作并传递以下参数
主体参数
姓名 | Description | 要求 |
---|---|---|
shipmentStatusUpdates | 确认的货物清单.
类型: < ShipmentStatusUpdate > 阵列 | 是的 |
请求示例
POST https://sellingpartnerapi-na.amazon.com/ /vendor/directFulfillment/shipping/v1/shipmentStatusUpdates
{
"shipmentStatusUpdates": [
{
"purchaseOrderNumber": "DX00050015",
"sellingParty": {
"partyId": "999US"
},
"shipFromParty": {
"partyId": "ABCD"
},
"statusUpdateDetails": {
"trackingNumber": "TRACK005",
"statusCode": "D1",
"reasonCode": "NS",
"statusDateTime": "2020-08-07T19:56:45Z",
"statusLocationAddress": {
"城市": "西雅图",
"postalCode": "98101",
"stateOrRegion": "华盛顿",
"countryCode": "美国"
}
}
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# submitShipmentStatusUpdates Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
transactionId | GUID来识别这个交易.这个值可以和交易状态API一起使用来返回这个交易的状态.
类型: string | 是的 |
响应示例
{
"transactionId": "20190905010908-8a3b6901-ef20-412f-9270-21c021796605"
}
2
3
# 获取装箱单
getPackingSlips (opens new window)操作返回符合指定条件的订单的包装单列表.如果你需要获得特定订单的包装单,请使用[getPackingSlip](doc vvendor-direct-fulfillment-shipping-api-v1-reference#get-vendordirectfulfillmentshippingv1packingslipspurchaseordernumber) operation instead.
**注意:**这是一个受限操作,因此需要一个受限数据令牌(RDT)进行授权.更多信息,请参见Tokens API用例指南 (opens new window).
你应该使用这个API来获取可供你执行的采购订单的装箱单.亚马逊建议供应商在营业时间内至少每小时检查一次订单.根据你的业务量,你可以选择更频繁的检查.你可以在一次API调用中获得最多100张装箱单.如果有超过100张装箱单,你可以在下一次请求中使用 nextToken值作为参数来获得下一组.
下图显示了检索包装单时的整合工作流程
# getPackingSlips Request
要检索包装单,请调用getPackingSlips (opens new window)操作并传递以下参数
查询参数
姓名 | Description | 要求 |
---|---|---|
shipFromPartyId | 订单将从哪个供应商仓库完成.如果不指定,结果将包含所有仓库的订单.
类型: string | No |
limit | 返回记录的数量限制.
类型: 整数 | 没有 |
createdAfter | 在此日期和时间之后出现的包装单将包括在结果中.必须是ISO-8601日期/时间格式.
类型: string (date-time) | 是的 |
createdBefore | 在此日期和时间之前可用的包装单将包括在结果中.必须是ISO-8601日期/时间格式.
类型: string (date-time) | 是的 |
sortOrder | 按包装单创建日期进行ASC或DESC排序.
类型: 枚举( SortOrder ) | 没有 |
nextToken | 当有更多的订单超过指定的结果大小限制时,用于分页.该令牌值在之前的API调用中返回.
类型: string | 没有 |
请求示例
GET https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/shipping/v1/packingSlips?createdBefore=2020-06-12T12:00:00-08:00&createdAfter=2020-06-12T00:00:00-08:00&limit=2&sortOrder=DESC
# getPackingSlips Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
pagination | 如果返回超过100个订单,则在响应中返回nextToken进行分页.
类型: string | 没有 |
packingSlips | 包括包装单的详细信息.
类型: < PackingSlip > 阵列 | No |
响应示例
{
"payload": {
"分页"{
"nextToken": "NEBxNEBxNEBxNR=="
},
"packingSlips": [
{
"purchaseOrderNumber": "UvgABdBjQ",
"内容": "base64编码的字符串"
"contentType": "application/pdf"
}, {
"purchaseOrderNumber": "VvgCDdBjR",
"内容": "base64编码的字符串"
"contentType": "application/pdf"
}
]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 获取包装滑块
getPackingSlip (opens new window) 操作返回您使用采购订单号指定的特定包装单的信息. 响应包括包装单的base64编码字符串. 内容类型将总是 "application/pdf".
下图显示了检索包装单时的整合工作流程
# Business Requirements
- **所有订单都需要装箱单吗?
只有在企业对企业的订单或礼品订单中才需要装箱单.当 "isPslipRequired "字段的值为真时,该订单就需要装箱单.
# getPackingSlip Request
要返回装箱单,请调用getPackingSlip (opens new window)操作并传递以下参数
路径参数
姓名 | Description | 要求 |
---|---|---|
purchaseOrderNumber | 你想要的包装单的购买订单号码.
类型: string | 是的 |
请求示例
GET https://sellingpartnerapi-na.amazon.com /vendor/directFulfillment/shipping/v1/packingSlips/UkP3YkKDr
# getPackingSlip Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
purchaseOrderNumber | 该批货物的采购订单号.
类型: string | No |
packingSlip | 包装单信息. 类型 PackingSlip | 没有 |
响应示例
{
"payload": {
"purchaseOrderNumber": "UvgABdBjQ",
"内容": "base64编码的字符串"
"contentType": "application/pdf"
}
}
2
3
4
5
6
7
# 获取客户发票
The [getCustomerInvoices](https: //spapi.cyou/zh/references/vendor-direct-fulfillment-shipping-api-v1-reference.html#get-vendordirectfulfillmentshippingv1customerinvoices)操作返回所有符合过滤条件的采购单的客户发票标准.该API的使用仅在印度地区是强制性的,在其他地区不需要.亚马逊建议供应商在营业时间内至少每小时检查一次客户发票.根据你的业务量你可以选择更频繁的检查.你可以在一次API调用中获得最多100张客户发票.如果有超过100张客户发票,你可以在下一次请求中使用nextToken值作为参数来获得下一组客户发票.
**注意:**这是一个受限的操作,因此需要一个受限数据令牌(RDT)进行授权.更多信息,见Tokens API用例指南 (opens new window).
下图显示了检索客户发票时的整合工作流程
# getCustomerInvoices Request
要返回客户发票,请调用getCustomerInvoices (opens new window)操作并传递以下参数
查询参数
姓名 | Description | 要求 |
---|---|---|
shipFromPartyId | 订单将从哪个供应商仓库完成.如果没有指定,结果将包含所有仓库的订单.
类型: string | No |
limit | 返回记录的数量限制.
类型: 整数 | 没有 |
createdAfter | 在此日期和时间之后可用的订单将包括在结果中.必须采用ISO-8601日期/时间格式.
类型: string (date-time) | 是的 |
createdBefore | 在此日期和时间之前可用的订单将包括在结果中.必须采用ISO-8601日期/时间格式.
类型: string (date-time) | 是的 |
sortOrder | 按订单创建日期进行ASC或DESC排序.
类型: 枚举( SortOrder ) | 没有 |
nextToken | 当有更多的船舶标签超过指定的结果大小限制时,用于分页.该令牌值在前一个API调用中返回.
类型: string | 没有 |
请求示例
GET https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/shipping/v1/customerInvoices?limit=2&createdAfter=2020-02-15T14:00:00-08:00&createdBefore=2020-02-20T00:00:00-08:00&sortOrder=DESC
# getCustomerInvoices Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
pagination | 如果返回超过100张客户发票,则在响应中返回nextToken进行分页.
类型: string | No |
customerInvoices | 客户发票的清单.
类型: < CustomerInvoice > 阵列 | No |
响应示例
{
"pagination": {
"nextToken": "MDAwMDAwMDAwMQ=="
},
"customerInvoices": [
{
"purchaseOrderNumber": "PO98676856",
"内容": "Base 64 content goes here"
}
]
}
2
3
4
5
6
7
8
9
10
11
# 获取客户发票
getCustomerInvoice (opens new window)操作返回您使用采购订单号指定的客户发票信息. 响应包括该采购订单的完整客户发票信息.
你也可以使用这个API来获取任何客户发票的细节(在过去6个月的滚动窗口中的7天时间范围内,在供应商上线后).
下图显示了返回客户发票的整合工作流程
!"Direct Fulfillment "整合工作流程用于检索客户发票 (opens new window)
# Business Requirements
- 什么样的客户发票可以下载?
客户发票是一个PDF文件,是以二进制64字符串格式编码的.所有印度地区的采购订单都应该创建一个客户发票,该发票应该与货物一起发送.
# 国家具体业务要求
只有印度地区需要使用客户发票的API.
# getCustomerInvoice Request
要返回客户发票,请调用getCustomerInvoice (opens new window)操作并传递以下参数
路径参数
姓名 | Description | 要求 |
---|---|---|
purchaseOrderNumber | 要退回发票的货物的采购订单号码.
类型: string | 是的 |
请求示例
GET https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/shipping/v1/shippingLabels/2JK3S9VC
# getCustomerInvoice Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
purchaseOrderNumber | 这个订单的采购订单号.
类型:字符串 | 是的 |
content | Base64-编码的客户发票.
类型: string | 是的 |
响应示例
{
"payload": {
"purchaseOrderNumber": "PO98676856",
"内容": "base 64编码的字符串"
}
}
2
3
4
5
6
# 什么是直接履行支付的API?
供应商可以使用Direct Fulfillment Payments API与亚马逊交换付款相关文件. submitInvoice操作允许供应商向亚马逊发送确认和发货的订单的供应商发票.
以下操作包含在支付API中
操作 | HTTP方法 | 路径 | 描述 |
---|---|---|---|
[submitInvoice](doc: vvendor-direct-fulfillment-payments-api-v1-reference#post-vendordirectfulfillmentpaymentsv1invoices) | POST | /vendor/directFulfillment/payments/v1/invoices | 提交单个或多个供应商的发票给Amazon. |
# 提交发票
submitInvoice (opens new window)操作允许供应商提交供应商发票,要求亚马逊为已发货的商品付款.使用此API,供应商可以在一次API调用中提交多张发票.
物品只有在确认并运送到亚马逊后才能开具发票.否则发票将被拒绝.有正确信息的发票将被亚马逊处理,而不需要任何人工干预这意味着供应商会更快地收到付款.信息不正确的发票会在亚马逊的收款系统中被拒绝,所以发送正确的信息是非常重要的.参见业务要求部分,了解如何创建具有正确信息的发票.
# 提交发票的平行测试
供应商在开始使用submitInvoice操作进行付款处理之前,需要完成与我们的支付系统的平行测试.当供应商开始使用API发送发票时,平行测试阶段开始.在平行测试阶段供应商为所有发货的订单同时发送纸质和API发票. 供应商需要进行平行测试,直到至少5到10个EDI发票文件的内容得到验证. 平行测试是用生产PO和发票进行的. 平行测试完成后,亚马逊API团队会与您联系或者如果你的发票有任何内容上的差异. 当供应商收到电子邮件说平行测试已经完成,他们不再需要发送纸质发票. 从那一刻起,他们可以通过使用API发送发票来处理他们的付款.
# 验证成功提交的发票
交易状态API并不显示发票处理的实际状态,它只显示提交发票的语义验证状态. 供应商可以通过 "Vendor Central > Payments > "验证原始/更新版本发票的实际状态Direct Fulfillment Invoices". 关于如何使用交易状态API的更多信息,请参考交易状态的业务用例文档. 一旦提交,允许系统最多需要15分钟来显示原始/更新版本. 如果Vendor Central没有显示更新发票的正确数值,请在Vendor Central打开一个 "联系我们 "案例.
下图显示了为直接履行确认和发货的订单提交发票的整合工作流程
# Business Requirements
- 发票号码必须是唯一的,它们不应该被重复使用(甚至在一年之后).
-如果使用API发送的发票因数据不正确而失败,但纸质发票有正确的数据,那么供应商应通过API用正确的数据更新发票,使用相同的发票ID.
如果一张发票有不正确的数据(纸质和API),那么这张发票就会被取消,应该用新的**发票ID.**发送一张新的发票
不应发送总金额=0的发票,因为这将导致发票失败.**
亚马逊要求在地址段中提供完整的地址信息,以符合税收规定. 这对账单-收件人来说尤其重要. 对于这个段,亚马逊收款人系统要求精确匹配.
发票中发送的付款条件应与与亚马逊买家商定的付款条件一致.
项目产品标识符应与匹配的采购订单中发送给供应商的订单项目产品标识符相匹配.
-发票的总金额应等于项目、费用和津贴的总和.
每一行的**税额总和必须等于标题层的税额总和.
发票上的总数量应与所有项目的数量之和相符.
-每个不同的费用和津贴都必须在抬头层逐项列出(例如运费、包装费、小额订购费等.).
# 国家具体业务要求
在印度,通过API不支持直接履行的发票
Functionality | 印度 | 欧洲 | North America |
---|---|---|---|
发票类型 | Not supported. | 发票类型应始终为 "发票". | 发票类型应始终为 "发票". |
日期 | Not supported. | 必须是 "现在 "或之前. | 必须是 "现在 "或之前. |
HSN号码 | Not supported. | 未使用. | 未使用. |
在行和头层的税收类型 | Not supported. | 要发送的税收类型. | 未使用. |
税务登记号码 | Not supported. | 增值税号码. | VAT号码. |
在行和头层的税收细节 | Not supported. | 如果一个项目适用多个税种,则必须多次发送税收细节部分,并为该项目提供适当的税收类型. 这同样适用于发票的总金额. 还有一个额外的税种叫做 "国内增值税",可以用来提交当地货币的税额.为了处理国内增值税,你必须使用与 "增值税 "税种相同的税率. | 如果一个项目适用多个税种,则必须多次发送税收详情部分,并为该项目提供适当的税收类型. 这同样适用于发票的总金额. |
汇给对方 | Not supported. | 税收和地址的详细信息(vendor)谁将会收到已发货物品的付款.这是 required. | 将收到发运物品的付款的一方(vendor)的税务和地址详情.这是 required. |
发货方 | Not supported. | 供应商代码或仓库代码以及物品发运方的地址. | 供应商代码或仓库代码以及物品发运方的地址. |
发货方 | Not supported. | 亚马逊ID或仓库代码以及物品将被运往的一方的地址. | Amazon ID或仓库代码以及物品将被运往的一方的地址. |
帐单给对方 | Not supported. | 税收和地址的详细信息,该方(Amazon)将为已发货的物品开票. 这个字段是 required. | 税收和地址的详细信息(Amazon)谁将会对已发货的物品开具账单. 这个字段是 required. |
亚马逊产品标识符和外部产品标识符 | Not supported. | 这些值中至少有一个是必须的.标识符必须与订单中收到的相同. | 这些值中至少有一个是必需的.标识符必须与订单中收到的内容相同. |
净成本 | Not supported. | 这个字段是 required. | 这个字段是 required. |
采购订单编号 | Not supported. | 一张发票可以有多个订单的信息.对于不同的行项目,应相应发送PO号. Required. | 一张发票可以有多个订单的信息.对于不同的行项目,应相应地发送PO号码. Required. |
Additional Details | Not supported. | 该字段用于销售方为特殊目的提交额外的细节.例如,在波兰语分批付款发票的情况下,销售方必须发送类型为 "SUR"、语言代码为 "PL "的细节 "mechanizm podzielonej płatności". | 未使用 |
referenceNumber | Not supported. | 未使用. | 未使用. |
# submitInvoice Request
要提交一张或多张发票,请调用submitInvoice (opens new window)操作并传递以下参数
主体参数
姓名 | Description | 要求 |
---|---|---|
invoices | 提交发票操作的请求模式.
类型: < InvoiceDetail > 数组 | 是的 |
请求示例
POST https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/payments/v1/invoices
{
"InvoiceNumber": "0092590411",
"InvoiceDate": "2020-03-13T11:16:24Z",
"remitToParty": {
"partyId": "YourVendorCode",
"地址": {
"名称": "供应商名称",
"addressLine1": "供应商地址1",
"addressLine2": "供应商地址2"
"addressLine3": "供应商地址3"
"城市": "DECity",
"县": "Schwabing",
"区": "München",
"stateOrRegion": "Bayern",
"postalCode": "DEPostCode",
"countryCode": "DE"
},
"taxRegistrationDetails": [
{
"taxRegistrationType": "增值税",
"taxRegistrationNumber": "DE123456789"
}
]
},
"shipFromParty": {
"partyId": "ABCD"
},
"billToParty": {
"partyId": "5450534005838",
"地址": {
"name": "Amazon EU SARL",
"addressLine1": "Marcel-Breuer-Str. 12",
"城市": "München",
"县": "Schwabing",
"区": "München",
"stateOrRegion": "Bayern",
"postalCode": "80807",
"countryCode": "DE"
},
"taxRegistrationDetails": [
{
"taxRegistrationType": "增值税",
"taxRegistrationNumber": "DE814584193"
"taxRegistrationAddress": {
"名称": "Amazon EU SARL",
"addressLine1": "Marcel-Breuer-Str. 12",
"城市": "München",
"postalCode": "80807",
"countryCode": "DE"
},
"taxRegistrationMessage": "txmessage"
}
]
},
"shipToCountryCode": "DE",
"paymentTermsCode": "Basic",
"InvoiceTotal": {
"currencyCode": "EUR",
"金额": "1428.00"
},
"taxTotals": [
{
"taxType": "CGST",
"taxRate": "0.19",
"taxAmount": {
"currencyCode": "EUR",
"数额": "228.00"
},
"taxableAmount": {
"currencyCode": "EUR",
"金额": "1200.00"
}
}
],
"项目": [
{
"itemSequenceNumber": "1",
"buyerProductIdentifier": "B00IVLAABC",
"invoicedQuantity": {
"金额": 1,
"unitOfMeasure": "每个"
},
"netCost": {
"currencyCode": "EUR",
"金额": "1200.00"
},
"purchaseOrderNumber": "D3rC3KTxG",
"vendorOrderNumber": "0092590411",
"hsnCode": "76.06.92.99.00",
"taxDetails": [
{
"taxType": "CGST",
"taxRate": "0.19",
"taxAmount": {
"currencyCode": "EUR",
"数额": "228.00"
},
"taxableAmount": {
"currencyCode": "EUR",
"金额": "1200.00"
}
}
]
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# submitInvoice Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
transactionId | GUID来识别这个交易.这个值可以和交易状态API一起使用来返回这个交易的状态.
类型: string | No |
响应示例
{
"transactionId": "20190905010908-8a3b6901-ef20-412f-9270-21c021796605"
}
2
3
# 什么是直接履行库存的API?
供应商可以使用直接履行库存API与亚马逊交换库存水平. 我们支持库存馈送API,它让供应商向亚马逊发送库存馈送,用于直接履行目录.
包括以下操作
Operation | HTTP方法 | 路径 | Description |
---|---|---|---|
submitInventoryUpdate | post | /vendor/directFulfillment/inventory/v1/warehouses/{warehouseId}/items | 向亚马逊提交部分或全部的库存细节信息. |
# 提交库存更新
有两种类型的库存信息可以使用该API提交.当 "isFullUpdate "设置为 "true "时,该信息是一个完整的更新.当 "isFullUpdate "设置为 "false "时,该信息是对库存的部分更新.这两个选项都描述如下.
当你选择全面更新时,该操作会更新特定仓库的全部库存. 你必须发送仓库中所有物品的信息. 对于任何不包括的物品,可用数量将被更新为零. 该操作只能用于执行全面的仓库同步,而且只能在你没有能力将缺货物品的库存更新为零时使用. 如果你可以管理所有物品的库存,亚马逊*不建议你选择全面更新.
当你选择部分更新时,你只更新仓库中选定物品的库存(s)_这通常是每隔几小时调用一次,以更新自上次更新以来即将缺货或已缺货的物品.
# 验证成功提交的订单库存信息
供应商可以使用Vendor Central或使用交易状态API来验证库存更新的状态.关于如何使用交易状态API的更多信息,请参见交易状态API的业务用例文档.一旦提交,允许系统最多需要15分钟来显示原始/更新的版本.如果Vendor Central没有显示正确的确认值,请在Vendor Central打开一个 "联系我们 "案例.
下图显示了提交库存更新的整合工作流程.
# Business Requirements
每个仓库需要一个库存信息. 如果一个供应商有多个仓库,那么需要提交多个库存信息,每个信息包含特定仓库的项目.
对于一个完整的更新,仓库中所有有库存的物品都应该被提交. 任何没有提交的物品在亚马逊中的可用性将被设置为零,并且不会为这些不可用的物品发出新订单.
对于部分更新,只有那些库存数量必须被更新的商品应该被包括在内. 其余不在部分更新中的商品将保持不变.
当使用isObsolete请求主体参数将一个物品的状态设置为过时时,该物品将被标记为永久不可用. 如果该物品变得可用并且重新有库存,你必须将isObsolete设置为false,这样该物品将被标记为重新有库存.
-如果一个商品被多次拒绝使用订单确认,那么这些商品将被标记为 "缺货",这可能会影响你的履行指标.
# 国家具体业务要求
不存在任何国家的具体要求.
# submitInventoryUpdate Request
要提交库存更新,请调用submitInventoryUpdate (opens new window)操作并传递以下参数
路径参数
姓名 | Description | 要求 |
---|---|---|
warehouseId | 要更新库存的仓库的标识符.
类型: string | 是的 |
身体参数
姓名 | Description | 要求 |
---|---|---|
inventory | Inventory feed request to update all or partial items for a given warehouse. | 是的 |
请求示例
POST "https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/inventory/v1/warehouses/ABCD/items"
{
"库存"{
"sellingParty": {
"partyId": "VENDORID"
},
"isFullUpdate": false,
"项目": [
{
"buyerProductIdentifier": "ABCD4562",
"vendorProductIdentifier": "7Q89K11",
"availableQuantity": {
"数量": 10,
"unitOfMeasure": "每个"
},
"isObsolete": false
}, {
"buyerProductIdentifier": "ABCD4563"
"vendorProductIdentifier": "7Q89K12",
"availableQuantity": {
"数量": 15,
"unitOfMeasure": "每个"
},
"isObsolete": false
}, {
"buyerProductIdentifier": "ABCD4564"
"vendorProductIdentifier": "7Q89K13",
"availableQuantity": {
"数量": 20,
"unitOfMeasure": "每个"
},
"是过时的": false
}
]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# submitInventoryUpdate Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
transactionId | GUID来识别这个交易.这个值可以和交易状态API一起使用来返回这个交易的状态.
类型: string | No |
响应示例
{
"transactionId": "20190905010908-8a3b6901-ef20-412f-9270-21c021796605"
}
2
3
# 什么是直接履行交易状态API?
供应商可以使用这个API来检查其POST交易的交易状态.
包括以下操作
操作 | HTTP方法 | 路径 | 描述 | 说明 |
---|---|---|---|---|
getTransactionStatus (opens new window) | GET | /vendor/directFulfillment/transactions/v1/transactions/{transactionId} | 获取POST请求的状态. |
# 获取交易状态
供应商可以使用getTransactionStatus (opens new window)操作来检查POST交易的状态.当使用供应商API中的某些POST操作向亚马逊发布请求时,例如submitAcknowledgement (opens new window)或submitShipmentConfirmations (opens new window),成功的响应包含一个唯一标识交易的交易ID.亚马逊将同步处理该交易
请参阅本指南其他章节中相应的集成工作流程图,了解何时调用getTransactionStatus操作来获取交易状态.
亚马逊通过此API提供POST交易的最终处理状态,如submitAcknowledgement和submitShipmentConfirmations.我们强烈建议供应商使用此API检查状态,以确保交易被成功处理.如果发生错误,您将收到错误细节,以便您可以纠正交易并重新提交.
交易状态 | 定义 |
---|---|
处理中 | 亚马逊收到的API交易正在处理中. 处理还没有完成. 检查每个API操作的SLA,了解完成处理的预期时间. |
成功 | 亚马逊成功处理了该API事务. |
失败 | 该API交易在处理过程中失败了. 错误细节将在getTransactionStatus响应体中提供. |
注意
交易状态支持以下的直接履行API
描述 | API部分 | 操作 |
---|---|---|
确认订单 | 直接履行订单 | 提交确认函 |
提交发货确认书 | 直接履行发货 | submitShipmentConfirmations |
运送标签请求 | 直接履行运送 | submitShippingLabelRequest |
发货状态更新 | 直接履行发货 | submitShipmentStatusUpdates |
库存更新 | 直接履行库存 | submitInventoryUpdate |
发票 | 直接履行付款 | submitInvoice |
交易状态目前只支持 "处理中 "和 "失败 "状态代码.如果交易状态是 "处理中",并且在30分钟后没有被更新为 "失败",这表明该交易在我们的系统中已经成功处理.未来将支持 "成功 "状态.
# getTransactionStatus Request
要返回交易状态,请调用getTransactionStatus (opens new window)操作并传递以下参数
路径参数
姓名 | Description | 要求 |
---|---|---|
transactionId | 以前在特定交易的POST请求的响应中返回.
类型: string | 是的 |
请求示例
GET https://sellingpartnerapi-na.amazon.com/vendor/directFulfillment/transactions/v1/transactions/20190904190535-eef8cad8-418e-4ed3-ac72-789e2ee6214a
# getTransactionStatus Response
一个成功的响应包括以下内容
姓名 | Description | 要求 |
---|---|---|
transactionId | 在对一个特定交易的发布请求的响应中返回的唯一标识符.
类型: string | 是的 |
status | 交易的当前处理状态.
enum ( Status ) | 是的 |
错误 | 交易失败的错误代码和信息.只在交易状态为'失败'时可用.
类型 ErrorList | 没有 |
响应实例
{
"transactionId": "20190918190535-eef8cad8-418e-456f-ac72-789e2ee6813c",
"状态""失败"
"错误"[
{
"代码": "invalid_order_id"
"消息": "无效的订单ID."
}
]
}
2
3
4
5
6
7
8
9
10
11