AIで決済を加える:Stripe 概観
決済コードは「動くように見える」だけでは不可。初心者が押さえる要点:ホスト型チェックアウト、webhook が正、フロントに委ねてはいけないもの。
ひとことで言うと
金額・成否・二重課金すべて正確でなければならない。決済の主要部品と、「支払い成功」をバックエンドの 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 重複排除)、冪等性を加える、支払い成功をフロントで判断しない、カード番号を自前保存しない。これを受け入れ基準にしないと、「フロントが支払い済みと言ったから有効化」という危険版が返ってきます。
次のステップ
- まずアカウント/権限を整える:AIでログインシステムを作る
- 注文/支払いデータの設計:AIでデータベースを設計する
よくある質問
初心者が決済を入れて安全?クレジットカード準拠(PCI)に引っかかる?
Stripe のホスト型チェックアウトなら比較的安全です。カードは Stripe のページで入力され、あなたのサーバーを一切通らず、カードを保存せず、最も重い PCI 準拠は Stripe が担います。初心者は自前のカード欄を作らず、ホスト型から始めるのが安全。
なぜフロントの「成功ページ」で商品を有効化してはいけない?
成功ページに戻ったことは、支払い完了を意味しないからです——途中でキャンセル、回線切断、あるいはそのページの偽造もありえます。信頼できる唯一の信号は Stripe がバックエンドへ送る webhook イベント(署名検証 + 重複排除)。フロントの成功ページはUI表示にすぎず、有効化の根拠にしてはいけません。
参考資料
- Stripe Documentation — Stripe
- Stripe Payments — Stripe
SaaSルート の次のステップ: LPからSaaSへ →