①PHPでAmazon MWS APIを使ってカート価格を取得してみる。

PHPでAmazon MWS APIを使ってカート価格を取得できるのかためしてみたいと思います。

 

ちなみに、Amazon MWS APIは大口出品者しか使えません!あしからず!

 

まず、はじめに私はPHPはど素人です(笑)

ほかの言語は、ExcelのVBを多少。perlを多少というレベルです。

 

そんなんで、大丈夫なの?という声もありますが

試してみないとわかりません(笑)

 

単に、PHPを使ってみたかっただけという話でもあります(笑)

ではさっそくトライしてみます。

 

出来なかったらすいませんということで・・・

 

PHPをわかりやすく学習できるサイト

このあたりは、素人にはチンプンカンプンなので

グーグル先生で分かりやすいサイトをリサーチします。

 

おお!沢山でてきます!流石グーグル先生!

 

そして、いろいろ見てまわったところ・・・

とても丁寧に説明してくれているサイトを見つけました!

 

環境構築から、PHPの基本までこちらのサイトで学習できるかと思います。

 

文章を読みながら、実際にコードを書いて動かしてみるという学習スタイルになっていますので、途中で飽きがきません!

 

とても素晴らしいありがたいサイトです!

 

それが、こちらのポンクソフトさんです。

PHPの基本・簡単なプログラム – PHP入門 – ポンクソフト

 

私も一気に学習してしまいました!

(本業が暇な時に、会社のPCでやってましたー(^▽^;)

さすがに、Amazonにはアクセスしていませんよ~

学習しただけです。あくまで本業に生かすためです!建前は(笑))

 

さあ、学習はさらりと終わりました!

 

あとは、自宅で実践あるのみです!

 

自宅PCに開発環境を準備

うえで紹介したサイトを読んで、自宅PCにPHP開発環境を整えます。

 

XAMPPをダウンロードします。

windows版をクリック!

 

XAMPPがダウンロードできましたので

サイトを読みながら、細かい設定をして

さっそく、「Hello World!」を表示してみます。

 

こんにちは世界!

 

おお!完璧です!

実は、この前に文字化けしてました(笑)

テキストファイルを保存するときに、文字コードをUTF-8に変更して保存するのを忘れていました(汗)

 

幸先が不安ですが、いざ出航!

商品API セクション クライアントライブラリ – PHP – バージョン をダウンロード

Amazon マーケットプレイスWebサービスから、PHP用のライブラリをダウンロードします。

商品API セクション クライアントライブラリ – PHP – バージョン

ダウンロードしたライブラリは、zip圧縮されているので解凍します。

解凍したライブラリは、以下のように置きました。

C:\xampp\htdocs\php\MWSProductsPHPClientLibrary-2011-10-01._CB481727082_

これで下準備はOKのはず。

つぎはいよいよコーディングです。

カート価格を取得するPHPをコーディング

さて、MWSからライブラリもダウンロードしたし

このなかにサンプルも入っているので、すぐにカート価格くらい

取得できると思っていたのですが、なかなかどうして・・・

まったくチンプンカンプンです(笑)

こんなときは、やはりGoogle先生に聞くのが一番です!

 

しかし・・・

 

わたしのリサーチ能力が低いため、ピンポイントで見つけられず

時間だけが過ぎ去っていくのでした。

捜しているうちに、別のページを読みふけってしまったり

大分道草をしてしまいました(笑)

 

まず、わかったことは、以下のSamplesフォルダの下の、

.config.inc.php を編集します。

C:\xampp\htdocs\php\MWSProductsPHPClientLibrary-2011-10-01._CB481727082_\src\MarketplaceWebServiceProducts\Samples

 

ちなみに、わたしはサクラエディタを使用。

以下の6箇所を修正します。

これは自分のMWSキーを調べる必要があります。

先にも述べましたが、今一度

注意
Amazon MWS APIは大口出品者しか使えません!あしからず!

