eBay API CompleteSaleRequest 失败,错误代码为 21843
eBay API CompleteSaleRequest failed with ErrorCode 21843
我想更新 CompleteSaleRequest 中的 TrackingInformation,但它 returns "Invalid job context type"
怎么了?有人有提示吗?
要求:
<?xml version="1.0" encoding="UTF-8"?>
<CompleteSaleRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>ABC...123</eBayAuthToken>
</RequesterCredentials>
<Shipped>true</Shipped>
<ItemID>1234567890</ItemID>
<TransactionID>99999999999</TransactionID>
<OrderID>1234567890-99999999999</OrderID>
<Shipment>
<ShipmentTrackingDetails>
<ShipmentTrackingNumber>12345678987654321</ShipmentTrackingNumber>
<ShippingCarrierUsed>DHL</ShippingCarrierUsed>
</ShipmentTrackingDetails>
</Shipment>
</CompleteSaleRequest>
回复:
<?xml version="1.0" encoding="UTF-8"?>
<GetOrdersResponse xmlns="urn:ebay:apis:eBLBaseComponents">
<Timestamp>2016-03-08T20:58:58.831Z</Timestamp>
<Ack>Failure</Ack>
<Errors>
<ShortMessage>Invalid job context type</ShortMessage>
<LongMessage>The job context object is not supported by Action Service Framework.</LongMessage>
<ErrorCode>21843</ErrorCode>
<SeverityCode>Error</SeverityCode>
<ErrorParameters ParamID="0">
<Value>GetOrders</Value>
</ErrorParameters>
<ErrorParameters ParamID="1">
<Value>CompleteSaleRequestType</Value>
</ErrorParameters>
<ErrorClassification>RequestError</ErrorClassification>
</Errors>
<Version>953</Version>
<Build>E953_INTL_APIXO_17829668_R1</Build>
</GetOrdersResponse>
如果您查看来自 eBay 的响应,您会发现它包含在 GetOrdersResponse 元素中。由于您正在调用 CompleteSale 操作,因此您希望它位于 CompleteSaleResponse 元素中。原因在于 eBay 如何路由 API 请求。由于所有操作都进入相同的 URL 服务器需要一种方法来确定您正在调用哪个操作。这是通过查看请求的 HTTP headers 来完成的。 body 的内容在此路由期间被忽略。 HTTP header X-EBAY-API-CALL-NAME 的值应该包含您正在调用的操作的名称。我预计目前是 GetOrders。如果您将 header 设置为 CompleteSale,操作将被更正,您应该得到正确的响应。
我想更新 CompleteSaleRequest 中的 TrackingInformation,但它 returns "Invalid job context type"
怎么了?有人有提示吗?
要求:
<?xml version="1.0" encoding="UTF-8"?>
<CompleteSaleRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>ABC...123</eBayAuthToken>
</RequesterCredentials>
<Shipped>true</Shipped>
<ItemID>1234567890</ItemID>
<TransactionID>99999999999</TransactionID>
<OrderID>1234567890-99999999999</OrderID>
<Shipment>
<ShipmentTrackingDetails>
<ShipmentTrackingNumber>12345678987654321</ShipmentTrackingNumber>
<ShippingCarrierUsed>DHL</ShippingCarrierUsed>
</ShipmentTrackingDetails>
</Shipment>
</CompleteSaleRequest>
回复:
<?xml version="1.0" encoding="UTF-8"?>
<GetOrdersResponse xmlns="urn:ebay:apis:eBLBaseComponents">
<Timestamp>2016-03-08T20:58:58.831Z</Timestamp>
<Ack>Failure</Ack>
<Errors>
<ShortMessage>Invalid job context type</ShortMessage>
<LongMessage>The job context object is not supported by Action Service Framework.</LongMessage>
<ErrorCode>21843</ErrorCode>
<SeverityCode>Error</SeverityCode>
<ErrorParameters ParamID="0">
<Value>GetOrders</Value>
</ErrorParameters>
<ErrorParameters ParamID="1">
<Value>CompleteSaleRequestType</Value>
</ErrorParameters>
<ErrorClassification>RequestError</ErrorClassification>
</Errors>
<Version>953</Version>
<Build>E953_INTL_APIXO_17829668_R1</Build>
</GetOrdersResponse>
如果您查看来自 eBay 的响应,您会发现它包含在 GetOrdersResponse 元素中。由于您正在调用 CompleteSale 操作,因此您希望它位于 CompleteSaleResponse 元素中。原因在于 eBay 如何路由 API 请求。由于所有操作都进入相同的 URL 服务器需要一种方法来确定您正在调用哪个操作。这是通过查看请求的 HTTP headers 来完成的。 body 的内容在此路由期间被忽略。 HTTP header X-EBAY-API-CALL-NAME 的值应该包含您正在调用的操作的名称。我预计目前是 GetOrders。如果您将 header 设置为 CompleteSale,操作将被更正,您应该得到正确的响应。