PayWeb Paymetn Express

Hi, I detected your main language is not Japanese. I have an english version of about me, so please try it!

この投稿は6年半前の記事です。 情報が古くなっている可能性があるので、その点ご了承ください。
2011 年 3 月 8 日 2,352日前)
6,054文字 (読了時間15分)

SPONSORED LINK

PayPalが用意しているソリューション
PayPalが用意しているソリューション

もしかしたらそんな間抜けは僕だけなのかもしれませんが、いままでPayPalの実装を3回失敗しているので、エントリーを書いておきます。「ああ、ミニコme!の開発をやってるんだな」と思っていていただければ幸いです。

PayPalの提供する決済サービスの種別

PayPalについては以前印税95%で云々カンヌンという釣り記事を書いたとおり、凄まじいポテンシャルを秘めているのですが、日本ではあんまりです。ときどき「進出する気がないのかな?」と思うことがありますが、まあ、PayPalを見ているとハラハラする理由については後述します。

ともかく、PayPalの提供しているサービスは以下です。PayPalのページに書いてあります。ただ、なんでかは全然わからないんですが、この分類の仕方がいまいち釈然としないというか、変なんですね。「ソリューション一覧」とまとめられていますが、できることや役割、対象範囲がかなり違います。肉と魚が並べられている売り場に、ボールペンが混じっているという感じでしょうか。とにかく、この違和感を表現するためにその詳細について書きます。

ウェブ ペイメント スタンダード
PayPalの一番スタンダードな支払い方法。PayPalの管理画面に入ると「ボタンを作成」というのがあって決済用ボタンを作れるんですが、これはウェブペイメントスタンダードの一種(多分)。ただのHTMLフォームなのでセキュリティ的にアレだが、クレジットカードのみでの取引を受け付ける。
ウェブペイメントプラス
ウェブ ペイメント スタンダードの駄目なところをiframeで補うというスーパーソリューション(?)だが月額3000円で有料。Twitterでご指摘いただいたのですが、ウェブペイメントプラスの特徴はクレジットカード情報だけで決済ができることと、バーチャルターミナルがあることですね。iframeはあくまでもオプションだそうです。ウェブペイメントスタンダードは「クレジットカード情報+メールアドレスなどの個人情報もろもろ」なので、そこが違うということでしょうか。あと画面のカスタマイズもできるっぽいです。バーチャル端末というのは居酒屋のレジの横にあるクレジットカードを読み取る機械をブラウザで代行させちゃうよということですね。詳しくは日本では使えないPaypalの隠れ機能紹介その1【バーチャルCAT端末】をご覧ください。現時点では日本でも使えるようになってるっぽいです。
エクスプレス チェックアウト
PayPalのAPIを叩くことでデータのやりとりができる。ウェブ ペイメント スタンダードよりはるかに安全だが、最大の欠点は「PayPalに登録していないと決済できない」こと。これも間違い。アカウントを取得しなくてもできる。詳細は後述また、ウェブ ペイメント スタンダードと同時に使うことはできない(多分)。嘘。できるっぽい。PayPalユーザーにExpress Checkoutを提供しつつ、クレジットカードのみのユーザーにはウェブ ペイメント スタンダードを提供するのははありかも。検証します。
定期支払い
ウェブペイメントスタンダードのオプション。定期購読を実現できる。
リファレンストランザクション*
後で請求する。たとえば、携帯の通話料のようなイメージ。
請求書ツール
管理画面から請求書が発行できる。「ソリューション」といえばソリューションだが、PayPalというサービスの機能の一貫のような気もする。
一括支払い*
一括で金額を支払うことができる。ただ、ぱっと見では受け取る側がPayPalアカウントを持っていないと駄目っぽい。ランサーズみたいに登録者に対して報酬を支払うようなサービスを提供している場合はありかも。
PayPal for Digital Goods*
電子書籍用に向いているのではと思われるソリューション。ユーザーが同意すれば、PayPalにログインしなくても決済ができる。
モバイル決済*
モバイルといっても基本的にはスマートフォン向け。PayPalはガラケーに対応していない。要するにPayPalの決済画面をスマートフォン向けに最適化したということだと思う。iPhone/Androidアプリ用のSDKもあり。
アダプティブペイメント*
支払いを仮受けにして後で決済したり、複数人に対して請求したりできる。要するに、一度承認を経た決済を自由に操れるようにするという機能。最近話題のグルーポン系サービスもこれで実現できる。
マイクロペイメント
ソリューションというより、PayPalの手数料の料率に新しいオプションが加わったよということ。2000円以下の決済ならこっちの方が得だったはず。ちなみに、ブラウザがChromeだとJavaScriptエラーが起きて登録できない。

