このページでは、Paypalのウェブペイメントプラス実装方法について、まとめています。
ウェブペイメントプラスの実装方法は、下記の3つの方法があります。
今回はiFrameを利用した実装方法を取り上げています。
- HTMLを利用したシンプルな実装
- iFrameを利用した実装
- APIを使用した実装
Paypalの決済機能は、エクスプレスチェックアウトや、リファレンストランザクションなどを実装してきているのですが、Paypal公式サイトの実装マニュアルは、わかりにくい部分が多いです。
必要な事は、しっかりと網羅されているのですが、重要な部分がサラッと書かれており、その部分を見過ごすと結構ハマったりもします。
また、アメリカ本社のマニュアルを、日本語に翻訳する際に、わかりにくくなる部分もあります。
管理者アカウントの作成
ペイパルの各サービスを利用するには、最初に管理者アカウントを作成する必要があります。
今回実装するウェブペイメントプラスの場合にも、管理者アカウントの作成が必要になります。
まだ、管理者アカウントを作成していない場合には、下記のURLから登録を行います。
管理アカウントの登録URL
https://developer.paypal.com/developer/applications/
最初にログイン画面が表示されますが、ここで「新規登録」ボタンをクリックして、登録画面を表示します。
「パーソナルアカウント」「ビジネスアカウント」のいずれかを選択します。
ペイパルの開発になるので、ここでは、売り手と買い手の両方の権限がある「ビジネスアカウント」を選択します。
「ビジネスアカウントへの登録」画面が表示されるので、メールアドレスを入力し、「続行」ボタンをクリックして、先の画面に進みます。
入力したメールアドレス宛に、登録メールが届くので、画面の指示に従って進めます。
sandbox用のアカウント作成
管理者アカウントが、無事に作成できたら、管理者アカウントで、先ほどのURLからログインします。
ログイン後に、「Dashboard」画面が表示されます。
この「Dashboard」画面から各機能に必要な設定などを行います。
早速、ペイパルのアカウントを作成してみましょう。
アカウントタイプには、「Personal(買い手)」「Business(売り手)」があります。
アカウントタイプ
- 「Personal」アカウント
支払のみが可能なアカウントになります。(本人確認不要) - 「Business」アカウント
主に、事業向けのアカウントになります。(個人事業主、法人で審査があり)
「Personal」アカウントの作成
左枠の「Accounts」メニューを選択し、右上の「Create Account」ボタンをクリックします。
「Account Type」に「Personal (Buyer Account)」を選択し、Country、mailAddress、FirstName、LastNameなど必要な項目を入力します。
「PayPal Balance」には、入力できる最大の金額を設定します。
※テストアカウントの残高は、後から増やすことができません。再度、テストに必要な場合には、別のアカウントを作り直す必要があります。
「Business」アカウントの作成
作成手順は、「Personal」アカウントと同じ流れで作成します。
「PayPal Balance」に入力できる最大金額が違います。
ここでも、入力できる上限まで設定することをおすすめします。
作成したアカウントは、下記の「マイアカウント」からログインすることが出来るようになります。
https://www.sandbox.paypal.com/myaccount/home
※↑sandbox用のログイン画面となっていますが、本番用のログイン画面と、非常に似ているので間違えないようにしてください。
自分は、sandbox用にログインしているつもりが、本番になっており、大変に焦ったことが何度かあります。
ウェブペイメントプラスの設定
アカウントタイプの変更
ウェブペイメントプラスを利用するためには、「Account Type」を変更する必要があります。
「Dashboard」画面から、売り手のアカウントを選択し、「Account Type」を「Upgrade to Pro」に変更します。
ウェブペイメントの設定
実装サンプルに記載しているプログラムにて、この「自動復帰」を指定します。
※復帰URLは、ペイパルサーバーから呼ばれるので、外部から参照できるURLを指定する必要があります。
※たとえば、ローカル環境で実装、テストを実施する場合に、ここに
具体的な対応策としては、プログラムで指定する[return]に、復帰先のURLを直接指定することで、ローカル環境の指定ができます。
「支払の確認」ページの設定
「自社ウェブサイトの確認ページに表示します。」を選択し、復帰URLに復帰先のURLを設定します。
ここでも、上記の理由から、復帰URLを設定しません。
「URLおよびデータ転送」の設定
「URLおよびデータ転送」
データ転送方法を「POST」に設定します。
キャンセルURL、エラーURLは、空欄で問題ありません。
ウェブペイメントプラスの実装サンプル
iFrameの実装サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
html> <head></head> <body> 請求金額:10,000円 <iframe name=”hss_iframe” id=”paypal_iframe” width=”100%” height=”340px” frameborder=”0″></iframe> <form action=”https://securepayments.sandbox.paypal.com/webapps/HostedSoleSolutionApp/webflow/sparta/hostedSoleSolutionProcess” target=”hss_iframe” name=”form_iframe” method=”post”> <input type=”hidden” name=”cmd” value=”_hosted-payment”> <input type=”hidden” name=”subtotal” value=”10000″> <input type=”hidden” name=”business” value=”123456789ABCDE”> <input type=”hidden” name=”paymentaction” value=”sale”> <input type=”hidden” name=”template” value=”templateD”> <input type=”hidden” name=”return” value=”http://localhost:8080/complete?invoice=123456″> <input type=”hidden” name=”invoice” value=”123456″ /> <input type=”hidden” name=”cancel_return” value=”http://localhost:8080/confirm?invoice=123456″> <input type=”hidden” name=”currency_code” value=”JPY”> <input type=”hidden” name=”country” value=”JP”> <!– 以下は必要に応じて設定します –> <input type=”hidden” name=”billing_address1″ value=”千代田区” /> <input type=”hidden” name=”billing_city” value=”東京都” /> <input type=”hidden” name=”billing_country” value=”ja_JP” /> <input type=”hidden” name=”billing_first_name” value=”山田” /> <input type=”hidden” name=”billing_last_name” value=”太郎” /> <input type=”hidden” name=”billing_state” value=”ja_JP” /> <input type=”hidden” name=”billing_zip” value=”100-0001″ /> <input type=”hidden” name=”buyer_email” value=”yamada.taro@test.com” /> <input type=”hidden” name=”lc” value=”JP” /> </form> </body> </html> |
IPN通知の実装サンプル
IPN通知の実装は、ペイパルのgitに登録されているサンプルを流用するのが早いと思います。
https://github.com/paypal/ipn-code-samples
ここには、各種言語の実装サンプルがありますが、もし、サンプルがなくとも、
他の言語のサンプルを読めば、実装の流れが理解できると思います。
即時支払い通知(IPN)のテスト方法
sandbox上で、IPN通知のテストを実施するには、上記の設定が確実に出来ていれば問題なく動作できると思います。
しかしながら、外部の通信を制限している場合は、ファイアーウォールの設定などの必要があるかもしれません。
この場合には、インフラ担当者と協力して対応を進める必要があります。
ちなみに、ペイパルから通知されてくるメッセージの送信元アドレスの情報は、こちらにまとまっていますので参考にして下さい。
[本番環境]
https://www.paypal.com/us/smarthelp/article/what-are-the-ip-addresses-for-live-paypal-servers-ts1056
ペイパルの公式マニュアル
ペイパルの公式マニュアルは、非常に充実しています。
欠点としては、更新頻度が非常に多く、重要な資料のリンク先が頻繁に変わります…
参考になるマニュアルを、こちらにまとめてみましたので、参考にしてください。
(2018.05.29 現在)
ウェブペイメントプラスインテグレーションガイド
https://www.paypalobjects.com/webstatic/ja_JP/developer/docs/pdf/paymentsplus_jp.pdf
IPN概要資料
https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/
まとめ
Paypalの実装は、チェックアウトペイメントや、リファレンストランザクション、そして、今回のウェブペイメントプラスの機能を実装してきました。
これらのうち、今回のウェブペイメントプラスが一番実装しやすいと感じました。
IPN連携部分は、ペイパルとの非同期連携など、実装、テストなどのやりにくい部分もありますが、画面部分の実装は、iFrame部分だけとなりますので、少ない工数で実装できたと思います。
ウェブペイメントプラスを実装する時の参考としてみて下さい。