Paypal IPN Cakephp pluginの使い方

プラグインでcakephpシステムを拡張

Paypal IPN Plugin

Cakephpにはプラグインを導入することでシステムを拡張することができる。プラグインを利用すると簡単にシステムを拡張できる場合もあるが、実際にはプラグイン開発者の意図やプラグイン内で利用されているcakephpコアコンポーネントに対する理解が必要な場合がある。

本エントリーでは、Cakephpにプラグインを導入する方法について書いてみたい。その例として、

Paypal IPN Cakephp plugin
https://github.com/webtechnick/CakePHP-Paypal-IPN-Plugin

を選択した。理由は、個人的に利用したプラグインの中で高機能で有用性があると思っているためである。Paypal IPN Cakephp pluginで得られる機能をあげてみる。

・paypalボタン(フォームボタン)のhtml生成
・sandbox(テスト環境)と本番環境の切り替え
・即時支払い通知(IPN)の受け取り

などがある。

プラグインの導入

ダウンロードと読み込み

Paypal IPN Cakephp pluginは、高機能であるがプラグインの導入の仕方についてはほかのプラグインと変わらず簡単に導入することができる。

プラグインをダウンロードして、

app\Plugin

app\Plugin\PaypalIpn

としてコピーする。次に、

app\Config\bootstrap.php

に以下を追記してプラグインを読み込む。

CakePlugin::load('PaypalIpn');

データベースの展開

プラグイン用のデータベーステーブルを設定する必要があり、以下のコマンドで簡単に設定できる。

cake schema create --plugin PaypalIpn

cakeというコマンドファイルは、以下のディレクトリに存在する。

app\Console

windowsの場合はコマンドプロンプトで以下のように実行してみる。

C:\xampp\htdocs\vhost\cakephp2.4.2\app\Console>cake schema create –plugin PaypalIpn

Error: Plugin PaypalIpn could not be found.
#0 C:\xampp\htdocs\vhost\cakephp2.4.2\lib\Cake\Console\Shell.php(417): CakePlugin::load(‘PaypalIpn’)
#1 C:\xampp\htdocs\vhost\cakephp2.4.2\lib\Cake\Console\ShellDispatcher.php(209): Shell->runCommand(‘create’, Array)
#2 C:\xampp\htdocs\vhost\cakephp2.4.2\lib\Cake\Console\ShellDispatcher.php(68): ShellDispatcher->dispatch()
#3 C:\xampp\htdocs\vhost\cakephp2.4.2\app\Console\cake.php(37): ShellDispatcher::run(Array)
#4 {main}

すると上のようにエラーになるので、以下のように修正して実行するとうまくいく

C:\xampp\htdocs\vhost\cakephp2.4.2\app>Console\cake schema create --plugin PaypalIpn

下の2つのテーブルをデータベースから削除しても良いかという質問と新規に作成しても良いかという2つの質問がプロンプト上でされるので

  • instant_payment_notifications
  • paypal_items

今回は両方ともyesでenterし新規にテーブルを作成した。

ルーティングの設定

app\Config\routes.php

に以下を追記する。

/* Paypal IPN plugin */
Router::connect('/paypal_ipn/process', array('plugin' => 'paypal_ipn', 'controller' => 'instant_payment_notifications', 'action' => 'process'));
/* Optional Route, but nice for administration */
Router::connect('/paypal_ipn/:action/*', array('admin' => 'true', 'plugin' => 'paypal_ipn', 'controller' => 'instant_payment_notifications', 'action' => 'index'));
/* End Paypal IPN plugin */

以下のパスは、

/paypal_ipn/process

即時支払通知(ipn)の受け取りパスになり必須の設定。もう一つのルーティング設定は、オプションで管理画面のパス設定になっている。こちら側はオプションであって必須の設定ではない。

Webエンジニアブログにコメント

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

Paypal IPN Cakephp pluginの使い方の記事にコメントを投稿