[ トップページ ]

« 量子アニーリングによる 4 クウィーン問題のプログラム | メイン

Web

楽天の在庫 API を Python でつかう方法

楽天の店舗が商品データにアクセスするために SOAP による Web サービスがつかわれている. それが RMS API だ. そのなかで商品 API は有料だが,他の API は店舗関係者は無料でつかえる. 在庫 API をつかう必要が生じて,Python でそれをアクセスするプログラムをつくった. 在庫をよみだすにはわずか 10 数行でよい.

在庫検索は基本的にはつぎのようにすればよい.

import zeep, base64

client = zeep.Client(wsdl = "{WSDL}")

ArrayOfString = client.get_type('ns0:ArrayOfString')
factory = client.type_factory('ns1')

method = getattr(client.service, 'getInventoryExternal')
response = method(
    externalUserAuthModel = factory.ExternalUserAuthModel(
        authKey = b"ESA " + base64.b64encode(b"{service_secret}" + b':' +b"{license_key}"),
        userName = "{name}",
        shopUrl = "{shop}",
    ),
    getRequestExternalModel = factory.GetRequestExternalModel(
        itemUrl = ArrayOfString(["{itemUrl1}", ..., "{itemUrlN}"])
    )
)

ここで {WSDL} は楽天の RMS API の WSDL ファイルがある場所 (URL) だが,これは楽天の公開された場所にはないので,RMS でダウンロードしたものを指定する必要がある. {shop} は店の URL,{name} は店のなまえ,{service_secret},{license_key} は API 使用のための申請でえられる秘密情報だ. {ItemUrl1} などが在庫情報がほしい商品の記号 (番号) だ. 在庫情報は response に格納される.

在庫管理にはもうひとつ,在庫をかきかえるサービスがある. それも追記する (2020-2-18).

updateMethod = getattr(client.service, 'updateInventoryExternal')
return updateMethod(
   externalUserAuthModel = externalUserAuthModel,
   updateRequestExternalModel =
      factory.UpdateRequestExternalModel(
         factory.ArrayOfUpdateRequestExternalItem(items)
      ),
)

items は商品データのリストであり,商品データはたとえばつぎのようなかたちだ.

{'itemUrl': itemUrl,
 'inventoryType': 2,
 'inventoryUpdateMode': 1,
 'inventory': quantity,
 'inventoryBackFlag': 1,
 'lackDeliveryDeleteFlag': 0,
 'lackDeliveryId': 12,
 'normalDeliveryDeleteFlag': 0,
 'normalDeliveryId': 2,
 'orderFlag': 1,
 'orderSalesFlag': 1,
 'nokoriThreshold': 8,
 'restTypeFlag': 0,
}

zeep をつかうにはインストールが必要だが,それはつぎの 1 行を実行するだけですむ.

pip install zeep
Keywords:

トラックバック

このエントリーのトラックバックURL:
https://www.kanadas.com/mt/mt-tb.cgi/7533

コメントを投稿

bulb403_7501-1.jpg

螺旋 3D 印刷技術を使用してつくったこのような「3D デザインランプ」を 3d-dl.com で売っています.

このページについて

2020-02-11 20:26 に投稿されたエントリーのページです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by Movable Type