状況
- すでに構築済みのWorpdress上のWebサイト
- クレジットカードの決済を追加したい
- Epsilonとすでに契約済みで決済代行の選択の余地なし
- リンク決済を使用したい
という制限された状態。
調査
EpsilonがPHPのサンプルコードを提供していたのでそれを活用。
必要なモジュールを個々でダウンロードしサーバー上へ設置。
(訳があって個々にしています)
使用したモジュール
Epsilonのサンプルコードで以下を使っていたので同じものを使用
- HTTP_Request2 (https://pear.php.net/package/HTTP_Request2/download)
- Net_URL2 (https://pear.php.net/package/Net_URL2/download/)
- XML_Parser (https://pear.php.net/package/XML_Parser/download)
- XML_Serializer (https://pear.php.net/package/XML_Serializer/download)
Wordpressのディレクトリ
└ wp-content
└ themes
└ インストールしたテーマ
L epsilon(作成)
L ここにモジュール設置
L ここに決済用PHPを設置
困ったこと
Wordpressで自作PHPを実行する方法を知らない
これはサーチしたらたくさん情報があったので簡単に解決。
function.phpに以下のコードを追加しショートコードを使用可能にする。
function Include_my_php($params = array()) {
extract(shortcode_atts(array(
'file' => 'sample'
), $params));
ob_start();
include(get_theme_root() . '/' . get_template() . "/epsilon/$file.php");
return ob_get_clean();
}
add_shortcode('credit', 'Include_my_php');
このショートコードをWordpressの記事に貼り付けで解決。
Wordpress用に作成されたテーマのPHPを修正しなければいけない
クレジット決済へ飛ばすためのボタンをすでに存在するページに追加をしたい。
Wordpress用のコードを解析。
よくわからなかったけど、とりあえず該当のページのソースは発見。
var_dumpやexitなんかで動かしたり、止めたりしてなんとなく理解。
ボタンを設置し、submit先に上記のショートコードが設置されたURLを指定。
うまく動いた(^^)
いざ動作確認
エラー①
Warning: require_once(Net/URL2.php): failed to open stream: No such file or directory in /home/javijavi/www/central/lifewave/wp-content/themes/phlox-pro/epsilon/HTTP/Request2.php on line 24
URL2.phpが見つからないと怒られる。
ディレクトリは間違っていないのに。。。
解決
特殊なディレクトリ構造にしているためパスをインクルードする必要があった。
$path = dirname(__FILE__);
set_include_path(get_include_path().PATH_SEPARATOR.$path);
これを決済用PHPに追加で解決。
エラー②
string(63) "エラー : 908このCGIを実行する権限がありません"
無事PHPは実行されたようだがEpsilon側から怒られる。
解決
Epsilonの設定で「オーダー情報発信元ホスト情報」をホスト名にしており逆引きが出来ていなかったらしい。なのでIPアドレスへ変更。
参考ページ https://02kaz.x0.com/it/ec2ep/
無事完了
あとはhtml(レイアウト)やパラメータを修正。
この他にもつまずいた箇所があった気がするけど忘れたので割愛。
仕組みが分かれば意外と簡単でした。