この記事はJP_Stripesアドベントカレンダーの記事です。 StripeのWebhookとして作成したAPIを、StripeのWebhook以外から実行できない様にする実装をNode.jsで行います。 なぜ署名チェックするのか 公開されたAPIになるので、外部から自由にコールされるのはいろいろよろしくありません。 StripeのWebhookがなげてくるフォーマットを知ってい...
この記事はJP_Stripesアドベントカレンダーの記事です。 2019年のre:invent系列で発表されたサービスのひとつ、EventBridge。 これをStripeと連携させるサンプルプロジェクトがGitHubにありましたので、さっそく試してみました。 セットアップ Serverless Frameworkのセットアップ まずはデプロイに使うServerless Fra...
これはStripeアドベントカレンダーの記事です。 Stripeの処理系統は原則サーバー側で実行されます。そうなるとAWSであれば、だいたいLambda + API Gatewayを使うことになります。 この場合に意識しておくと良いかなと思ったことをいくつかまとめました。 1: APIキーはSystems Manager or Secret Managerに入れる APIキーをコ...
請求サイクルを変更する必要が出てきたのですが、Stripeではアクティブなsubscriptionの請求サイクルを更新することはできません。 まぁ、ユーザーからしたら当然のことですが。 ただ、開発環境だとたまにこのあたりを変更したくなる時があったりするので、plan_id指定で一括再生成するコードを書いてみました。 コード 長いです。 import * as Stripe ...
いつから可能なったのか不明ですが、Stripeでカスタマー情報を更新することで自動送信するメールの言語を変更できるようすです。 言語を変えた状態。「詳細情報の更新」から変更できる 日本語に設定すると、請求・領収メールの文面などが日本語化されます。 Node.jsで実行する customers.createでpreferred_localesを指定すればOKです。 stri...
案外整理できてなかったので、自分で振り返るのも兼ねて。 1: Finalizedすると更新できないデータが有る invoices.updateは下書き状態のものにしか実行できない項目がいくつかあります。 Draft invoices are fully editable. Once an invoice is finalized, monetary values, as well as ...
例えば「無料プランは1ユーザー1つだけしか契約できない」とかしたいですよね。 そういう時、Stripeではsubscriptions.listのAPIを利用して特定のプランをSubscribeしているか否かを見ることができます。 コード const hasSubscribed = async (customerId, plan) => { const result = a...
Billingで一番触りたくなくて、適当にすると一番もめる箇所。それが解約まわりですね。 通常のプランについて もっとも簡単な方法は、ただsubscriptions.delのAPIを叩くことです。 await stripe.subscriptions.del(subscriptionId) その場でsubscriptionが解約されます。 途中で解約されたユーザーに対して、比例配分を行...
Stripe Billingではクラウドサービスのような「使った分だけ請求する」従量課金が作れます。「ユーザー1人につき100円」のようなこともできます。 今回はNode.js(TypeScript)でこのあたりの諸々を実装する方法をまとめました。 プランを作る まずは従量課金のプランを作ります。 今回作るプランは、「1単位10円の月額プラン」とします。 import * as Str...
今月請求される内容をリストアップしてSlackなどに投げたいので、ざっとピックアップ系の処理をあらいました。 コード invoices.listの引数にdue_dateを渡すことで指定期間のinvoiceだけ引っ張れます。UNIXタイムスタンプを文字列で渡す必要がある点に要注意です。 import * as Stripe from 'stripe'; import * as moment ...