2024-10-06
【Tips - Stripe】実例でわかるシリーズ
みなさんどうも、こんばんみ~。ぎょうざです。
はい、今更ながら決済機能をWebアプリケーションに実装するのに便利なインフラサービスである
Stripe(ストライプ)を利用する際に、ぎょうざが躓いたところを備忘録として記録しておきます。
同じようなケースあるいは現象で困っている方の参考になれば幸いです。
【目次】
<Useful> ▶ <Error> ▶ [Error] Failed to POST: Post "http://localhost:4242/stripe_webhooks": dial tcp [::1]:4242: connectex: No connection could be made because the target machine actively refused it. <Warn> ▶ (請求する側が注意したいこと)Webアプリ上はUSD表記でも、内部的にはセント換算で請求される ▶ (請求する側が注意したいこと)決済手段に応じて利用手数料が掛かる (2024/10/13時点) ▶ 〆の一言
<Useful>
▶
<Error>
▶ [Error] Failed to POST: Post "http://localhost:4242/stripe_webhooks": dial tcp [::1]:4242
: connectex: No connection could be made because the target machine actively refused it.
- 現象:Stripeに関するAPIを呼び出したとき、指定したURL先のエンドポイントが起動されていない、旨のエラーがターミナル上に表示される
- 原因:
stripe listener --forward-to
以下で指定したURLが、各自が実装したAPIのエンドポイントURL(例:”localhost:3000/api/webhook”
)になっていない - 解決策:ターミナル上で
stripe listen --forward-to "各自が実装したAPIのエンドポイントURL"
。公式ドキュメントのstripe listener 文言をそのままコピペしていないか、改めて確認してみましょう!
<Warn>
▶ (請求する側が注意したいこと)Webアプリ上はUSD表記でも、内部的にはセント換算で請求される
- 現象:ドル換算で請求したい。
- 原因:Stripeの仕様上、USDの請求額は数値がセント換算なので、ドル表記どおりの請求だと思っていると、実際には表記の0.01倍の請求になってしまう→請求する側に不利益が生じてしまう可能性がある。
- 解決策:Webアプリ上のドル表記価格の値を、実装するソースコード上では内部的に100倍する
// USD通貨で、1回きりの請求の場合の実装例 const line_items: Stripe.Checkout.SessionCreateParams.LineItem[] = [ { quantity: 1, price_data: { currency: 'USD', product_data: { name: product.title, description: product.description!, }, // 各自で設定したUSD表記の価格に100を掛け算するのを忘れずに!!! unit_amount: Math.round(product.price! * 100), }, }, ];
▶ (請求する側が注意したいこと)決済手段に応じて利用手数料が掛かる (2024/10/13時点)

- 現象:決済額が手数料として引かれるタイミング(調べ中)
- 原因:(調べ中)
- 解決策:(調べ中)
▶
〆の一言
Stripeは、決済機能をWebアプリケーションなどへ組み込むうえで便利です。
サブスクリプションや買い切り、異なる対応通貨など、決済形式を細かく設定したい方にもおすすめです。
ここまで読んでいただき、ありがとうございました。
以上、ぎょうざでした。