Firebase extensionsのSend Invoices using Stripeを使って請求を送る
こんにちは。もぐめっとです。
最近熱いですが、家にずっと引きこもってるのであまり夏を感じれてないです。
Firebase ExtensionsのRun Subscription Payments with Stripeを使ってサブスク課金をコードを書かずに実装する
に引き続きもうひとつのstripe製extensionを試してみたので使うまでのはうとぅ〜を残しておきます。
目標
firestoreのレコード追加でstripeの請求を作れるようにします。
Send Invoices using Stripeのセットアップ
Send Invoices using Stripeからextensionのインストールを行います。
料金プランをblazeプランにアップグレードしてないと「次へ」ボタンが表示されませんが、アップグレードしたら次へ進めます。アップグレードしていない方はアップグレードしましょう
Cloud Functions deployment location
Cloud Functionsをどこで動かすかの設定。
日本人なんで、とりあえずTokyoにしておきましょう。
Invoices collection
請求を作る時のfirestoreの保存先コレクションを入力します。
Stripe API key with restricted access
stripeのAPI keyを入力します。
stripeのダッシュボードを開いて、「開発者」→「APIキー」で表示される画面で、「制限付きのキーを作成」を押下します。
キーの名前を適当につけて、
Customersの書き込み権限と、
Invoicesの書き込み権限を与えます。
設定したら下部にある「キーを作成」を押下
無事作れたので、rk_xxx_XXX...というトークンをコピーして、はっつけましょう。
ちなみにこの制限付きキーでやらないと、後ほどドキュメントを作った時にCloud Functionsさんに
Error: 😞[Error] Error when making a request to the Stripe API:
at Object.stripeError (/workspace/lib/logs.js:37:19)
at exports.sendInvoice.functions.handler.firestore.document.onCreate (/workspace/lib/index.js:153:14)
at process._tickCallback (internal/process/next_tick.js:68:7) { Error: This API call cannot be made with a publishable API key. Please use a secret API key. You can find a list of your API keys at https://dashboard.stripe.com/account/apikeys.
といったエラーで怒られます。ちゃんとしたAPI keyを付与してあげましょう。
Days until payment is due
請求の支払期限の設定。この設定した日数が終了すると請求は自動的に終了する。とりあえずデフォルトの7日に。
Stripe webhook secret (Optional)
Stripeからfirestoreのドキュメントを更新できるようにする用のwebhookのsecret key。使用する場合はインストールしてから行うので一旦空白に。
上記を埋めたら「拡張機能をインストール」を押下。
webhookの設定
firebase extensionsのSend Invoices using Stripe画面を開きます。
「この拡張機能の動作」にある、「(Optional) Update Cloud Firestore documents with invoice statuses」の項目でのURLをコピーしておきます。
stripeのwebhook画面で、「エンドポイントを追加」ボタンを押下します
エンドポイントURLに先程コピーしたURLを貼り付けして、invoiceのイベントをすべて選択します。
webhookの設定が完了したら、署名シークレットをコピーします。
Stripe webhook secretに先程コピーした署名シークレットを貼り付けて、「保存」を押下します。
これにより、請求のステータスが支払い済みになったり、お金回収できなかったと変わったりしたら連動してfirestoreのinvoicesの値も変わることができます。
請求のテスト
Extensionsの構成も終了したら早速firestoreでレコードを作って請求テストをしてみましょう!
「コレクションを開始」を押下して、先程Invoices collectionで設定したコレクション名でコレクションを作成します。
下記データでドキュメントを生成してみます。ワンナイト人狼を2個購入したとしましょう。
[宣伝]ちなみにワンナイト人狼にはMONSTER verというものがあり、通常のワンナイト人狼とはひと味違ったプレイが可能です!アプリにもモンスターverの役職はあるのでやってみてね!
ドキュメント作成後、しばらくした後にstripeのダッシュボードのインボイス画面を開いてみましょう。
成功していれば先程の請求が無事連携されて表示されているはずです。
ちなみにfirestoreの方にも自動的にstripeから値が追加されています。
ここから請求書のステータスを更新してみます。
再びstripeのインボイス画面で先程の請求を開いてみます。「...」から「インボイスのステータスを変更」を押下します。
firestoreもuncollectibleになりました。
ちなみに支払い済みイベントは手動でやる場合、ライフサイクルからはずれるためかcloud functionsで下記の警告が出て無視されます。ちゃんとユーザが支払えば更新されるはず。多分。(未確認)
🙈 Ignoring event "invoice.paid" because it because it isn't a relevant part of the invoice lifecycle
(ログが可愛い)
まとめ
請求をおくるのもコードを書かずに実装できてしまいました!
webで売買を行うときは積極的につかってみたいですね。
[最後に宣伝]
こんなサービス作ってるのでよかったら使ってみてください!
Author And Source
この問題について(Firebase extensionsのSend Invoices using Stripeを使って請求を送る), 我々は、より多くの情報をここで見つけました https://qiita.com/mogmet/items/9ca447be07c6fc2c07c5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .