LMS(Large Merchant Service)の導入

LMSについて

LMSはバルクデータのやり取りやAPIコールのバッチ処理を行うためのサービスで、次のAPIを組み合わせて処理要求を行います。
名称 説明
Merchant Data ジョブ要求データのエンコード定義
Bulk Data Exchange ジョブ制御をするためのAPI
File Transfer バルクデータのアップロードとダウンロードをするためのAPI

APIコールのバッチ処理

APIコールをバッチ実行するためには、Merchant Data APIの定義に従い作成した処理要求データをアップロードします。
  1. Merchant Data APIの定義にしたがい、XMLの要求データを作成する。
  2. Bulk Data Exchange APIのcreateUploadJobで、ファイルアップロード先のジョブを作成する。
  3. File Transfer APIのuploadFIleを実行して、1で作成したデータをアップロードする。
  4. Bulk Data Exchange APIのgetJobStatusを実行し、1のジョブが完了していることを確認する。
  5. File Transfer APIのdownloadFileを実行して、ファイルをダウンロードする。

定型レポートのダウンロード

  • オンデマンドでの作成
  • Bulk Data Exchange APIのstartDownloadJobを実行して、レポート作成ジョブを開始する。
  • Bulk Data Exchange APIのgetJobStatusを実行し、1のジョブが完了していることを確認する。
  • File Transfer APIのdownloadFileを実行して、ファイルをダウンロードする。
  • 定期実行での作成
  • Bulk Data Exchange APIのcreateRecurringJobで、レポートを定期的に作成するジョブを作成する。
  • Bulk Data Exchange APIのactivateRecurringJobでジョブをアクティブにする。
  • Bulk Data Exchange APIのgetRecurringJobExecutionStatusを実行し、ジョブが完了していることを確認する。
  • File Transfer APIのdownloadFileを実行して、ファイルをダウンロードする。

LMSの機能比較

  • 実行回数制限
LMSには、実行回数に制限があります。詳しくはLMS user’s guideをご覧ください。
  • バッチ実行できるTrading API コールの種類
LMSでバッチ実行できるAPIコールは限定されています。詳しくはこちらをご覧ください。

File Transfer APIのインターフェースについて

アップロード

ファイルのアップロードは、つぎのようにエンコードしてPOSTします。 ここで、${UUID}, ${UUID_ATTACH}は、個別に生成したUUID( Universally Unique Identifier )の意味です。
【Content-Type】
multipart/related; boundary=MIMEBoundaryurn_uuid_{$UUID};type="application/xop+xml";start="<0.urn:uuid:%s>";start-info="text/xml"

【Body】
--MIMEBoundaryurn_uuid_{$UUID}\r\n
Content-Type: application/xop+xml; charset=UTF-8; type=\"text/xml; charset=UTF-8\"\r\n
Content-Transfer-Encoding: binary\r\n
Content-ID: <0.urn:uuid:{$UUID_REQ}>\r\n\r\n

<?xml version=\"1.0\" encoding=\"utf-8\"?>
 <uploadFileRequest xmlns:sct="http://www.ebay.com/soaframework/common/types" xmlns="http://www.ebay.com/marketplace/services">'.
  <taskReferenceId>11111</taskReferenceId>".
  <fileReferenceId>2222</fileReferenceId>".
  <fileFormat>gzip</fileFormat>'
  <fileAttachment><Size>1024</Size><Data><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:urn:uuid:${UUID_ATTACH}"/></Data></fileAttachment>
  </uploadFileRequest>\r\n
 --$boundary{$UUID}\r\n
Content-Type: application/octet-stream\r\n
Content-Transfer-Encoding: binary\r\n
Content-ID: <urn:uuid:{$UUID_ATTACH}>\r\n\r\n

[gzip のバイナリデータ]\r\n
--MIMEBoundaryurn_uuid_{$UUID}--\r\n 

ダウンロード

ダウンロードのレスポンスは次のようになっているので、タグからUUIDを抜き出し、それをもとにバイナリデータの位置を特定してバイナリデータを抽出します。このバイナリデータはZIPの書庫形式なので、解凍してxmlファイルを取得することができます。
<?xml ...
<downloadFileResponse>
 <fileAttachment>
  <Size>0</Size>
  <Data>
   <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:urn:uuid:{$UUID}"/>
  </Data>
 </fileAttachment>
  ...
</downloadFileResponse>
  ...
----MIMEBoundaryurn_uuid_....
Content-ID: <urn:uuid:{$UUID}>CRLF
CRLF
<バイナリデータ>CRLF
----MIMEBoundaryurn_uuid_.... 

サンプルコード

File Transfer APIを理解するためのサンプルについては、LMS PHPサンプルをご覧ください。