Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

WelcartでWebPayを組み込むためのステップを調査して疲れた件

現在調査中なんですが、結構厄介な感じです。

1. 管理画面にWebPayタブを追加し、非公開トークンを保存できる画面を作る。

プラグインフォルダ/includes/admin_settlement.phpを参考に追加。

2. トークンを保存できる処理を追加

プラグインフォルダ/classes/usceshop.class#admin_settlement_pageを参考に追加。

3.配送画面でクレジットカード関係の情報入力画面を呼び出しているので、そこに項目追加。

プラグインフォルダ/includes/delivery_secure_form.phpを参考に追加。
カード番号、セキュリティコード、有効年月、名義、代金合計等。

4. POSTされたカード情報を最終確認画面にhiddenで吐き出す

プラグインフォルダ/includes/purchase_button.phpあたりにhiddenで色々書き出しているので、そこに追加する。

5.購入ボタンを押したタイミングで、WebPayのAPIを叩く

プラグインフォルダ/classes/usceshop.class.php#purchaseで購入処理を書いているが、ここまで来て追いかけるのにつかれた。

WebpayはJSONで返ってくるのでそいつをjson_decodeして、エラーがあったら買い物を中断、OKだったらレッツゴーだろうけど、色々hookされているので辛くなってきた。

これは辛いですね

他の決済プログラムを色々活用している関係で、文字列ハードコートで様々な処理がswitchで散りばめられているので、これで全体像をつかむのは非常に大変。既存のデカイphpファイルに色々埋め込んじゃってる。使っといて文句言うのもあれやけど、決済プログラム自体をプラグイン化出来るようにして欲しかったな・・。

カートに表示する項目についても、フィルターフックとかじゃなくて、現在のカートに入ってる一覧を連想配列 or オブジェクトのArrayで返してくれるメソッドだけあれば、あとはcart.phpで好きな項目をこっちでレンダリングする道も欲しかった。文字列連結でviewをガッツリ書くfilterとか書きたくない。オプションが入ってる場合とか色々例外ケースを入れると、自分でレンダリングすると予期せぬエラーがありうるってことで、そうしてるのはわかるけども・・・。

自分宛にPOSTしてaction的なパラメーターでswitchしてやること変えるパターンはあんま好きじゃないな・・・。カート以降はセッションに入れるのとバリデーションだけだから、1個にしたい理由もわかるけれど。

バリデーションのエラーメッセージもhtmlごと一つのstringに入っているのが気に入らない。XXが不正ですの値が連結されて、何のことかよーわからん。基本は値だけくれよ。それも配列で渡してくれ。それをbrで出すかulで出すか、メッセージの内容はこっちで決めたいし。

また、データ構造的に注文明細をオブジェクトのシリアライズを利用して1カラムにぶち込んでいるので、品番や品名で注文を検索するのはかなり難しい。SKU単位の検索も難しいと思う。商品自体がひとつの投稿になっている(検索で探せないと困るしね)ことを鑑みると、商品や注文自体にオプションが入るとカラムをいちいち追加する必要があって拡張性がないからそうなってるんだと思う。だとしても、KVSっぽくjsonエンコードして欲しかったなぁ・・・。スキーマレスは入れるのは楽だけど、引っ張るのはデータ構造が多段化すると大変だからね。

売上集計プラグインなるものの明細は見ていないけど、売上傾向を商品やカテゴリで分析するのは厳しいと思う。注文日や人ベースはカラムが別やからgroupbyできるしね。

もう1個気になってるのが、Enterでサブミットさせないようにしているのは問題ないんだけど、オートコンプリートの値を活かそうとEnterを押してもfalseが返って入力できないこと。これは僕も調べてみる。

でも、基本的にはWebpay対応とオーダー明細のデータ構造ぐらいかな。

色々書いたけど、基本的にWelcartは楽ちん。慣れちゃえばWPでコーポレートサイト作るようなノリで作れちゃう。必要テンプレがどこにあるか明確だから。ここだけCSSいじればええか、みたいなのすぐ出来る。

大体2時間おっかけって、疲れてきたので続きはまた今度〜