開発環境
Laravel9,
2023/11/25時点のPayPay for Developers
きっかけ
決済システムをWEBに実装する際に、クレジット決済は初めに思い浮かぶと思います。
しかし、クレジット決済は入力項目が多いのと、カード情報がぬきとられないか怖い
という不安要素で利用ユーザーの購買意欲をごっそりけずる可能性があります。
また、自分自身、夜の犬田布岬 神秘体験ツアー in Tokunoshimaという事業をする際にも
WEB上での決済をすることによってお金の流れが明確化され、現地でのお金に関するトラブルも大いに
防げるとかんがえまして、第一決済機能としてPayPayを採用することにしました。
全体像の把握
はじめにカレンダーを表示し、カレンダーの日付(11/29)をおしますと、モーダルが出現します。
次に19時~の枠の”予約可”ボタンをおしますと、PayPay決済の画面へ移行します。
ここで、ログイン情報を入力します。(テストユーザーがPayPay for Developersから提供されますまでのそちらを利用してログインします。)
ここで、携帯にインストールしているPaypayアプリからQRコードを読み込んでもいいですし、
すでにログイン情報は得ているので、そのまま”支払う”ボタンをおすだけで支払いが完了します。
支払い後はもとの画面にもどり、得た情報を出力し、予約が完了してます。
音無し動画です↓
以上が全体の流れになります。Paypay支払い実装の部分のみを説明します。
総括的にいうと、たしかにPaypayの公式ドキュメントに必要な情報は全て書かれているし、いったんわかればそんなにむずかしくない、
が参考文献がすくないですよね、💦
工程⓪
ひとまず、payPay for Developersに登録して、必須の情報である、
上記3つの文字列を取得しましょう。工程②で使います。
工程① 必要な部品をコマンドでインストール
公式にも書いてますが、下記のコマンドをLaravelのプロジェクトフォルダでうつだけです。
composer require paypayopa/php-sdk
工程②クライアントをビルドする
“クライアントをビルドする”と言われましてもとなるかもしれませんが、あなたの登録しているサービスを特定するみたいな意味合いです、おそらく。
やることは、先ほどの3つの情報を記述する必要がありますが、
流れとしては、”予約可”ボタンをおして(VIEW)、その後、Paypay決済ページに遷移するまえのcotrollerに記述します。一例をだします。
VIEW
ROUTE
つぎに実際の処理であるGuestReserveControllerの’reserveCheck’メソッドにいきます。
Controller1
自分の場合は、PaypayControllerを作成して、そこに処理をまとめましたが、ここは任せます。
では、PaypayControllerをみにいきましょう。
PaypayController
これが実処理です。config(‘services.paypay.api_key’)と書いているのは、envファイルを読み込みにいくためですが、単に工程⓪の3つの文字列です、なので、後々クライアントをビルドするのは何回も利用する処理だと気づき書き直し整理しましたが、↓の画像と同じ意味です。
ちなみに本番環境で稼働させる場合は、19行目のfalseをtrueにします。その際は、本番用に上記の3つ文字列も変えます。
工程③Paypay決済画面や情報の作成
クライアントをビルドすると、また呼び出し元のCotroller1(仮名)に戻ります。ここら辺は自由にしてください、自分も初めはそのまま同じコントローラー内に処理を全部書いて完成させ、その後、PaypayController等を作成し、処理を整理しました。
Controller1
ひとまず、元のCotroller1にもどると次は、QRコードを生成する処理(結果的にはQRコードだけでなくPaypay支払い機能まるまる作成するコードになりました)をみにいくため、PaypayControllerのcreateCQCPayloadメソッドに行きます。
PaypayController
上記の処理をおこなうと、Paypay決済画面もできてます、あとはそこに遷移してそこで決済をするんですが、そのまえに多少はチェックしたほうがいいので、一例としてその様子を示します。↓
Controller1
Paypay決済画面の作成ができたら、そこの画面に飛ぶことができたらOKです。
Laravelで外部のURLに飛ぶ際には、redirect()->away(“外部URL”);
です。そして、そのPaypay支払い画面のURLは、$responseの中をさぐれば見つかります。
工程④Paypay決済画面での決済終了後のうまくいったのかの確認
Paypay支払いが完了しますと、指定したURLに遷移します。PaypayControllerのcreateCQCPayloadメソッドで指定しましたね。
そこのrouteからcontollerにもどってきて、次は実際に決済がうまくいって、完了したのかを知りたいです。そしてうまくいった場合にのみ、自分のアプリでの予約処理を後続したいです。
では、さっそく確認しましょう。
ROUTE
Controller1
以上がPaypay決済のコードの流れですね。
感想
あえて、コピーできない仕様にするために画像で説明してます、
というのも、Paypay決済画面に導くための処理でも、決済完了後の確認の処理でも、
それぞれのアプリの必要な引数等が混じるので、コピーするよりも、内容を理解したほうがいいかと思いました。
そして、一度理解してしまえばシンプルです😉
Paypayは日本の企業でこんなに便利にさっと決済できる機能をAPIとして提供しているので、とても優秀だと思います。優秀な人たちがつくるAPIというものに触れられてたよかったです。
というのも、実際にAPIをLaravelアプリに独自で実装したのは初めてだったので今回のを機にAPIに対する親しみが持てたからです。
次は、Paypay決済完了後のキャンセル処理について書けたらと思います。
返信がありません