Stripe決済システム 仕様書
1. システム概要
1.1 目的
Google Formsと連携したStripe決済システムで、フォーム送信後に複数の商品に対する決済リンクを自動生成し、メールで送信するシステムです。
1.2 主な機能
- フォームデータの取得
- Stripe顧客の作成
- 複数商品の決済セッション生成
- 決済リンクのメール送信
2. システム構成
2.1 使用技術
- Google Apps Script
- Stripe API
- Google Forms
- Gmail
2.2 必要な認証情報
- Stripe APIキー(テスト用:sk_test_51NevFh...)
- Google Apps Scriptの実行権限
3. 商品情報
3.1 商品一覧
const products = [
{ id: 'price_xxxx1', name: '講演会1(¥17,000/税込)'},
{ id: 'price_xxxx2', name: '講演会2(¥8,800/税込)'},
{ id: 'price_xxxx3', name: 'オンライン生配信・アーカイブ付き(¥4,400/税込)'},
];
3.2 商品設定方法
- Stripeダッシュボードで商品を作成
- 生成されたPrice IDを商品配列に追加
- 商品名と価格を配列内で設定
4. フォーム連携仕様
4.1 必要なフォーム項目
- お名前(必須)
- メールアドレス(必須)
4.2 フォームトリガー設定
- フォーム送信時にトリガーを実行
- onFormSubmit関数が呼び出される
- フォームの回答データはe.responseに格納
4.3 データ取得処理
const responses = formResponse.getItemResponses();
const formData = {};
responses.forEach(response => {
const title = response.getItem().getTitle();
const value = response.getResponse();
formData[title] = [value];
});
5. Stripe連携仕様
5.1 顧客作成
- エンドポイント: https://api.stripe.com/v1/customers
- メソッド: POST
- ヘッダー:
-
{ Authorization: 'Bearer ' + STRIPE_SECRET_KEY, 'Content-Type': 'application/x-www-form-urlencoded' }
- パラメータ:
- name: フォームから取得した名前
- email: フォームから取得したメールアドレス
- metadata: 注文ID等の付加情報
5.2 決済セッション作成
- エンドポイント: https://api.stripe.com/v1/checkout/sessions
- メソッド: POST
- 設定可能な支払い方法:
- クレジットカード
- 銀行振込(国内銀行振込)
- Google Pay
- Apple Pay
5.3 銀行振込設定
const paymentMethodOptions = {
customer_balance: {
funding_type: 'bank_transfer',
bank_transfer: {
type: 'jp_bank_transfer'
}
}
};
6. メール送信仕様
6.1 メール内容
- 件名: "お支払いリンクのご案内"
- 本文構成:
- 顧客名と挨拶
- 商品別の決済リンク
- 注意事項
6.2 注意事項記載内容
※恐れ入ります。銀行振り替え手数料はお客様負担にてお願いします。
※申し込み名と銀行振り込み名は、同じお名前でお願いします。
・お支払い完了時点で、受付完了となります。
・フォーム申込みから1週間以内に振込または決済が確認できない場合、キャンセルとさせて頂く場合があります。
7. エラーハンドリング
7.1 フォームデータ取得エラー
if (!formResponse) {
Logger.log("エラー: フォームデータが取得できません");
return;
}
7.2 Stripe顧客作成エラー
if (responseCode !== 200) {
Logger.log('Error creating customer: ' + responseText);
throw new Error('Failed to create Stripe customer: ' + responseText);
}
7.3 セッション作成エラー
- 各商品ごとに個別にエラーハンドリング
- エラーが発生した商品はスキップして処理を継続
8. セキュリティ考慮事項
8.1 API認証
- Stripe APIキーは環境変数として管理
- テスト環境と本番環境で異なるAPIキーを使用
8.2 データ保護
- 顧客情報は必要最小限のみ保持
- メールアドレスと名前のみStripeに送信
- 決済情報はStripeのシステムで管理
8.3 エラーログ
- システムエラーは全てログに記録
- 個人情報は最小限のみログに記録
9. 運用保守
9.1 動作確認項目
- フォーム送信時のデータ取得
- 顧客作成の成功
- 各商品の決済セッション作成
- メール送信の成功
9.2 定期メンテナンス項目
- Stripe APIキーの有効性確認
- 商品情報の最新化
- エラーログの確認
- 決済完了率の確認
9.3 トラブルシューティング
- フォームデータ未取得
- トリガー設定の確認
- フォーム項目名の確認
- Stripeエラー
- APIキーの有効性確認
- パラメータの正確性確認
- メール未送信
- Gmail APIの権限確認
- メールアドレスの形式確認