Rails
Amazon
api
MWS

MWS 代引きオーダーの出荷通知

はじめに

MWSを使って出荷管理系のシステムを構築するときには避けて通れない出荷通知
出荷通知といえばsubmit_feedの_POST_ORDER_FULFILLMENT_DATA_なのですが、
最近よく分からないエラーが出ていました。

<Result>
    <MessageID>1</MessageID>
    <ResultCode>Error</ResultCode>
    <ResultMessageCode>XXXX</ResultMessageCode>
    <ResultDescription>YYYYYYYYに一致する注文は出荷できません。</ResultDescription>
    <AdditionalInfo>
        <AmazonOrderID>111-111111-111111</AmazonOrderID>
    </AdditionalInfo>
</Result>

OrderIdは間違っていませんし、そもそも「YYYYYYYYに一致する注文は出荷できません。」ってその「YYYYYYYY(数字)」ってなんの番号です?
OrderにもOrderItemにもそんな番号存在しないしお手上!
どうせ今回だけのイレギュラーでしょ!平気平気!
とか思っていたのですが、そのあと1日で2回出ました。(対応せざるを得ないよなあ)
とは言っても手がかりはないし...と途方に暮れていると物販側がオーダーの共通点を見つけてくれました。
どうも決済が代引きのものの出荷通知が失敗しているようです。
お、これは勝ちました。と思って調べてみたらなかなか闇が深い。

フラットファイルで代引きオーダーの出荷通知をするには

代金引換決済の注文管理

出荷通知のフィードでは、代金引換の注文に対し、「代金引換」(cod-collection-method)の項目に「DirectPayment」を指定して確認する必要があります。その値を指定せずに出荷通知フィードを代金引換注文に対して送信した場合、処理エラーが発生します。代金引換の注文には、必ず「DirectPayment」を指定するようにしてください。

なるほど。速攻で解決できるやないですか。
設定したら一発やないですか!
でも私たちはXMLでのフィードなのでこの通りにはいきませんよね...

公式のxsdを見てみる

XMLでfeed_submitするときはどんな指定の仕方かな...
https://images-na.ssl-images-amazon.com/images/G/01/rainier/help/xsd/release_4_1/OrderFulfillment.xsd

いや、ないですやん。
codの項目ないですやん!
メロスは激怒しました。

調査は続く

探しに探した結果、フォーラムに希望が一筋。
アマゾンapiシステムや出荷情報確認について

Amazon MWSのAPIでもCODの出荷通知を送信することはできます。
CODの出荷通知を行う際はCODCollectionMethod要素を設定いただく必要があります。
仕様するオペレーションはフィードAPIのSubmitFeedをご使用頂ければと思います。

ほんとなのかよ?

ちなみにCODCollectionMethodで調べてみたら_POST_PAYMENT_ADJUSTMENT_DATA_には存在ました。
https://images-na.ssl-images-amazon.com/images/G/01/rainier/help/xsd/release_4_1/OrderAdjustment.xsd

XMLで代引きオーダーの出荷通知をするには

結果から言うと、CODCollectionMethodでDirectPaymentを指定すると正常に処理できました。

<Message>
  <MessageID>1</MessageID>
  <OperationType>Update</OperationType>
  <OrderFulfillment>
    <AmazonOrderID>111-111-111</AmazonOrderID>
    <FulfillmentDate>2018-01-01</FulfillmentDate>
    <FulfillmentData>
      <CarrierName>日本郵便</CarrierName>
      <ShipperTrackingNumber>A111</ShipperTrackingNumber>
    </FulfillmentData>
    <CODCollectionMethod>DirectPayment</CODCollectionMethod>
    <Item>
      <AmazonOrderItemCode>11111111</AmazonOrderItemCode>
      <Quantity>1</Quantity>
    </Item>
  </OrderFulfillment>
</Message>

まとめ

_人人人人人人人人人人人人人人_
> 隠しパラメータは存在する <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

ブログで見たい方はこちら
MWS 代引きオーダーの出荷通知