チャットボットやWebで利用するLINE Pay決済関連APIを作成してみた
はじめに
こんにちは、中村です。LINE Pay用のAPIをAPI GatewayとLambdaで作成してみました。 店舗でQRを読み込んで決済を行うために利用します。(今回紹介するのは、裏側で利用するAPIです)
作成してみた
ソースコード及びCloudformationテンプレートは、githubにおいてあります。 cm-nakamura-yuki/sample-linepay-checkout
Lambdaについては、デプロイにApexを利用しています。またソースコードはTypescriptを利用していますのでどちらも設定しておきましょう。
またLambdaでは環境変数を多用しています。エンドポイントの変更やコードに直接記載したくないCredentialなどを別にしておくためです。
作成するAPIは、下記の4つです。
パス | メソッド | 説明 |
---|---|---|
/checkout | POST | 決済用URL発行 |
/item | GET | 商品情報取得 |
/item | POST | 商品情報登録 |
/list | GET | 商品一覧取得 |
checkout
LINE Payで決済を行うためのURLを発行します。
- productNameをキーに商品情報を取得
- 商品情報をもとにLINE Payへリクエスト
- 決済情報をDynamoDBへ格納
レスポンスで、LINE Payから取得したデータを返します。ConfirmUrlは、ユーザーがLINE Payで決済承認後に遷移するURLです。最終的な決済処理を行います。
item - GET
商品の詳細を表示する時に利用します。
パラメータ | 説明 |
---|---|
productName | DynamoDB検索用の商品名 |
レスポンスは、パラメータがない場合は400、パラメータが正常の場合はDynamoDBからGetしたデータを返します。
item - POST
管理者アプリ等で商品登録に利用します。
ボディ | 説明 |
---|---|
productName | 商品名 |
price | 金額 |
purchaseType | onetime,subscription(一般決済か継続決済) |
image | 画像ファイル名 |
DynamoDBへは、productNameをHASHキーにしAttributes内に他のデータを格納します。
list
DynamoDBに登録されているデータをScanし、データを返します。チャットボットなどのクライアント側で商品一覧を表示するのに利用します。
まとめ
Cloudformation利用してAPI Gateway + LambdaのAPIが出来上がりました。 どこかのタイミングで次はAPIを利用したWeb/チャットボットを作成しようと思います。
チャットボット開発は弊社にご相談ください。