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@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://tegos.co.jp/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にアクセスすると、最初はエラーとなった。


pluginが作ったテーブル「instant_payment_notifications」の中にはデータができているので、どうも戻りがおかしいみたいだ。と、helperに登録してないだけでした。ハイ・・・。

 

特にURLをpaypal側に登録する必要はないようです。

 

Leave a Comment

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