備忘録34〜閑話休題 ECモールのAPIで在庫取得

お仕事の方で、モールのAPIの相談が来ました・・・の続きです。

またまた、FileMakerですが・・・

前回と同じくこちらを参考に、組んでみました。

楽天の在庫情報を取得してみる。

在庫関連のAPIはSOAP形式です・・・ちと面倒そうです。

スクリプトで「URLから挿入」を使います

URLは

"https://api.rms.rakuten.co.jp/es/1.0/inventory/ws"

cURLオプションの指定

"-H \"Content-Type:text/xml; charset=utf-8\" "
&
"-d @$data"

次に、変数$dataの中身です。見やすいように、整形しました。

"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"java:jp.co.rakuten.rms.mall.inventoryapi.v1.model.entity\" xmlns:ns2=\"https://inventoryapi.rms.rakuten.co.jp/rms/mall/inventoryapi\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:ns3=\"java:language_builtins.lang\">

	<SOAP-ENV:Body>
		<ns2:getInventoryExternal>
			<ns2:externalUserAuthModel>
				<ns1:authKey>"&$auth&"</ns1:authKey>
				<ns1:userName></ns1:userName>
				<ns1:shopUrl></ns1:shopUrl>
			</ns2:externalUserAuthModel>
			<ns2:getRequestExternalModel>
				<ns1:inventorySearchRange xsi:nil=\"true\"/>
				<ns1:itemUrl>
					<ns3:string>
                           商品管理番号(URL)を入れる
					</ns3:string>

				</ns1:itemUrl>

			</ns2:getRequestExternalModel>
		</ns2:getInventoryExternal>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>"

複数も行けるようなのですが、試していません。

<ns1:itemUrl>のところを複数書くといけると思います。

タブ区切りと改行は消してもいいのですが、項目は削らないでください。エラーになります。

$authは

"ESA " & Base64EncodeRFC ( 4648 ; "##serviceSecret##" & ":" & "##licenseKey##" )

##serviceSecret## ##licenseKey## は、共にモール上で確認・店舗自ら発行できます。

この設定で、実行すると、XML形式で在庫情報が取得できます。

ショップサーブの在庫情報を取得してみる

URLは

"https://management.api.shopserve.jp/v2/items/##商品番号##/stock"

##商品番号##は、商品台帳の商品番号を入れます。

cURLのオプション設定は

"-X \"GET\" "
&
"-H \"Authorization: " & $auth & "\" "

$authは

Lower ( HexEncode ( CryptDigest( "##SHOP CODE##" & "##認証キー##" & $unixTime ; "md5" ) ) )

認証情報は、このように md5ハッシュ化 した値が必要です。
また Lower で小文字に変換しないと認証エラーになるので注意して下さい。

これで、在庫情報をJSON形式で取得できます。

今日は以上です。

スポンサーリンク