こうしてみると色々あるなーという感じですが、基本的にすべてのソリューションは下記に分類できると思います。

  1. ウェブ ペイメント スタンダードに代表される、心もとないがPayPalのアカウントを必要としないソリューション
  2. エクスプレスチェックアウトに代表される、エクスプレス チェックアウトはPayPalアカウントがなくても大丈夫のようです。PayPalアカウントを必須とするが、APIを叩いて色んなことができるソリューション
  3. 請求書発行に代表される、PayPal機能の紹介みたいなソリューション

*が付いているソリューションはユーザーがPayPalアカウントを持っていることが前提です。

「月額手数料払いたくないし、PayPalに登録しなくても買い物できるようにしたい」と考える僕のように図々しい輩はウェブ ペイメント スタンダードしか選択肢がありません。クレジットカード決済が可能な選択肢があるならPayPal必須ってのでもいいかもしれませんが、PayPalってそんなに普及してないし、難しいところですね。

Web Payment StandardとExpress Checkoutの仕様の違い

コピペで使えるサンプルコードとかを配れると一番いいのですが、めんどくさいので概要の紹介だけにとどめます。ここからは「ウェブ ペイメント スタンダード」とかの半角スペース入りの表記がいかにもださいので、英語表記にします。最大の違いは「APIを叩けるか叩けないか」です。

Web Payment Standard

Web Payment Standardの流れ
Web Payment Standardの流れ

APIが叩けないので、トランザクションは自分で実装する必要があり。また、致命的なのは「HTMLによるフォーム」で情報を投げるので、悪意のあるユーザーは情報を改竄することができる(本当は2000円の買い物なのに、価格を1000円に変えたりとか)。結果的にエラー処理を行うことが多くなり、コーディングがめんどくさい。BMCreateButtonというAPIがあって、これで決済情報を動的に暗号化できることが判明。ただし、Sandboxでは微妙にエラー。検証後、報告。でもPHPとかで動的に暗号化するぐらいならExpress Checkoutでいいような気も…

また、あとからAPIを叩くことができないので、通信エラーが発生した場合のためにIPNという仕組みが用意されているが、それもなんだかなという感じ。単なるHTMLフォームでのやりとりなので、バックエンドの処理が行いづらい。

Express Checkout

Express Checkoutの流れ
Express Checkoutの流れ

PayPalアカウントが必要なことを除けば、ほぼ問題ない。普通のクレジットカード決済はこうしたAPIを備えているはずだと思う。幾つか使ったことがあるが、大体こんなだった。

Express Checkoutの追記

Yoさんからいただいたコメントで知ったのですが、Express Checkoutでもクレジットカードのみの決済は可能なようです。
ただし、Sandbox環境だとアカウント取得を強制されます。本番環境だとオーケーです。

SandboxのExpress Checkout
SandboxではPayPalログインとアカウント取得のいずれかのみ
本番環境のExpress Checkout
本番環境のExpress Checkoutではクレジットカードのみで決済できる

このように「Sandboxと本番でかなり違う」のがPayPalスタンダードなので、混乱しないように気をつけてください。僕は何回も間違えています。

Express Checkoutでクレジットカードのみの決済が可能だったということは、他も大丈夫なものがあるかもしれませんね…ちょっと検証してみないとわからないかもしれません。

PayPalの良質な日本語ドキュメントはあんまりない

