プログラム開発の情報や、雑記を投稿しているサイトです。

iFrameのウェブペイメントプラスの実装方法

開発覚書

このページでは、Paypalのウェブペイメントプラス実装方法について、まとめています。

ウェブペイメントプラスの実装方法は、下記の3つの方法があります。
今回はiFrameを利用した実装方法を取り上げています。

  • HTMLを利用したシンプルな実装
  • iFrameを利用した実装
  • APIを使用した実装

Paypalの決済機能は、エクスプレスチェックアウトや、リファレンストランザクションなどを実装してきているのですが、Paypal公式サイトの実装マニュアルは、わかりにくい部分が多いです。
必要な事は、しっかりと網羅されているのですが、重要な部分がサラッと書かれており、その部分を見過ごすと結構ハマったりもします。
また、アメリカ本社のマニュアルを、日本語に翻訳する際に、わかりにくくなる部分もあります。

管理者アカウントの作成

ペイパルの各サービスを利用するには、最初に管理者アカウントを作成する必要があります。
今回実装するウェブペイメントプラスの場合にも、管理者アカウントの作成が必要になります。
まだ、管理者アカウントを作成していない場合には、下記のURLから登録を行います。

管理アカウントの登録URL
https://developer.paypal.com/developer/applications/

最初にログイン画面が表示されますが、ここで「新規登録」ボタンをクリックして、登録画面を表示します。

「パーソナルアカウント」「ビジネスアカウント」のいずれかを選択します。
ペイパルの開発になるので、ここでは、売り手と買い手の両方の権限がある「ビジネスアカウント」を選択します。

 

アカウント登録画面

「ビジネスアカウントへの登録」画面が表示されるので、メールアドレスを入力し、「続行」ボタンをクリックして、先の画面に進みます。
入力したメールアドレス宛に、登録メールが届くので、画面の指示に従って進めます。

アカウント登録画面2

sandbox用のアカウント作成

管理者アカウントが、無事に作成できたら、管理者アカウントで、先ほどのURLからログインします。

ログイン後に、「Dashboard」画面が表示されます。
この「Dashboard」画面から各機能に必要な設定などを行います。

早速、ペイパルのアカウントを作成してみましょう。
アカウントタイプには、「Personal(買い手)」「Business(売り手)」があります。

アカウントタイプ

  • 「Personal」アカウント
    支払のみが可能なアカウントになります。(本人確認不要)
  • 「Business」アカウント
    主に、事業向けのアカウントになります。(個人事業主、法人で審査があり)

「Personal」アカウントの作成

左枠の「Accounts」メニューを選択し、右上の「Create Account」ボタンをクリックします。

テスト用アカウント作成

「Account Type」に「Personal (Buyer Account)」を選択し、Country、mailAddress、FirstName、LastNameなど必要な項目を入力します。
「PayPal Balance」には、入力できる最大の金額を設定します。
※テストアカウントの残高は、後から増やすことができません。再度、テストに必要な場合には、別のアカウントを作り直す必要があります

テスト用アカウント作成2

「Business」アカウントの作成

作成手順は、「Personal」アカウントと同じ流れで作成します。
「PayPal Balance」に入力できる最大金額が違います。
ここでも、入力できる上限まで設定することをおすすめします。

作成したアカウントは、下記の「マイアカウント」からログインすることが出来るようになります。
https://www.sandbox.paypal.com/myaccount/home

※↑sandbox用のログイン画面となっていますが、本番用のログイン画面と、非常に似ているので間違えないようにしてください。

自分は、sandbox用にログインしているつもりが、本番になっており、大変に焦ったことが何度かあります。

管理アカウントの登録

ウェブペイメントプラスの設定

アカウントタイプの変更

ウェブペイメントプラスを利用するためには、「Account Type」を変更する必要があります。
「Dashboard」画面から、売り手のアカウントを選択し、「Account Type」を「Upgrade to Pro」に変更します。

売り手の設定情報

ウェブペイメントの設定

この「ウェブ ペイメントの設定」画面では、「自動復帰」の設定はしないで下さい。
実装サンプルに記載しているプログラムにて、この「自動復帰」を指定します。
※復帰URLは、ペイパルサーバーから呼ばれるので、外部から参照できるURLを指定する必要があります。
※たとえば、ローカル環境で実装、テストを実施する場合に、ここに[http://localhost:8080]を入力してもエラーとなります。
具体的な対応策としては、プログラムで指定する[return]に、復帰先のURLを直接指定することで、ローカル環境の指定ができます。

売り手のウェブ ペイメントの設定

「支払の確認」ページの設定

「自社ウェブサイトの確認ページに表示します。」を選択し、復帰URLに復帰先のURLを設定します。

ここでも、上記の理由から、復帰URLを設定しません。

売り手_支払の確認ページの設定

「URLおよびデータ転送」の設定

「URLおよびデータ転送」
データ転送方法を「POST」に設定します。
キャンセルURL、エラーURLは、空欄で問題ありません。

 

売り手の設定_URLおよびデータ転送

ウェブペイメントプラスの実装サンプル

iFrameの実装サンプル

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

[Sandbox]
https://www.paypal.com/us/smarthelp/article/what-are-the-ip-addresses-for-sandbox-paypal-servers-ts1157

ペイパルの公式マニュアル

ペイパルの公式マニュアルは、非常に充実しています。
欠点としては、更新頻度が非常に多く、重要な資料のリンク先が頻繁に変わります…

参考になるマニュアルを、こちらにまとめてみましたので、参考にしてください。
(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部分だけとなりますので、少ない工数で実装できたと思います。

ウェブペイメントプラスを実装する時の参考としてみて下さい。