Wowma! APIで嵌った話
Wowma!APIで嵌った接続方法
いやぁ~見事にやられました。嵌る必要のない所で大ハマり。と言う事で備忘録に記します。
やっぱりね、出来ると思ってもマニュアルは適当に読んじゃダメです。
商品情報取得API(個別)で商品情報を取得
まずは判りずらい決まり事について
アプリケーションキー = Wow!manager 各種お申し込みから取得するAPIキー
店舗ID = Wow!manager 左上の会員番号
ロットナンバー = Wow!manager から商品登録した場合自動採番される番号
商品コード = 自分でつけられる番号
店舗ID = Wow!manager 左上の会員番号
ロットナンバー = Wow!manager から商品登録した場合自動採番される番号
商品コード = 自分でつけられる番号
マニュアルと画面の文字揃えてくれるとありがたいんだけど、ビッダーズ時代からこんなだからね。ここら辺は諦めてます。
商品コードとロットナンバーはWow!managerから変更が出来ないので要注意です。
接続スクリプト
実際のScriptはこんな感じ(PHP&GETです)。
//接続基礎情報
$url = 'https://api.manager.wowma.jp/wmshopapi/';
$licenseKey = '~~~~~~~~';// アプリケーションキー
$shopID = '*********';// 店舗ID
$itemID = '---------';//GETする商品のロットナンバー
//エンドポイントの作成
$endpoint = "searchItemInfo?shopId=".$shopID."&lotNumber=".$itemID."";//エンドポイント
$header = array(
"method:GET",
"Content-Type:application/x-www-form-urlencoded",
"Authorization: Bearer {$licenseKey}"
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url.$endpoint);//エンドポイント+商品URLにアクセス
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 証明書の検証を行わない
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // curl_execの結果を文字列で返す
curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //ヘッダーに格納してcall
$response = curl_exec($curl); //URLの内容を取得しブラウザに渡す
curl_close($curl);// cURL リソースを閉じ、システムリソースを開放
//配列にする
$xml = simplexml_load_string($response);
$data = (json_decode(json_encode(get_object_vars($xml)), true));
//取得できたかチェック
print_r($data);
嵌ったのはここ
Wow!manager API 利用説明書(PDF) 4頁目の一文
6.1.GET 形式
主に検索系の API で利用しており、リクエスト項目をクエリパラメータで指定します。文 字コードは UTF-8 を使用します。
【HTTP リクエストヘッダの設定例】
method:GET
Authorization: Bearer E1kLDnJC0YtQdsSHs9Yo74pKs5WZ+hZbdrD6KpfFZbM=
その通りに書いてコールしても全く応答なし。
searchItemInfo メソッドでの正解は次の形。
method:GET Content-Type:application/x-www-form-urlencoded Authorization: Bearer E1kLDnJC0YtQdsSHs9Yo74pKs5WZ+hZbdrD6KpfFZbM=
そりゃ接続拒否されますよね。
追記:PHP_POSTバージョン
//接続基礎情報
$url = 'https://api.manager.wowma.jp/wmshopapi/';
$licenseKey = '~~~~~~~~';// アプリケーションキー
$shopID = '*********';// 店舗ID
$itemID = '---------';//GETする商品のロットナンバー
//エンドポイントの作成
$endpoint = "registerItemInfo?".$shopID."";//エンドポイント
//------------
//出品商品情報
$body = '<request>
<shopId>'.$shopID.'</shopId>
<registerItem>
<itemName>てすと</itemName>
<itemManagementId>てすと1</itemManagementId>
<itemManagementName>てすと2</itemManagementName>
<itemCode>TEST_3</itemCode>
<itemPrice>1000</itemPrice>
<taxSegment>1</taxSegment>
<postageSegment>1</postageSegment>
<description>てすと4</description>
<categoryId>3002</categoryId>
<saleStatus>1</saleStatus>
</registerItem>
<registerStock>
<stockSegment>1</stockSegment>
<stockCount>0</stockCount>
</registerStock>
</request>';
//------------
$header = array(
"method:POST",
"Content-Type:application/xml; charset=utf-8",
"Authorization: Bearer {$licenseKey}"
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url.$endpoint);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS,$body);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
$response = curl_exec($curl);
curl_close($curl);
//結果を確認
$print_r($response);
まとめ
コードはちゃんとマニュアルみて書きましょう。
はい、申し訳ございませんでした。