MWSキーの調べ方はGoogle先生に聞いてみてください。

 

いよいよ、本題のカート価格を取得するファイルの編集になります。

サンプルの名前から、ASINから価格を調べられそうな候補は4つ。

GetLowestPricedOffersForASINSample.php

GetCompetitivePricingForASINSample.php

GetLowestOfferListingsForASINSample.php

GetMyPriceForASINSample.php

 

さて、この中のどれを使えばよいのか?

 

MWSドキュメントの説明では

GetLowestPricedOffersForASIN
 ASINに応じた、単一の商品の最低価格の出品情報を返します。

GetCompetitivePricingForASIN
ASINに応じた、商品の現在の競合価格を返します。

GetLowestOfferListingsForASIN
 ASINに応じた、最低価格のアクティブな出品の価格情報を最大20個まで返します。

GetMyPriceForASIN
 ASINに応じた、出品者自身の出品の価格情報を返します。

 

カート価格を調べたいので、一番近い説明が

GetCompetitivePricingForASIN
ASINに応じた、商品の現在の競合価格を返します。

でしょうか。競合価格ですからカート価格と解釈できそうです。

 

ではさっそく、GetCompetitivePricingForASINSample.php を編集していきます。

サンプルを開いたところで、記述内容はやっぱりチンプンカンプンです(笑)

まあ、PHPは後々学習するとしまして、直すところだけ分かれば、目的は達成です!

 

結論から申しますと、何とか成功はしたようです。

 

と、なんだかはっきりしない言いようになっているのは

私自身が記述の内容を理解していないということ

ピンポイントで説明してくれている参考サイトが見つからなかったこと

結果、私が複数のサイトからこう書けば上手くいくんじゃないの?

という憶測で試行錯誤した記述がたまたま動いたに過ぎないからです。

まだまだ、勉強が必要だと痛感いたしました。

 

が・・・

 

とはいえ、エラーなく動いたことには変わりません(多分)。

ここから先をご参照される方は、完全なる自己責任となりますのでご了承ください(笑)

 

では、何とか動いたファイルの修正点になります。

GetCompetitivePricingForASINSample.php の以下を修正します。


39行目の//(コメントアウト)を削除しました。

「日本AmazonのMWSサービスを利用します」という設定ですね。

 

さて、次がいちばん時間がかかり試行錯誤で苦労した部分です。
わかる人が見れば瞬殺でしょう(笑)

赤枠で囲った部分は、私が憶測で追加しました(笑)

せめて、サンプルならここまで書いて欲しいものです(怒)

ASINを入力すれば動きますよ~という親切なサンプルなら

何も苦労はしないのに・・・

 

この部分は、他のサイトで、別のコマンド例がありましたので

一度そちらを動かしてみて動いたので、じゃあこちらも

こんな感じで書けば動くんじゃない?

といういい加減な感じで記述して動いたものです(笑)

 

コピペできるように、こちらにコードを記述しておきます。

php
 $request->setMarketplaceId(MARKETPLACE_ID);
 $asinList = new MarketplaceWebServiceProducts_Model_ASINListType();
 $asinList->setASIN(array('B0035ESZBY'));
 $request->setAsinList($asinList);

 

では、ブラウザから実行してみましょう!

http://localhost/php/MWSProductsPHPClientLibrary-2011-10-01._CB481727082_/src/MarketplaceWebServiceProducts/Samples/GetCompetitivePricingForASINSample.php

 

すると、以下のような画面になります。

 

ここで右クリックし、「ページのソースを表示」をクリックします。

すると、このようにXML形式で表示されます。

20行目に<Amount>712.00</Amount>という記述があります。

こちらが、カート価格になります。

 

とうとうやりましたーー!!

精魂尽きて、放心状態です・・・

 

たったこれだけのことなのに(汗)

 

情報が少ないのか、私が非力なのか分かりませんが
まあ、後者ですが、まあ辛かった~

とここでグチらせてください(笑)

 

では、続きです。

