2010年 3月 30

Perlモジュール Business::PayPal::API

PayPalのAPIを使う時は Business::PayPal::API というモジュールが便利。

先日のエントリー PayPal利用時の決済フローを考える でLandingPageオプションの事を書いたのですが、Business::PayPal::API で実装するとそのままでは利用出来ないので、Business::PayPal::API::ExpressCheckout のソースを変更する必要があります。

PayPalの英語版APIの解説書(PDF)にはLandingPageの記載が無いようでしたので日本独自の仕様なのでしょうか??変更方法は簡単です。
パスは自分の環境ですと
/usr/lib/perl5/site_perl/5.8.5/Business/PayPal/API/ExpressCheckout.pm でした。

変更方法

Business::PayPal::API::ExpressCheckoutの21行目付近に、

my %types = ( Token                     => 'ebl:ExpressCheckoutTokenType',
		  OrderTotal                => 'cc:BasicAmountType',
		  currencyID                => '',
		  MaxAmount                 => 'cc:BasicAmountType',
		  OrderDescription          => 'xs:string',
		  Custom                    => 'xs:string',
		  InvoiceID                 => 'xs:string',
		  ReturnURL                 => 'xs:string',
		  CancelURL                 => 'xs:string',
		  Address                   => 'ebl:AddressType',
		  ReqConfirmShipping        => 'xs:string',
		  NoShipping                => 'xs:string',
		  AddressOverride           => 'xs:string',
		  LocaleCode                => 'xs:string',
		  PageStyle                 => 'xs:string',
		  'cpp-header-image'        => 'xs:string',
		  'cpp-header-border-color' => 'xs:string',
		  'cpp-header-back-color'   => 'xs:string',
		  'cpp-payflow-color'       => 'xs:string',
		  PaymentAction             => '',
		  BuyerEmail                => 'ebl:EmailAddressType' );

というハッシュの定義があるのでそこに1項目追加するだけです。
以下の様に追記します。

my %types = ( Token                     => 'ebl:ExpressCheckoutTokenType',
		  OrderTotal                => 'cc:BasicAmountType',
		  currencyID                => '',
		  MaxAmount                 => 'cc:BasicAmountType',
		  OrderDescription          => 'xs:string',
		  Custom                    => 'xs:string',
		  InvoiceID                 => 'xs:string',
		  ReturnURL                 => 'xs:string',
		  CancelURL                 => 'xs:string',
		  Address                   => 'ebl:AddressType',
		  ReqConfirmShipping        => 'xs:string',
		  NoShipping                => 'xs:string',
		  AddressOverride           => 'xs:string',
		  LocaleCode                => 'xs:string',
		  PageStyle                 => 'xs:string',
		  'cpp-header-image'        => 'xs:string',
		  'cpp-header-border-color' => 'xs:string',
		  'cpp-header-back-color'   => 'xs:string',
		  'cpp-payflow-color'       => 'xs:string',
		  PaymentAction             => '',
		  BuyerEmail                => 'ebl:EmailAddressType',
		  LandingPage               => '' );

これでLandingPageをBillingにした際にクレジットカード情報入力フォームが最初に表示される様になります。

 

Sign up for PayPal and start accepting credit card payments instantly.
PayPal アカウントを作成して、あなたのサイトにカード決済を導入!

More from my site

  • PayPal利用時の決済フローを考えるPayPal利用時の決済フローを考える ウェブ ペイメント スタンダードを利用した場合 PayPalで決済する際、ウェブ ペイメント […]
  • PayPalウェブペイメントスタンダードもリニューアルしたんだねPayPalウェブペイメントスタンダードもリニューアルしたんだね 随分前に、PayPalのsandboxで見た事があったんだけど、いつの間にかリリースしていた決済画面。 ウェブペイメントスタンダードの欠点だったPayPal会員以外がクレジットカード決済するのに分かりにくい・・・っていうのが改善された感じ。 ウェブサイト自体も日本語化がかなり進んでいるみたいだし、日本でも本格的に活動していきそうな感じがする。 実際かなり便利 […]
  • EC-CUBE PayPal決済モジュールのチェック機構を強化するEC-CUBE PayPal決済モジュールのチェック機構を強化する EC-CUBE PayPal決済モジュールの注意点の続き PayPal決済モジュールのチェック機構を強化 とりあえずのコードを書いてみた。 なれないPHPだし、PostgreSQLだしで、いいのか悪いのか判断できません。 基本的にEC-CUBE本体から拾ったコードを再利用しただけです。 コードはEC-CUBE 開発コミュニティサイト - […]
  • PayPal sandboxでの環境設定PayPal sandboxでの環境設定 IPN(即時支払い通知)のシステム構築 以前作ったsandboxでのテスト環境を使って、別の事業を構築する為のテストを行ったらエラーに悩まされた。 IPNで通知される状態が payment_status=Pending pending_reason=paymentreview となってしまう。悩んだあげく、受取人のアカウント設定がおかしいのに気付く。 前にいろ […]
  • EC-CUBE 2.11 + PayPal ウェブペイメントプラスの動作はなかなか良いかもEC-CUBE 2.11 + PayPal ウェブペイメントプラスの動作はなかなか良いかも EC-CUBE […]
  • EC-CUBE PayPal決済モジュールの注意点EC-CUBE PayPal決済モジュールの注意点 PayPal決済モジュールはチェックが甘い? PayPal決済モジュールは支払先のメールアドレス(receiver_email)の正当性しかチェックしていない。 支払われた金額のチェックを行っていないため、(ポストされる内容を変更など)不正な金額を支払ったとしても入金済みにしてしまう。 PayPalから届く入金確認メールの金額と違っていないか確認する必要がある。 […]

Filed under: PayPal,perlモジュール

Trackback Uri



コメントする