要約:Amazon Linakgeプラグインの購入者情報の取得を簡単にできるようにしました
昔、WordPress用Amazonアソシエイトプラグインに
ニコニコ市場のような購入数情報をつけてみましたが、Perlスクリプトと併用しなければならなこともあり、一般ユーザの使用は難しいものでした。
今回、akiyan.comさんのPHPでの実装を参考にレポートをゲットするスクリプトを書いたので1 一般ユーザでも簡単に使えるようになりました。
ちなみに、Amazonの購入者情報を表示するまでには以下のようなプロセスを踏んでいます。
- シェルスクリプト(report/report.sh)をcronで定期的に実行する(以下の3つの動作を定期的に実行するためのものです)
- レポート情報取得スクリプト(report/report.php)を動かして、Amazon.co.jpからXML形式のレポートを取得する
- レポートファイルを移動する(ファイルがサーバのルート近くに生成されることがあるため)
- ゲットしたXML形式のレポートを基にデータベースを作成または更新する(report/update.php)
なお、このためには、設定ファイル(report/conf.inc.php)にAmazonアソシエイトのログインで使う情報を書いておく必要があります(この情報はレポートの取得のみに使われます)
以下のように、情報を記入してください。
/*
Amazon Linkage レポート取得用設定
(Amazon.co.jp アソシエイトのアカウント情報を入力してください)
*/
// アカウントのEメールアドレス
$this->email = "amazon@example.com";
// アカウントのパスワード
$this->password = "password";
// 取得するファイルの形式
//(html,csv, xmlのいずれか。購入者情報を表示する場合はxmlにしておいてください)
$this->type = "xml";なお、Amazon Linkageプラグインのダウンロードはこちらからどうぞ。
導入についての補足情報を書きましたので、参考にしてください
レポート取得スクリプトのソース
require_once 'HTTP/Client.php';
$report = new report;
$report->getReport();
$report->saveReport();
class report{
// コンストラクタ(設定の読込)
function __construct(){
include "conf.inc.php";
}
// レポートをゲット
function getReport(){
switch($this->type){
case "xml" : $request = "submit.download_XML"; break;
case "csv" : $request = "submit.download_CSV"; break;
case "html": $request = ""; break;
}
$yesterday = time() - ( 60 * 60 * 24 );
$host = "https://affiliate.amazon.co.jp/gp";
$loginParams = array(
'ie' => "UTF-8",
'protocol' => 'https',
'__mk_ja_JP' => urlencode("カタカナ"),
'path' => '/gp/associates/login/login.html',
'useRedirectOnSuccess' => '0',
'query' => '',
'mode' => '1',
'redirectProtocol' => '',
'pageAction' => '/gp/associates/login/login.html',
'disableCorpSignUp' => '',
'email' => $this->email,
'password' => $this->password,
'action' => 'sign-in',
);
$reportParams = array(
'__mk_ja_JP' => urlencode("カタカナ"),
'tag' => '',
'reportType' => 'ordersReport',
'preSelectedPeriod' => 'yesterday',
'periodType' => 'exact',
'startYear' => '2003',
'startMonth' => '0',
'startDay' => '1',
'endYear' => date('Y', $yesterday),
'endMonth' => (string)(date('m', $yesterday) - 1),
'endDay' => date('d', $yesterday),
$request => '',
);
$loginQueries = http_build_query($loginParams);
$reportQueries = http_build_query($reportParams);
$client = new HTTP_Client();
// ログイン画面
$client->get("{$host}/associates/login/login.html");
$response = $client->currentResponse();
// ログイン
$client->post("{$host}/flex/sign-in/select.html", $loginQueries, true);
$response = $client->currentResponse();
// レポート
$client->post("{$host}/associates/network/reports/report.html", $reportQueries, true);
$response = $client->currentResponse();
if (!empty($response['body'])){
$this->report = $response['body'];
return true;
} else{
return false;
}
}
// ゲットしたレポートを出力
function saveReport(){
// レポートを捕捉
ob_start();
print_r($this->report);
$buffer = ob_get_contents();
ob_end_clean();
// 出力
$fn = "report.{$this->type}";
$fp = fopen($fn, "w");
fputs($fp, $buffer);
fclose($fp);
# chmod("./{$fn}", 0666);
return true;
}
}
感謝の意味も込めてリンク。
- やり方としては同じですが、そのままではパクリなので書き方を変えてます[戻る]
Popularity: 2% [?]
- キーワード:



読者のコメント
2件