難義な決済

決済とはややこしいです。単純なECサイトを運用するなら、難義ではないのですが、Baseみたいなものをつくろうとするとややこしいです。決済サービスはPayPalだと結構お手軽ですが、日本の決済サービスだと審査が必要で結構時間かかったりします。WebPayはすごく早いらしいのですが、仮売上期間45日がネックで使えない状態です。あと早いとはいえ審査は必要となります。

Baseで作成された個々のECはBaseのお店ではなく完全に作った人名義のお店になっており、特定商取引法なども作った人名義になっております。たしか。決済サービスの人曰く、この場合、基本的に店舗所有者別に審査が必要となるということでした。まあ、言われてみればそうだなと思うわけですが、Baseという大きなサービスがあったので、てっきり問題ないと思って作っており、非常に残念な気持ちになりました。かといって、何店舗も自社名義のショップを第三者が勝手に作成・運営できるというのは確かにちょっと怖いです。まあそう考えると、決済会社さん(カード会社さん)もそりゃリスク考えるよなーとは思いました。

でもBaseでいいなら、別のものでもいいじゃないかという気持ちがどうしてもあります。Baseだって今はでかくなってますが、最初は小さかったはずだし。と思ってたらそういえばBaseも最初はPaypalだったなと思いました。PayPalならいいのかもと思いました。PayPalもサポートほぼないけど利用規約逸脱してるとお金凍結したりするという噂を聞いたのでちょっと怖いのですが。まあそういう決済フロー(仕組み)的な質問なら返答があるのかもしれない。聞いてみようかな。

cakePHP2.3 GMOペイメントのモジュールをつかう

app/Vendorにモジュールのディレクトリを配置して、require_onceする。

<?php
App::uses('AppController', 'Controller');
$vendor = App::path('Vendor');
$path = $vendor[0] . 'gpay_client' . DS;
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
App::import('Vendor', 'gpay_client/com/gmo_pg/client/tran/EntryTran');
App::import('Vendor', 'gpay_client/com/gmo_pg/client/input/EntryTranInput');
App::import('Vendor', 'gpay_client/com/gmo_pg/client/tran/ExecTran');
App::import('Vendor', 'gpay_client/com/gmo_pg/client/input/ExecTranInput');

モジュールディレクトリの場所をインクルードパスに入れる必要があるので、上記のような感じにした。

参考: App::import() でファイルをインクルードする

尚、GMOペイメントのモジュールは、コンストラクタが2つある。PHP5.4だとRedefining already defined constructorというエラーがでた。だからcore.phpの下記を修正して、エラーがでないようにした。

Configure::write('Error', array(
	'handler' => 'ErrorHandler::handleError',
	//'level' => E_ALL & ~E_DEPRECATED, ←元の表記
	'level' => E_ALL & ~E_DEPRECATED & ~E_STRICT, //←修正内容
	//'level' => 0,
	'trace' => true
));

PHP5を試してみる – コンストラクタの名称の統一
CakePHP2.xとPHP5.4でStrict Errorが出た場合の対処法