Wowma! APIで嵌った話

Wowma!APIで嵌った接続方法

いやぁ~見事にやられました。嵌る必要のない所で大ハマり。と言う事で備忘録に記します。

やっぱりね、出来ると思ってもマニュアルは適当に読んじゃダメです。

商品情報取得API(個別)で商品情報を取得

まずは判りずらい決まり事について

アプリケーションキー = Wow!manager 各種お申し込みから取得するAPIキー
店舗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);

 

まとめ

コードはちゃんとマニュアルみて書きましょう。

はい、申し訳ございませんでした。

\ 最新情報をチェック /

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください