今回はLinux環境下のPHP 5.3.5で、コマンドラインphp によりサンプルコードを実行する方法を解説します。
フィード送信数を返すGetFeedSubmissionCount オペレーションのサンプルコードを実行する手順は下記の通りです。その他オペレーションも同様に設定および実行が可能です。
事前に、次の手順でPHP にcURLが組み込まれているかを確認します。
>php -r 'phpinfo();'|grep -i curl
Configure Command => './configure' '--with-apxs2=/usr/sbin/apxs' '--enable-mbstring' '--enable-mbregex' '--with-zlib' '--with-curl' '--with-openssl' '--with-mysql' '--with-libdir=lib64' '--with-pdo-mysql'
cURL support => enabled
cURL Information => 7.19.7
--with-curlと表示されれば、cURLは組まれていることになり、cURL Information =>7.19.7でcURLのバージョンの確認できます。cURLが組まれていなかったり、バージョンがAmazon MWS推奨のバージョン以前のバージョンである場合、phpを再度ビルドし直してください。詳しくは、下記のPHPのサイトよりご参照ください。
http://www.php.net/manual/ja/curl.installation.php
- 作業するディレクトリに amazon-mws-v20090901-php-2011-04-01.zip ファイルを抽出します
>unzip amazon-mws-v20090901-php-2011-04-01._V181911424_.zip >cd src/MarketplaceWebService/Samples
- 自分の環境にプロジェクトを構成します
phpが上記の展開先のフォルダーで実行可能かどうかを確認してください。
上記エラーが表示されるのは、MWSのエンドポイントが設定されていないためで、正常な動作です。以降のステップで正しく設定をすれば、結果は異なるはずです。>php GetFeedSubmissionCountSample.php PHP Notice: Undefined variable: serviceUrl in /home/****/src/MarketplaceWebService/Samples/GetFeedSubmissionCountSample.php on line 50 Caught Exception: Missing serviceUrl configuration value. You may obtain a list of valid MWS URLs by consulting the MWS Developer's Guide, or reviewing the sample code published along side this library. Response Status Code: -1 Error Code: InvalidServiceUrl Error Type: Request ID: XML:
- 自分のロケールの対応するエンドポイントのコメントを解除して、MWS エンドポイントを設定します。
お好みのエディタでファイル編集します。
下記のように、エンドポイントを日本向けエンドポイントに切り替えます。>vi GetFeedSubmissionCountSample.php
$serviceUrl = "https://mws.amazonservices.jp";
- アクセスキー ID と秘密キーを設定します
.config.inc.phpファイルを編集し、Amazon MWSの認証情報を設定します。
<Your Access Key ID>と<Your Secret Access Key>に、MWSの登録時に付与された、アクセスキーIDと秘密キーをそれぞれ指定します。define('AWS_ACCESS_KEY_ID', '<Your Access Key ID>'); define('AWS_SECRET_ACCESS_KEY', '<Your Secret Access Key>');
- アプリケーションまたは会社名とバージョン番号を設定します
<Your Application Name>と<Your Application Version or Build Number>にアプリケーション名とバージョン番号を任意の半角英数で入力してください。define('APPLICATION_NAME', '<Your Application Name>'); define('APPLICATION_VERSION', '<Your Application Version or Build Number>');
- マーケットプレイス ID とマーチャント ID を設定します
<Your Merchant ID>と<Your Marketplace ID>にそれぞれ、MWSの登録時に付与された、出品者IDとマーケットプレースIDを指定します。define ('MERCHANT_ID', '<Your Merchant ID>'); define ('MARKETPLACE_ID', '<Your Marketplace ID>');
- コードの適切なセクションのコメントを解除して、サンプルを実行します
下記のように実行します。
Service Response以降の部分がAmazon MWSからのレスポンスをパースした結果です。サンプルコードを分析し、必要な項目を続けて処理するようにプログラムを組んでみてください。>php GetFeedSubmissionCountSample.php * About to connect() to mws.amazonservices.jp port 443 ------省略------------------------ > POST / HTTP/1.1 User-Agent: Amazon MWS Sampler(JP)/20110522 (Language=PHP/5.3.5; Platform=Linux/x86_64/2.x.xx-xxx.elx; MWSClientVersion=2011-04-01) Host: mws.amazonservices.jp Accept: */* Content-Length: 284 Content-Type: application/x-www-form-urlencoded Action=GetFeedSubmissionCount&Marketplace=A*************&Merchant=xxxxxxxxx&AWSAccessKeyId=AKIAxxxxxxxxxxxxxxxx&Timestamp=2011-05-23T10%3A39%3A42%2B0000&Version=2009-01-01&SignatureVersion=2&SignatureMethod=HmacSHA256&Signature=wUqxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx< HTTP/1.1 200 OK < Date: Mon, 23 May 2011 10:39:43 GMT < Server: Server < Content-Type: text/xml < Vary: Accept-Encoding,User-Agent < Transfer-Encoding: chunked * Connection #0 to host mws.amazonservices.jp left intact * Closing connection #0 Service Response ============================================================================= GetFeedSubmissionCountResponse GetFeedSubmissionCountResult Count 108 ResponseMetadata RequestId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
上記の例と同様に、PHPクライアントライブラリーでは、Amazon MWSのほぼ全てのオペレーションにおいてサンプルコードが提供されていますので、ご自分の開発にご利用ください。なお、Amazon MWS フィードAPIセクションのPHPサンプルコードのダウンロードは、下記のAmazon MWSポータルサイトをご参照ください。
https://developer.amazonservices.jp/gp/mws/api.html?ie=UTF8§ion=feeds&group=bde&version=latest