24行目にも <Amount>388.00</Amount>とありますね。

こちらは、自己発送の方がカートを取得していますので

この値が商品価格になります。

28行目の<Amount>324.00</Amount>が送料になります。

商品価格+送料の合計が20行目の値となっています。

 

コピペできるようにこちらにコードを記述しておきます。
使うかわかりませんが(笑)

XML
Service Response
=============================================================================
<?xml version="1.0"?>
<GetCompetitivePricingForASINResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01">
  <GetCompetitivePricingForASINResult ASIN="B0035ESZBY" status="Success">
    <Product>
      <Identifiers>
        <MarketplaceASIN>
          <MarketplaceId>xxxxxxx</MarketplaceId>
          <ASIN>B0035ESZBY</ASIN>
        </MarketplaceASIN>
      </Identifiers>
      <CompetitivePricing>
        <CompetitivePrices>
          <CompetitivePrice condition="New" subcondition="New" belongsToRequester="false">
            <CompetitivePriceId>1</CompetitivePriceId>
            <Price>
              <LandedPrice>
                <CurrencyCode>JPY</CurrencyCode>
                <Amount>712.00</Amount>
              </LandedPrice>
              <ListingPrice>
                <CurrencyCode>JPY</CurrencyCode>
                <Amount>388.00</Amount>
              </ListingPrice>
              <Shipping>
                <CurrencyCode>JPY</CurrencyCode>
                <Amount>324.00</Amount>
              </Shipping>
            </Price>
          </CompetitivePrice>
        </CompetitivePrices>
        <NumberOfOfferListings>
          <OfferListingCount condition="New">7</OfferListingCount>
          <OfferListingCount condition="Any">7</OfferListingCount>
        </NumberOfOfferListings>
      </CompetitivePricing>
      <SalesRankings>
        <SalesRank>
          <ProductCategoryId>grocery_display_on_website</ProductCategoryId>
          <Rank>6019</Rank>
        </SalesRank>
        <SalesRank>
          <ProductCategoryId>71330051</ProductCategoryId>
          <Rank>59</Rank>
        </SalesRank>
      </SalesRankings>
    </Product>
  </GetCompetitivePricingForASINResult>
  <ResponseMetadata>
    <RequestId>7ee69872-54b5-482b-9e58-906daeb404dc</RequestId>
  </ResponseMetadata>
</GetCompetitivePricingForASINResponse>

 

例題なのでASINを丸のせしちゃっています(笑)

 

では気になる実際の商品を見てみましょう。

ばかうけです!美味しいですよねー

何故この商品を選んだのか?

他意はないです(笑)

単に、Amazonが販売していないもので、競合しているものを捜してたまたま見つけただけです。

 

肝心のカート価格を見てください!

コードで取得した通りです!(当たり前ですかねw)

 

その他の出品者価格はこんな感じです。

まあ、primeの方もいますが、一番安い価格がカートを取得しているという例でした。

 

カート価格以外で言えば

GetCompetitivePricingForASIN を使えば、

ランキングも同時に取得できるってことですかねー

私も使ってみてわかりました(笑)

 

まとめ

掲題の「PHPでAmazon MWS APIを使ってカート価格を取得してみる。」

は、成功です!

と言っておきます(笑)

 

GetCompetitivePricingForASIN を使って

カート価格とランキングを取得できました。

 

あとは、ASINさえあれば、カート価格をバシバシ取得することが可能です!

 

次なる課題は、取得したXMLからカート価格を取り出して

ブラウザへの表示のさせ方ですね(笑)

 

結構時間がかかりましたが、プチ成功体験として

今後に生かしていければ、無駄ではなかっということで

これで、おひらきにしたいと思います(笑)

ご清読ありがとうございました。

 

ワテ

プログラムをオンラインで学ぶならUdemy(ユーデミー)がおすすめです。好きな時間に視聴できるので私も受講しています。


セール期間なら千円台でお得だぞ

カメ吉

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

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