技術ブログ

プログラミング、IT関連の記事中心

Node.jsでStripeのカスタマー(顧客)のクレジットカードをデフォルトカードに設定方法 stripe.customers.update default_payment_method

目次

事前準備

以下から、Stripeのアカウントを作成してダッシュボード画面まで登録を進める。

stripe.com

以下の記事を参考に、カスタマーの登録が完了していること。

Node.jsでStripeのカスタマー(顧客)の登録方法 stripe.customers.create

Stripeからトークンを取得

以下のサイトにアクセスします。

https://dashboard.stripe.com/test/apikeys

テスト環境がONになっている事を確認します。
※ONになっていない方は、ONにしておいてください。

制限付きのキーを作成」を押下します。

キーの名前に任意の名前を入力します。(何でもいいです)

Customers」の権限を「書き込み」に変更します。

画面最下部の「キーを作成」を押下します。

テストキーを表示」を押下して表示された「トークン」を後程利用するので、残しておいてください。

カスタマーIDの確認

以下のダッシュボードにアクセスし、顧客を選択します。

https://dashboard.stripe.com/test/customers

顧客画面の左側に記載されている「cus_」から始まるものがカスタマーIDです。
※プログラム上で使用します。

アカウントにカード情報の登録

以下の記事を参考に、カード情報を登録しておいてください。

Stripeのカスタマー(顧客)の支払い方法の設定方法(クライアント側 純粋なHTML/JavaScript jQuery)【2/2】

また、カード登録後のリダイレクト先のURLのクエリパラメータから「setup_intent」の値「seti_XXXX」を取得しておいてください。

Node.jsの関数用意

以下のコマンドを実行して、Node.jsのプロジェクトにStripeをインストールします。

npm i stripe

以下の関数を用意します。
rk_test_XXXXXXXXXXXXXXXXXX」の部分は「Stripeからトークンを取得」で取得したトークンに置き換えてください。
cus_XXXXXX」の部分は「カスタマーIDの確認」で取得したカスタマーIDに置き換えてください。
seti_XXXX」の部分は「アカウントにカード情報の登録」で取得した「setup_intent」の値に置き換えてください。

var stripe = require("stripe")("rk_test_XXXXXXXXXXXXXXXXXX");

const defaultCard = async (customerId, setupIntentId) => {
  const setupIntent = await stripe.setupIntents.retrieve(setupIntentId);
  if (!setupIntent.payment_method) {
    return response.status(204).end();
  }
  const paymentMethodId =
    typeof setupIntent.payment_method === "string"
      ? setupIntent.payment_method
      : setupIntent.payment_method.id;

      if (paymentMethodId) {
    const res = await stripe.customers.update(customerId, {
      invoice_settings: {
        default_payment_method: paymentMethodId,
      },
    });
    console.log(res);
  }
};

用意した関数を以下の様に実行する事で、該当のカードをデフォルトカードに設定できます。

defaultCard("cus_XXXXXX", "seti_XXXX");

カード登録情報確認

以下のサイトにて、カード登録したカスタマーを選択すると、「支払い方法」にカード情報の登録が確認できます。

https://dashboard.stripe.com/test/customers

公式ドキュメント

公式ドキュメントは以下をご参照ください。

stripe.com