# 概述
Selling Partner API的动态沙箱环境允许您在不影响生产数据或触发真实事件的情况下测试您的应用程序.动态沙箱将请求路由到沙箱后端,该后端可以根据请求参数返回真实的响应.通过向沙箱端点而不是生产端点发送请求,您可以测试标准工作流程而不影响生产数据.
本指南介绍了供应商直接履行API的可用动态沙盒操作.关于销售伙伴API沙盒环境的更多信息,请参阅销售伙伴API沙盒.
# 供应商直接履行API中的动态沙盒支持
动态沙盒在以下供应商直接履行API部分中得到了支持
- Vendor Direct Fulfillment Orders API 2021-12-28 version支持所有等同的V1生产操作
- Vendor Direct Fulfillment Shipping API 2021-12-28 version支持相当于V1生产操作的一个子集.支持的操作是[getShippingLabels](doc vendor-direct-fulfillment-shipping-api-2021-12-28-reference#get-vendordirectfulfillmentshipping2021-12-28shippinglabels), [submitShippingLabelRequest](doc: vendor-direct-fulfillment-shipping-api-2021-12-28-reference#post-vendordirectfulfillmentshipping2021-12-28shippinglabels), and [getShippingLabel](doc: vendor-direct-fulfillment-shipping-api-2021-12-28-reference#get-vendordirectfulfillmentshipping2021-12-28shippinglabelspurchaseordernumber).
- Vendor Direct Fulfillment Transactions API 2021-12-28 version支持所有等同的V1生产操作.
使用Vendor Direct Fulfillment SandboxData API 2021-10-28 version来生成虚构的订单,在使用这些API测试时使用
# 使用支持的直接履行API进行测试
以下是使用这些API进行测试的高层次步骤
1.生成用于测试的虚构订单.你生成的订单是为了适应Scenarios.下描述的特定业务测试场景
- 一旦订单被生成,使用它们来执行所支持的供应商直接履行API和操作的业务测试场景.
重要的是您必须***将您的沙盒请求引向销售伙伴API沙盒端点.
# Scenarios
为测试目的,生成的订单支持以下业务场景. 这些是测试订单支持的唯一用例,主要集中在为发货生成标签. 除非另有说明,标签场景会返回一个固定的、标准化的、虚构的标签.
- 生命周期使用这些测试订单来模拟订单的生命周期测试. 采用这些订单的操作的响应可能会有所不同*. 例如,为一个多-箱的订单提出的发货标签请求将导致一个多标签的响应. 同样,在包装尺寸改变时提出的发货标签请求可能导致响应中的发货方式改变.
- LABEL_CASE-SHIP_METHOD_UNASSIGNABLE:使用这些测试订单来模拟 "ship method un-assignable error",当亚马逊无法为一个订单指定运输方式时,就会出现这种情况.
- LABEL_CASE-INCONSISTENT_METHODS: 使用这些测试订单来模拟 "不一致的发货方式 "错误,当亚马逊无法为一个多-箱或多-包订单的所有箱子分配相同的发货方式时,就会出现这种错误
- label_case-carrier_internal_failure使用这些测试订单来模拟 "承运人内部故障 "的错误,当承运人在标签生成过程中抛出一个错误时,就会出现这种情况.
- label_case-sys_internal_failure使用这些测试订单来模拟 "系统内部故障 "的错误,当亚马逊的系统发生意外故障时,就会出现这种情况.
- label_case-dest_address_wrong使用这些测试订单来模拟 "目的地地址错误 "的错误,当客户地址不在运营商的服务范围内时,就会发生这种错误.
- LABEL_CASE-SERVICE_NOT_AVAILABLE:使用这些测试单来模拟 "服务不可用 "的错误,这将在所选的运营商服务不可用或不适用时发生.
# 测试订单ASINs
生成的虚构订单使用一组测试ASINs(亚马逊标准识别码)和相关的包裹特征,如下表所示.
Parcel type | ASIN | 包装特征 |
---|---|---|
小包裹 | TESTASIN001 | 包装尺寸(HxWxL): 1 in. x 1 in. x 2 in. 重量:1磅. |
小包裹 | TESTASIN004 | 包装尺寸(HxWxL): 5 in. x 2 in. x 8 in. 重量:3磅. |
heavy-bulky | TESTASIN002 | 包装尺寸(HxWxL): 50 in. x 50 in. x 30 in. 重量:100磅. |
multi-piece | TESTASIN003 | 包装1 尺寸(HxWxL):36 in. x 37 in. x 24 in. 重量:7磅. 包装2尺寸(HxWxL): 10 in. x 30 in. x 40 in. 重量:3磅. |
# 教程 -为测试生成虚构的订单
使用本教程为上述场景生成测试订单,以便在测试供应商直接履行API时使用.
下面是生成测试订单和相关标签方案的高-级步骤
1.调用[generateOrderScenarios](doc vendor-direct-fulfillment-sandbox-test-data-api-2021-10-28-reference#post-vendordirectfulfillmentsandbox2021-10-28orders) operation, specifying the required party identifiers.
亚马逊收到测试数据请求.如果操作成功,响应包括一个`transactionId`值.收到成功响应后,等待大约30-40分钟再继续.
1.定期调用[getOrderScenarios](doc vendor-direct-fulfillment-sandbox-test-data-api-2021-10-28-reference#get-vendordirectfulfillmentsandbox2021-10-28transactionstransactionid)操作,传递前一步的transactionId
值直到你收到一个成功的响应,并且响应中的status
值表明处理已经结束. 当状态等于SUCCESS或FAILURE时,处理就结束了. 这时,如果状态是SUCCESS,响应包括测试订单,如果状态是FAILURE,则包括一个错误数组,其中包含错误的细节.
# Prerequisites
要完成本教程,你将需要
*来自你为之调用的销售伙伴的授权.更多信息请参见《销售伙伴API开发者指南》. *在您的开发人员配置文件中批准直接-to-Consumer Shipping角色. *在应用程序注册页面中为您的应用程序选择的Direct-to-Consumer Shipping角色.
# 步骤1 -请求虚构的测试订单
通过提供所需的当事方标识符来请求测试订单.要生成测试订单的生成,请调用[generateOrderScenarios](doc vendor-direct-fulfillment-sandbox-test-data-api-2021-10-28-reference#post-vendordirectfulfillmentsandbox2021-10-28orders) operation, passing the following parameters:
# Request parameters
请求正文
Parameter | Description | Required |
---|---|---|
orders | 一个测试订单的数组,由当事方标识符指示. 类型< OrderScenarioRequest > array | 是的 |
请求的例子 ``plain POST http://sandbox.sellingpartnerapi-na.amazon.com//vendor/directFulfillment/ sandbox/2021-10-28/orders
```json
{
"订单": [
{
"sellingParty": {
"partyId": "NIQQM"
},
"shipFromParty": {
"partyId": "CWPQ"
}
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
# Response
一个成功的响应包括以下内容
Parameter | Description | Required |
---|---|---|
transactionId | A GUID由亚马逊分配,用于识别此交易. Type: string | 是的 |
响应的例子
{
"transactionId": "0343fcb3-fd7e-455e-968f-fb4ff7dd4081-20211014222021"
}
2
3
在收到带有transactionId的成功响应后,等待大约30-40分钟,然后继续进行第2步.
# 步骤2 -如果准备好,返回状态和要求的虚构订单
要检索 generateOrderScenarios 交易的状态,以及所请求的测试订单数据(如果可用),请调用 [getOrderScenarios](doc vendor-direct-fulfillment-sandbox-test-data-api-2021-10-28-reference#get-vendordirectfulfillmentsandbox2021-10-28transactionstransactionid) 操作,并传递所需的`transactionId'参数. 你要定期调用这个操作,直到你收到一个包含生成的测试订单的成功响应或者一个包含错误数组的失败响应.,其中包含错误的细节
一旦你收到测试订单,用它们来执行动态发货标签测试,支持的Vendor Direct Fulfillment APIs和操作
# Request parameters
路径参数
Parameter | Description | Required |
---|---|---|
transactionId | 在 generateOrderScenarios 操作的响应中返回的交易标识符. | 是的 |
请求示例 ``plain GET http://sandbox.sellingpartnerapi-na.amazon.com/vendor/directFulfillment/ sandbox/2021-10-28/transactions/0343fcb3-fd7e-455e-968f-fb4ff7dd4081-20211014222021
#### Response
一个成功的响应包括以下内容
<table width="100%">
<thead>
<tr class="header">
<th><strong>Parameter</strong></th>
<th><strong>Description</strong></th>
<th><strong>Required</strong></th>
</tr>
</thead>
<tbody>
<tr class="even">
<td><code>transactionStatus</code></td>
<td>交易细节包括状态.如果交易成功,还包括要求的测试订单数据.<p>类型<a href="https://developer-docs.amazon.com/sp-api/docs/vendor-direct-fulfillment-sandbox-test-data-api-2021-10-28-reference#transaction">Transaction</a> </p></td>
<td>是的</td>
</tr>
</tbody>
</table>
**响应的例子**<br/>
**成功 (HTTP状态代码200) - 响应包含生成的带有订单号的场景测试数据**
```json
{
"transactionStatus":
{
"transactionId": "ff35f39e-e69f-499e-903e-6c4f6c32609f-20210827003315",
"状态": "成功"
"testCaseData":
{
"scenarios": [
{
"scenarioId": "LIFECYCLE",
"订单": [
{
"orderId": "T1111N"
},
{
"orderId": "T1111P"
}
]
},
{
"scenarioId": "label_case-ship_method_unassignable"
"订单": [
{
"orderId": "T5555N"
},
{
"orderId": "T5555P"
}
]
},
{
"scenarioId": "label_case-inconsistent_methods"
"订单": [
{
"orderId": "T2222N"
},
{
"orderId": "T2222P"
}
]
},
{
"scenarioId": "label_case-carrier_internal_failure"
"订单"[
{
"orderId": "T3333N"
},
{
"orderId": "T3333P"
}
]
},
{
"scenarioId": "label_case-sys_internal_failure"
"订单": [
{
"orderId": "T4444N"
},
{
"orderId": "T4444P"
}
]
},
{
"scenarioId": "label_case-dest_address_wrong"
"订单": [
{
"orderId": "T6666N"
},
{
"orderId": "T6666P"
}
]
},
{
"scenarioId": "label_case-service_not_available"
"订单": [
{
"orderId": "T7777N"
},
{
"orderId": "T7777P"
}
]
}
]
}
}
}
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
响应的例子
处理中 (HTTP状态代码404) - 请求正在处理中,测试数据的生成尚未完成.
{
"errors": [
{
"code": "ResourceNotFound"
"消息": "无法通过给定的URI找到资源"
}
]
}
2
3
4
5
6
7
8
响应的例子
失败 (HTTP状态代码200) -测试数据生成失败.更多信息见错误数组.
{
"transactionStatus":
{
"transactionId": "ee8363d3-d061-4b17-b218-d3c80e014c2f-20220105231359",
"status": "FAILED",
"testCaseData":
{
"scenarios": [
{
"scenarioId": "",
"订单": []
}
]
},
"错误": [
{
"代码": "invalid_warehouse_code"
"详细信息": "无效的仓库代码.用正确的仓库代码重试请求"
}
]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22