0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

google formから google appscriptを利用して、メール送信、stripe送信

Posted at

Stripe決済システム 仕様書

1. システム概要

1.1 目的

Google Formsと連携したStripe決済システムで、フォーム送信後に複数の商品に対する決済リンクを自動生成し、メールで送信するシステムです。

1.2 主な機能

  1. フォームデータの取得
  2. Stripe顧客の作成
  3. 複数商品の決済セッション生成
  4. 決済リンクのメール送信

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 商品設定方法

  1. Stripeダッシュボードで商品を作成
  2. 生成されたPrice IDを商品配列に追加
  3. 商品名と価格を配列内で設定

4. フォーム連携仕様

4.1 必要なフォーム項目

  • お名前(必須)
  • メールアドレス(必須)

4.2 フォームトリガー設定

  1. フォーム送信時にトリガーを実行
  2. onFormSubmit関数が呼び出される
  3. フォームの回答データは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 決済セッション作成

5.3 銀行振込設定

const paymentMethodOptions = {
    customer_balance: {
        funding_type: 'bank_transfer',
        bank_transfer: {
            type: 'jp_bank_transfer'
        }
    }
};

6. メール送信仕様

6.1 メール内容

  • 件名: "お支払いリンクのご案内"
  • 本文構成:
    1. 顧客名と挨拶
    2. 商品別の決済リンク
    3. 注意事項

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 動作確認項目

  1. フォーム送信時のデータ取得
  2. 顧客作成の成功
  3. 各商品の決済セッション作成
  4. メール送信の成功

9.2 定期メンテナンス項目

  1. Stripe APIキーの有効性確認
  2. 商品情報の最新化
  3. エラーログの確認
  4. 決済完了率の確認

9.3 トラブルシューティング

  1. フォームデータ未取得
    • トリガー設定の確認
    • フォーム項目名の確認
  2. Stripeエラー
    • APIキーの有効性確認
    • パラメータの正確性確認
  3. メール未送信
    • Gmail APIの権限確認
    • メールアドレスの形式確認
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?