cakephpでpaypal-ipn-pluginを使う

どうも。トクハラです。
webサービスをPaypalで決済させようとしていろいろ設定してみました。
まず、paypalの決済の仕組みがよくわからなかったのでハマった。
うまく行っているかどうかわからないけど、とりあえずsandboxでみると課金はうまく行ってる。
もし違ってたら教えて下さい。
前提
・paypalアカウントを取得して、テストユーザ(売主、買主)が存在していること
・cakePHPが導入されている
使用したplugin
paypal-ipn-plugin
1年前から更新が止まってるけど、動きました。なぜかテーブル作成のコマンドが通らなかったのでpaypal_ipn.sqlを直接実行した。
あと、cakephp上で追加した設定は以下
AppControllerに以下を追加
public $helpers = array(
‘Session’,
‘PaypalIpn.Paypal’,
paypal_ipn_config.phpをAPP.config/の中に格納する。
 
中身は次の通り。
var $default = array(
‘business’ => ‘XXXXXXX@dev.tegos.co.jp’, // ‘live_email@paypal.com’, //Your Paypal email account
//’server’ => ‘https://www.paypal.com’, // Main paypal server.
‘server’ => ‘https://www.sandbox.paypal.com’, // Main paypal server.
‘notify_url’ => ‘https://www.tegos.co.jp/wordpress/XXXXX/XXXXX/paypal_ipn/process’,
// ‘http://yoursite.com/paypal_ipn/process’,
);
テスト時にはserverをサンドボックスに変更した。というか、最初してなくて、ボタンを設置した後に本番に接続に行くので焦った。
viewには普通にボタンを記述。
echo $this->Paypal->button(‘Pay Now’, array(‘test’ => true, ‘amount’ => ‘12.00’, ‘item_name’ => ‘test item’));
※donateは日本ではダメですといって怒られました。(2015/06/22時点)
ボタンを押下した後、サンドボックスの画面に遷移するので、事前に準備していたテストユーザ(買主)でログインする。
その後、サンドボックスに売主側でログインすると、おお!残高が増えてますね。まあサンドボックスですけど。
 
※ Instant Payment Notification (IPN) simulatorも使ってみた。
ボタンを設置しない状態で、上記notify_urlにアクセスすると、最初はエラーとなった。
スクリーンショット 2015-06-23 08.53.14
pluginが作ったテーブル「instant_payment_notifications」の中にはデータができているので、どうも戻りがおかしいみたいだ。と、helperに登録してないだけでした。ハイ・・・。
 
特にURLをpaypal側に登録する必要はないようです。