このエントリーをはてなブックマークに追加 Twitterでツイート vinstallって便利だね

EC-CUBEを使ったサイトでA8以外のアフェリエイト対応のため、購入手続き完了ページでソケット通信を使って成果通知をすることになり、ちょっとだけはまってしまいました。

はまったポイントは、
1.fsockopenでSSLの通知先にアクセスできなかった。
2.docomo IDの取得。
といった感じ。
auとSoftBankはimgタグを使えるのですが、docomoはそうはいかないんですね^^;

さて1に関しては、phpinfoで確認すると、サーバーのPHP環境のソケット通信がhttpsが有効になっていないためで、ネタを探してみると、–with-opensslオプションをつけてphpを構築しなおす必要があるとのこと。現在サーバーが稼働中なこともあって、少し凹んじゃいました。
気を取り直してレンタルサーバーのユーザーマニュアルを見直すと、vinstallでphpのモジュールを更新できると書かれています。早速SSHでvinstallコマンドをphpオプションをつけて実行すると、PHPのモジュールが一覧で表示されます。そこで組み込みたいモジュールをチェックし、「OK」ボタンを押し、数秒で変更が完了。phpinfoでソケット通信を見てみると、httpsが入っていました。
この処理時間を考えると、phpを構築しなおすことはしていないんでしょうね。。。
何はともあえ、1の問題はクリアです。

2については、以下のページを参考にして、SC_Helper_Mobileを修正。
http://d.hatena.ne.jp/red_snow/20100408/1270697497
これで最初のページ以外(かつSSL下以外)であればdocomo IDを取得できるので、モバイルで商品をカートに入れるタイミングとして、LC_Page_Products_Detail.phpのmobileProcessメソッドでセッションに保存。
保存したdocomo IDは購入手続き完了ページのLC_Page_Shopping_Complete.phpのmobileProcessメソッドで取り出し、成果通知用のURLに埋め込んでいます。

さて肝心の成果を通知する通信部分ですが、fsockopen関数を使ってソケット通信するのではなく、get_headers関数を使っちゃいました(これなら1行ですし、ローカルの開発環境でアクセスログを見た限りではきちんとGETのログが残っています)。
ダメなら、後で修正しないといけないわけですがw

投稿日:2010年4月28日
  • ※コメントは、スパム対策などのためIPアドレスにて制限しております。
  • ※誹謗や中傷、スパムなど、不適切な内容は公開いたしません。ご了承ください。