Play Framework を始めたばかりの方向けに、サンプルを進めるうえで困ったところを共有する目的で書いています。
Play Framework 2.8.x 、paypayopa-sdk-java 1.0.3 を使って、ウェブペイメント-即時売上の「決済」「決済ステータス確認」を実装したときのメモです。
以下、目次
できたこと
- 決済用のQRコード作成
- 決済ステータスの確認
できていないこと
- キャンセル/返金
- Polling による決済ステータスの確認
- webhook の利用
大まかな設計内容
- 注文時の画面遷移:Item の選択→選択内容の確認→支払い用 QR コード→決済ステータス確認
- クライアント→サーバーへの注文データ送信・チェックは、Play Framework の Form を利用
- 注文内容の確認用に、注文内容の Hash Code を Cookie (Play Framework では Session) に保存
設計時に迷ったところ
- 注文時のフローは、選択→確認→決済とした(一般的な Web での注文も確認画面がある)が、確認はなぜ必要?
- 確認画面からデータを送るときは、Post で送る?セッションに持たせる?
- Redirect after Post (他には、Post/Redirect/Get みたいな言い方も)とは何?
- 生成した QR コードに2重支払いが発生するパータンはある?
- Post したデータは、どうやって Parse する?自分で実装しないとダメ?
実装時に迷ったところ
getCodesPaymentDetails
は使えて、getPaymentDetails
は使えない?(ウェブペイメントでは使えない)- 生成した QR コード画面を表示→戻るボタンを押したら、支払い画面にもどれない?( PaymentApi にはない。多分もどらせずに、再度生成させるのを想定している?)
参考にしたところ
- PayPay for Developers FAQ
- APIドキュメントガイド
- Scala Forms - Handling form submission
- PlayFramework の Form で Custom Mapping を作る2つのパターン
- Play FrameworkのFormの値のカスタムMappingを作る
以上でした。