LoginSignup
6
6

More than 3 years have passed since last update.

stripeの買い切り(one-time payments)の商品購入処理をFirebase ExtensionsのRun Subscription Payments with Stripeでコードを書かずに実装する

Last updated at Posted at 2021-05-04

こんにちは。もぐめっとです。

mogmet.JPG

最近、おでこのシワとは仲が良いです。with Odekoな人生を歩んでます。

最近Run Subscription Payments with Stripeで買い切りタイプの商品が決済できるようになりましたね。

本日はこれを試してみたので詳細を解説いたします。

インストール

Extensionsを開いて更新してない人は更新しましょう。
image.png
image.png

新規の人は下記の記事からExtensionインストールや設定をしてください。

買い切りタイプの商品を設定する

stripeの管理画面で商品のページにいき、「商品を追加」ボタンを押下します。
image.png

料金体系から一括を選択すると一回限り(one-time)の商品になります。「商品を保存」ボタンを押下します。

image.png

[宣伝]スタミナ制度ではありますが、何度でも遊べるようにはできてるモバイル版ワンナイト人狼はオンラインでみんなで遊べます!よかったら遊んでね!そのうちスタミナ回復もいい感じにできるようになります!

挙動を確認してみる

stripe公式サンプルでもすでに買い切りタイプの商品に対応してるので起動してみてみます。
(サンプルまでの起動の仕方は小生の記事を参照ください)

ボタンは「Subscribe」のままですが、そのまま先程作った商品をSubscribeします。
image.png

stripeの画面に遷移して購入ができます。

image.png

購入が無事完了するとcustomers/{uid}/payments/{id}というのが生成されて、購入情報がfirestore上に保存されます。

スクリーンショット 2021-05-04 9.32.45.png

ただ、このドキュメントには入力された住所なども入ってくるのでセキュリティルールは厳重にするように気をつけてください。

実装面な話

買い切りタイプの商品の値段は products/{id}/prices/{id}のドキュメントでtypeがone_timeに設定されます。
image.png

こちらを判定して、チェックアウトのセッションを生成する時に、modeにpaymentを指定してあげることで買い切りの処理をすることができます。
サンプルコードでいうとこのへんの処理になります。

  const checkoutSession = {
    collect_shipping_address: true,
    tax_rates: taxRates,
    allow_promotion_codes: true,
    line_items: [selectedPrice],
    success_url: window.location.origin,
    cancel_url: window.location.origin,
    metadata: {
      key: 'value',
    },
  };
  // For one time payments set mode to payment.
  if (prices[selectedPrice.price]?.type === 'one_time')
    checkoutSession.mode = 'payment'; // これをセットすると買い切り処理になる

  const docRef = await db
    .collection('customers')
    .doc(currentUser)
    .collection('checkout_sessions')
    .add(checkoutSession);

まとめ

Run Subscription Payments with Stripeで買い切りの商品も対応できるようになりました!
これでサブスク以外にも追加で商品を購入みたいなことができるようになるのでビジネスの幅もより手軽に広げることができますね!

最後に、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね!

他にもCameconOffchaといったサービスも作ってるのでよかったら使ってね!

また、チームビルディングや技術顧問なお話も受け付けてますので御用の方は弊社までお問い合わせください。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6