8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[StripeUpdates] StripeのPaymentIntentで、カード情報の保存と保存できない決済情報の処理を同時に行う方法

Posted at

Stripeで支払いを処理する際に利用するPayment Intentでは、決済時に利用したカード情報を保存することができます。

これによって、ECサイトでの2回目以降の購入処理や、「手付金を請求し、後で残額を請求する」ビジネスモデルなどへの対応が可能になります。

支払い情報を保存するには、setup_future_usage: 'off_session'を設定しましょう。

      const pi = await stripe.paymentIntents.create({
        payment_method_types: ['card'],
+        setup_future_usage: 'off_session',
        amount: 120,
        currency: 'jpy',
      });

「保存できない」支払い方法

Stripeがサポートしている決済方法の中には、支払い情報を保存して次回以降の決済に利用することができないものも存在します。

例えばコンビニ決済は、2回目以降の注文でも顧客がコンビニで支払いを完了させる必要があるため、利用することができません。

      const pi = await stripe.paymentIntents.create({
-        payment_method_types: ['card'],
+        payment_method_types: ['card', 'konbini'],
        setup_future_usage: 'off_session',
        amount: 120,
        currency: 'jpy',
      });

そのため、保存できない支払い情報が含まれたPayment Intentを作成しようとすると、以下のエラーが発生します。

StripeInvalidRequestError: `setup_future_usage` cannot be used with one or more of the values you specified in `payment_method_types`. Please remove `setup_future_usage` or remove these types from `payment_method_types`: ["konbini"].

保存できない支払い方法も混えて処理する方法

「保存できない決済方法もサポートしつつ、カードの情報は保存したい」ケースでは、setup_future_usageの設定場所を以下のように変更しましょう。

      const pi = await stripe.paymentIntents.create({
        payment_method_types: ['card', 'konbini'],
-        setup_future_usage: 'off_session',
        amount: 120,
        currency: 'jpy',
+        payment_method_options: {
+          card: {
+            setup_future_usage: 'off_session',
+          },
+        },
      });

payment_method_options側で、カード決済の時のみ保存する設定ができます。

こちらのコードであれば、APIがエラーを返さず、PaymentIntentを作成することができます。

これによって、保存できない決済情報も処理するためだけに、PaymentIntentを複数作成する必要がなくなります。

参考記事

今後の支払いのためにカードを最適化する | Stripe

[PR] Stripe開発者向け情報をQiitaにて配信中!

  • [Stripe Updates]:開発者向けStripeアップデート紹介・解説
  • ユースケース別のStripe製品や実装サンプルの紹介
  • Stripeと外部サービス・OSSとの連携方法やTipsの紹介
  • 初心者向けのチュートリアル(予定)

など、Stripeを利用してオンラインビジネスを始める方法について週に2〜3本ペースで更新中です。

-> Stripe Organizationsをフォローして最新情報をQiitaで受け取る

8
5
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
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?