MySQL、オープンソース系、ウェブ系ネタ。commentsTweetBusiness::PayPal::API::ExpressCheckoutで住所とか氏名とかの日本語が正しく送れない理由PerlでPayPalのExpressCheckoutを実装するのにBusiness::PayPal::APIを使っているのだけれど、日本語(2byte文字)がうまく送信できない。UTF-8で送ろうが、フラグ付きにしようが、だ。悩んだ挙句、原因はSOAP::Liteが勝手にbase64エンコードするからだと判明。Business::PayPal::APIは内部でSOAP::Liteを使用していて、Asciiだとそのままなのだけれど、それ以外はbase64にエンコードする仕様の様子。日本語を使うと上手くいかないと思っていたのだけれど、、、。Business::PayPal::API::ExpressCheckoutをカスタマイズする。commentsTweetPayPalウェブペイメントスタンダードもリニューアルしたんだね随分前に、PayPalのsandboxで見た事があったんだけど、いつの間にかリリースしていた決済画面。ウェブペイメントスタンダードの欠点だったPayPal会員以外がクレジットカード決済するのに分かりにくい・・・っていうのが改善された感じ。ウェブサイト自体も日本語化がかなり進んでいるみたいだし、日本でも本格的に活動していきそうな感じがする。実際かなり便利だし、導入の敷居が低いことを考えると良いことだと思います。2.4の時はかなり手を加えないと使えない感があったのだけれど、久しぶりに触ってみた感じではなかなかの好感触。簡単に気づいた点はポイント周りの不具合ポイントを付加するタイミングが「対応状況」を「発送済み」にした時になった。クレジットカードでの決済未完了時(失敗など)「決済処理中」という対応状況が増えて、入金待ちと区別が付きやすくなった。ウェブペイメントプラスでの確認だったけど、悪くないかも。決済フローも簡潔で、これなら3000円出しても価値があると思う。へ」で決済ページへ移行。ウェブペイメントプラスの決済ページ。iframeで表示されるので違和感もない。入力画面も簡潔でいい感じ。クレジットカード情報を送信した時もAjaxで処理されて、ページ移行がない。ここまでスムーズに出来る。PayPalユーザーなら「PayPalで支払い」を選べばPayPalサイトへ移行して決済手続きをしてくれる。このフローが利用出来るだけでも価値がありそう。アカウントを作成すれば出来るはず。詳しく書かれているけど、テストアカウントは売り手と買い手、それぞれ作成する事。Review」という項目は「Disabled」にしておく事。Enabled(レビューが必要)になっている場合は注意。EC-CUBE側はPayPal決済モジュールの設定画面で「決済サイトURL」をhttps://securepayments.sandbox.paypal.com/acquiringwebにする必要がある。メールアドレスは、テストアカウントの売り手のものを使う。PayPal決済モジュールの注意点の続きPayPal決済モジュールのチェック機構を強化とりあえずのコードを書いてみた。なれないPHPだし、PostgreSQLだしで、いいのか悪いのか判断できません。基本的にEC-CUBE本体から拾ったコードを再利用しただけです。フォーラムに投稿してみました。ソースはこちらからPayPal決済モジュールのチェック機構を強化する動作するのか一応PayPalのテスト環境でテスト済みですが、ご利用は自己責任で。PayPal決済モジュールの注意点PayPal決済モジュールはチェックが甘い?PayPal決済モジュールは支払先のメールアドレス(receiver_email)の正当性しかチェックしていない。支払われた金額のチェックを行っていないため、(ポストされる内容を変更など)不正な金額を支払ったとしても入金済みにしてしまう。PayPalから届く入金確認メールの金額と違っていないか確認する必要がある。支払い済みのトランザクションIDの記録やチェックも行っていないため、不正利用される可能性もあると思われる。場合以下のチェックを行えとある。correctちょっとチェック不足な気がするが・・・。DBIx::Class(DBIC)でtimestamp的なカラムの自動更新Mojoliciousでactionの前後に実行される独自のHookを作る。