VCA

AIで決済を加える:Stripe 概観

決済コードは「動くように見える」だけでは不可。初心者が押さえる要点:ホスト型チェックアウト、webhook が正、フロントに委ねてはいけないもの。

公開日 更新日 レビュー日 約2分で読了編集方針#実践ガイド#決済#セキュリティ
学習ルートSaaSルート

ひとことで言うと

金額・成否・二重課金すべて正確でなければならない。決済の主要部品と、「支払い成功」をバックエンドの webhook で判断する理由を扱う。

作れるもの

決済の主要部品(Checkout・webhook・照合)を理解し、フロントに委ねてはいけない判断が分かる。

決済は見た目より複雑

普通の機能を間違えても画面が変なだけ。決済を間違えると本当にお金が壊れます——金額違い、払ったのに有効化されない、ダブルクリックで二重課金。だから「動くように見える」では全く足りません。朗報は、自分でクレジットカードを扱う必要はないこと。最も難しい部分は Stripe のような決済事業者に任せます。

最も省力:ホスト型チェックアウト(Checkout)

Stripe にチェックアウト画面を持たせ(Hosted Checkout)、ユーザーは Stripe のページでカード番号を入力し、支払い後に自分のサイトへ戻ります。これでカード番号は自分のサーバーを一切通らず、最も面倒な PCI 準拠を回避できます。初心者はほぼここから始めるべきです。

要:支払い成功はフロントではなく webhook で判断

最も多く、最も危険な誤り:「ユーザーが成功ページに戻ったから商品を有効化」。実は払っていない、途中で閉じたかもしれません。信頼できる信号は、Stripe がバックエンドへ送る webhook イベントです。流れ:

省けない3つ

  • webhook 署名検証 + eventId 重複排除:イベントが本当に Stripe から来たか(署名)、同一イベントは一度だけ処理(eventId を記録し、再送による二重有効化を防ぐ)。
  • 冪等性(idempotency):同じ支払いリクエストの再送は同じ結果に。二重課金しない。Stripe に idempotency key の仕組みがあります。
  • カード番号を自分で保存しない:カードは Stripe に任せ、返ってくる id だけ保存。自前保存は巨大な準拠・漏洩リスク。

Stripe は取引ごとの手数料制で月額の下限はありませんが、各課金に手数料がかかります——公開前に料率を確認しましょう。

AIにはこう言う

要求すること:Stripe のホスト型 Checkout を使う、有効化ロジックは webhook に置く(署名検証 + eventId 重複排除)、冪等性を加える、支払い成功をフロントで判断しない、カード番号を自前保存しない。これを受け入れ基準にしないと、「フロントが支払い済みと言ったから有効化」という危険版が返ってきます。

次のステップ

よくある質問

初心者が決済を入れて安全?クレジットカード準拠(PCI)に引っかかる?

Stripe のホスト型チェックアウトなら比較的安全です。カードは Stripe のページで入力され、あなたのサーバーを一切通らず、カードを保存せず、最も重い PCI 準拠は Stripe が担います。初心者は自前のカード欄を作らず、ホスト型から始めるのが安全。

なぜフロントの「成功ページ」で商品を有効化してはいけない?

成功ページに戻ったことは、支払い完了を意味しないからです——途中でキャンセル、回線切断、あるいはそのページの偽造もありえます。信頼できる唯一の信号は Stripe がバックエンドへ送る webhook イベント(署名検証 + 重複排除)。フロントの成功ページはUI表示にすぎず、有効化の根拠にしてはいけません。

参考資料

  1. Stripe DocumentationStripe
  2. Stripe PaymentsStripe

SaaSルート の次のステップ: LPからSaaSへ