日本ではそんなに流行ってないけど、アメリカでメジャーな決済代行サービスPayPal。
PayPalによる決済代行の仕組みを導入するには、4つの方法がある。
↓のWikipediaに分かりやすく説明されてる。(Paypal本家のページは何か直訳っぽい感じであまり分かりやすくない…。)
PayPal - Wikipedia
このPayPalを利用して月額課金のような定期課金を行いたい場合は、「購読と定期支払い」という機能を利用することになる。システムに組み込むには、
1.自分のアプリケーション内に購読ボタンを配置
2.ユーザは購読ボタンを押下するとPayPalのサイトに遷移しログインし支払いを行う。
3.支払が終わると元のアプリケーションに戻るためのボタンが用意されており、これを押下することで、自分のアプリケーションへ再度戻ってくる。
プロセスとしてはシンプル。ただ、2で登録した内容は3で自分のアプリケーションに遷移してきた際にHTTPリクエストのパラメータとしてわたって来る(そういった設定を予めしておけば)。
そのため2と3の間でサイト間の移動が発生してしまい、「支払い」という処理とその結果の「取り込み」が別のトランザクションとなってしまう…。
例えばユーザが支払まで終わった段階でアプリケーションに戻るボタンを押さなければ、支払情報は入手できない。(まぁ正確にはメールで送られてくるんだけど)
となると「支払い」と「取り込み」の処理は別トランザクションで実施しても問題無いように(後で取り込み内容を登録できるような仕組みを用意するなど)アプリケーションを作る必要が出てくる…。
SOAP API使えば同じトランザクションで処理できるか?と思いきや、定期購読処理を行うようなAPIは公開されてない。
んー、微妙に不便さを感じる。みんなどーやってるんだろ?
一応、こういう不便さの解消のためなのか、開発者向けにもっと細かく操作可能なAPIを今年の冬にPayPalが提供するみたい。でも今欲しいのよね…。
【訂正】
IPNを使えば同期できるみたい。