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,操作将被更正,您应该得到正确的响应。