[golang]fiber API2~Checkout: Stripeでチェックアウトの実装

こんにちは、KOUKIです。

GolangのWebフレームワークであるfiberを使って、APIを開発しています。

前回は、Checkout APIの実装に着手し、リンクの取得やオーダー作成、トランザクションの実装を行いました。

今回は、Stripeでチェックアウト機能を実装します。

尚、本記事は「React, NextJS and Golang: A Rapid Guide – Advanced」コースを参考にしています。解釈は私が勝手に付けているので、本物をみたい場合は受講をお勧めします!

事前準備

モジュールのインストール

フォルダ/ファイル

前回

作るもの

Checkout機能を作りたいと思います。エンドポイントは、次の通りです。

エンドポイント
  • GET /api/checkout/links/{code}
  • POST /api/checkout/orders
  • POST /api/checkout/orders/confirm

今回は、「/api/checkout/orders/confirm」への処理を実装します。

Stripeとは

Stripeは、決算インフラサービスです。ショッピングカートなどで、商品を購入するとき決算処理などに利用できるので、大変便利です。

ある程度の機能なら無料で利用できるので、Signupしてみましょう。

シークレットキーの取得

ホームにアクセスすると、「公開可能キー」と「シークレットキー」が確認できます。

このうち、シークレットキーを使いますので、どこかにメモしておいてください。

ちなみに、このキーの値は誰にも知られないようにしておいてください

取得専用のプログラムを実装しておきましょう。

本当は、シークレットファイルを用意してそこから呼び出した方がいいと思うのですが、今回は簡単に実装しました。

オーダー作成処理

前回作成したorderController.goのCreateOrder関数にStripeを組み込んでみましょう。

検証

以下のパラメーターでリクエストを送ってみましょう。

  • URL: http://localhost:8000/api/checkout/orders
  • 形式: POST

OKですね。

idの値は、この後実装するチェックアウト処理で使いますので、どこかにメモしておきましょう。

また、Stripe側のログを見てみると、リクエストが届いていました。

チェックアウトの実装

チェックアウト処理を実装しましょう。

ルートの追加

「/api/checkout/orders/confirm」へのルートを追加します。

コントローラーの追加

「/api/checkout/orders/confirm」へのコントローラーを追加します。

検証

以下の手順に従って、検証を行いましょう。

Rankingの確認

チェックアウトするとユーザーのRevenueが増加します。そのため、増加前のデータを確認しておきましょう。

  • URL: http://localhost:8000/api/ambassador/rankings
  • 形式: GET

尚、空が返却される場合は、以下のコマンドを実行してください。

チェックアウトの確認

先ほど実装した、チェックアウトAPIへリクエストを送ります。

  • URL: http://localhost:8000/api/checkout/orders/confirm
  • 形式: POST

sourceに指定するidは、オーダー作成時に生成したIDです(前述の検証結果の中にあります)。

successになったので、OKですね。

Re: Rankingの確認

チェックアウト完了なので、もう一度Rankingを確認します。

  • URL: http://localhost:8000/api/ambassador/rankings
  • 形式: GET

Revenueが増加しているので、問題なさそうですね。

次回

次回は、機能を実装しましょう。

Go言語まとめ

ソースコード

ここまでのソースコードを以下に記載します。

key.go

orderController.go

routes.go

コメントを残す