PayPalの実装の詳細について述べているドキュメントはあんまりありません。主な公式サイトは下記4つです。

PayPal
http://www.paypal.jp/jp PayPalのサイト。PayPalとはそもそもなんなのかということが書かれているため、一応目を通しておいた方がよいのだが、実装の詳細は相変わらずよくわからない。
PayPal デベロッパーセントラル
https://cms.paypal.com/jp/cgi-bin/?cmd=_render-content&content_ID=developer/home PayPalの開発者向け情報が書かれている。が、ところどころ日本語化されていなかったり、これはPayPal全体にいえることだが、リンク切れが多い。英語が苦手な人にとっては最後の砦。
PayPal X Developper Network
https://www.x.com/ PayPalの仕様書をまとめているサイト。部分的に日本語化さているが、リンク切・エラーともに多い。ドメイン名が短い。ハードに作ろうと思ったらここは目を通さざるを得ないが、落とし穴もあるので注意。なお、モバイル決済などを使う場合はここのサイトへの登録が必須。
PayPal Sandbox
https://developer.paypal.com/ 毎回クレジット決済なんてやってられないので、開発環境として容易されているサイト。開発用アカウントを作って実際の処理を試すことができる。
個人的な意見ですが、個人レベルのWebサービスを作っていて英語ができない人は、PayPalで開発しないで、素直にEC CubeとかのPayPalモジュール使うか、イプシロンなどの格安サービス(PayPalの方が安いけど)を使う方がいいと思います。一応日本語でも幾つかリソースはあるので、

僕のはてなブックマークPayPalタグ

を晒しときます。 

注意点1. PayPalは国際的なサービスだが、世界共通仕様ではない

Express Checkoutでは「登録」と「ログイン」のみ
Express Checkoutでは「登録」と「ログイン」のみ

中途半端に英語ができると陥りがちなことですが、PayPalのすべてのサービスはすべての国で使えるわけではありません。たとえば、ドイツ限定の機能とかもありますし、日本だけ使えない機能とかもあります。

その代表的な例が、Express CheckoutのDoDirectPaymentsという機能です。これはクレジットカード番号を入力してもらうことで、その場で決済を行うことができる大変便利な機能なのですが、これは日本だと使えません。Sandboxだと動いてしまうので、行けると思ってしまいますが、日本だと駄目です。なんでだかはわかりません。

いずれにせよ、日本でExpress CheckoutがPayPalユーザー限定になってしまっているのは、このDoDirectPaymentsが許可されていないためですExpress CheckoutはPayPalユーザーでなくてもできますが、DoDirectPaymentsは許可されていません。。。

Transmitなどで有名なPanic.comの決済
Transmitなどで有名なPanic.comの決済

僕は海外のMac用ソフトとかをオンラインで買うことがよくあるのですが、あちらでは普通に実現されてるんですよね。

同じ機能をミニコme!にもつけたいと思って実装したら日本では動かなかったということがありました。とんだ時間の無駄をしました。どうやら、事業者の国籍で判断しているみたいですね。

注意点2. ガラケーには対応していない

PayPalのサイトはCookieを使っているので、日本の携帯電話は(ほとんど)駄目です。これは改善しないような気がするので、ガラケーに対応したい人はがんばって公式サイトのCPになるか、PAYGENTみたいなサービスを導入するかのどっちかですね。いずれにせよ、個人レベルでは難しいと思います。僕は以前会社勤めをしていたときに公式3キャリアのCPになったことがありますが、めちゃくちゃめんどくさかったですからね。半年以上かかりました。資本金とか謎のコンサル料とか、知り合いの知り合いが某キャリアの誰々の何々とか、そういう大人のアレが求められます。

PayPalに必要なもの

というわけで、PayPalについて色々書きましたが、僕がPayPalにおこがましくも提案したいのは、財務省の天下りを受け入れろということです。場合によっては国交省(旧運輸省)と総務省(旧逓信省)も入れた方がいいでしょう。

