前人未踏の領域へ WEB・インフラ・プログラミング全般編

フロントエンド、バックエンド、インフラ、言語など、アプリ開発、IOT以外の記録

Stripe: API実行レシピ

RailsコンソールおよびRails内でコピペして使う用の実例サンプル集。

カスタマー

カスタマーを取得する
cus = Stripe::Customer.retrieve("cus_XxwqzgXcn1XXsk")
サブスクリプション付き
cus = Stripe::Customer.retrieve("cus_XxwqzgXcn1XXsk", {expand:'subscriptions'})

サブスクリプション

カスタマーに紐づくサブスクリプションを1件取得する
sub = Stripe::Subscription.retrieve(cus.subscriptions.data[0].id)
サブスクリプションインボイス付きで1件取得する
sub = Stripe::Subscription.retrieve({id:sub.id ,expand: ['latest_invoice']})
sub.latest_invoice でインボイスデータが取得できる
サブスクリプションインボイスとPaymentIntent付きで1件取得する
sub = Stripe::Subscription.retrieve({id:sub.id ,expand: ['latest_invoice.payment_intent']})
sub.latest_invoice.payment_intentでPaymentIndentが取得できる
カスタマーに紐づくサブスクリプション一覧を取得する
subs = Stripe::Subscription.list({customer: cus.id)
カスタマーの特定の商品に紐づく一覧を取得する
subs = Stripe::Subscription.list( { customer: cus.id, 
           price: 'price_1H860RDmZZkQvLJisnZXJvi' } )

インボイス

サブスクリプションに紐づく最新のインボイスを取得する
invoice = Stripe::Invoice.retrieve(sub.latest_invoice)

PaymentIntent

インボイスに紐づくPaymentIntentを取得する
pi = Stripe::PaymentIntent.retrieve(invoice.payment_intent)
PaymentMethodをPaymentIntentに紐づける

支払いに失敗したPaymentIntentに新しい支払い方法を紐づける場合などで使用。statusがrequires_confirmation になるので別途confirmが必要。subscription.statusincompleteだとエラー

pi = Stripe::PaymentIntent.update(pi.id, {payment_method: cus.invoice_settings.default_payment_method })
PaymentMethodをPaymentIntentに紐づつつConfirmする

支払いに失敗したPaymentIntentに新しい支払い方法でcomfirmする。subscription.statusincompleteだとエラー。

pi = Stripe::PaymentIntent.confirm(pi.id, {payment_method: cus.invoice_settings.default_payment_method })
顧客ごとの次回請求分のインボイスを取得する

次回の請求がない場合にはエラーになるので注意

Stripe::Invoice.upcoming({customer: "cus_XxwqzgXcn1XXsk" })
/* Responsive: yes */