PayPalは画期的なサービスですが、日本での機動力が弱いというか、いまどきCGIがもっさりというか、翻訳の質がアレというか、ガラケーに対応していないというか、Apple, Google, Amazonのようにガラパゴス日本の壁を打ち破るパンチに欠けます。ましてや金融というクリティカルな分野に切り込むのであれば、なおのことです。なんとなくですが、Luluと同じ匂いがします。このままでは駄目です。圧倒的なクオリティで打ちのめすのでなければ、部族の長老を自分の娘でたらし込むような藤原道長メソッドを展開してでもサービスを普及させてほしいです。

2010年に個人間の送金が禁止されたりするのは、どう考えても誰かを守るためとしか思えないので、その誰かがおそらくいるであろう財務省の天下りを受け入れることで、色んなアレをアレしてもらうのが吉でしょう。

 

SPONSORED LINK

この記事について

この記事はが2011 年 3 月 8 日にプログラミングの記事として公開しました。

フォローしてください

ここで会ったのもなにかの縁。
高橋文樹.comの最新情報を見逃さないためにもフォローをお願いします。
めったに送らないメルマガもあります。

  • Yo

    エクスプレス チェックアウトについて一つ説明したいのがあります。
    『最大の欠点は「PayPalに登録していないと決済できない」こと』とおっしゃっていましたが、以前はわからないですが、現在登録しなくて直接クレッジトカードで支払いすることが可能です。

  • Yoさん
    ご教示ありがとうございます。おっしゃる通り、アカウントを取得しなくても購入できました。
    Sandboxと本番環境だと決済画面が違うようなので、ご指摘いただいた部分と併せて追記しておきます。

  • Pingback: 100yenLABELサイト:デザイン更新&Paypalで購入できるようになりました « drumsoft / 100yenLABEL()

  • Yashima7

    こんにちは、非常にまとまったいい内容の記事をありがとうございます。
    一点わからないのですが、結局エクスプレスチェックアウトを使用した場合は、Paypalに登録しなくても決済はできるが、住所、電話番号、メールアドレス等は登録しなければいけないということでいいでしょうか?
    つまり入力する内容は殆どかわらず、ただ、Paypalに登録されないだけの違いだと。
    もしもクレジットカードの情報だけで決済したい場合はPaypalウェブペイメントプラスが必要だということでいいでしょうか?

    • こんにちは。おっしゃる通りのご理解で間違いないかと。したがって、Webペイメントプラスなしでリピートユーザーの利便性をあげる(入力の手間を省く)には「PayPalに登録してください!」とお願いするはめになってしまいます。

      以下のURLにWebペイメントプラスのPDFリンクを貼っておきます。

      https://cms.paypal.com/cms_content/JP/ja_JP/files/developer/PaymentsPlus.pdf

      これを見る限りでは、クレジットカード番号のみで決済できるようです。月3,000円というのは、決済の主体を販売者のPayPalアカウントではなく、PayPalにするための手数料みたいだとどこかで読んだ気がするのですが、URL失念。いずれにせよ、私自身もまだ導入していないので、試してみて情報共有していただけると助かります :)

      • Yashima7

         なるほど、すばやい返事ありがとうございました。
        非常に簡潔でわかりやすいですね。
        しかし、このWebペイメントプラスは日本にしか無いサービスなんですよね??
        アメリカ産のWordPressのプラグインを導入しているんですが、多分それだとWebペイメントプラスは決済できない可能性が高いですね。。。

        • WebペイメントProというのが米国における同等のサービスだったような気がしますが私もよくわかりません。日本におけるPayPalはものすごく制限されたサービスなので、海外のプラグインはそのまま使えない可能性が高いです。こちらのブログが詳しいですよ。

          http://takao.asaya.ma/

  • エクスプレス チェックアウトで定期課金をする場合でも購買者側のPayPalアカウントは不要なのでしょうか?
    PayPalのドキュメントにはスケジュールされているが未実行の課金をキャンセルするような機能が購買側にはあるようなのですが、このような機能はPayPalアカウントがないと無理なのでは、と思いましたので。