定期決済プロセス,Stripe決済 20211120
サブスクリプション申込をオンラインで受け付けるワークフローです。
顧客は、試用版IDをキーにオンラインで仮申込します。仮申込後、顧客は、クレジットカード情報を入力し、本申込します。
課金は Stripe で定期的に決済されます。
仕事の流れ (ワークフロー図の複雑度:44)
- 451.ライセンス更新
- ライセンス更新担当が、受注内容を元にライセンスを更新します。
- 432.Charge 中止判断
- 営業担当者が、Charge 中止を判断します。(3時間判断なしなら Charge 自動実行)
- 61Charge 実行
- ワークフロー基盤が、Charge 実行フローを実行します。
- 55Charging Stop
- ワークフロー基盤が、解約プロセス/契約変更プロセスからの通知を待ち受けます。
- 41Stripe Customer ID 生成
- ワークフロー基盤が、Stripe サービスから Customer ID を取得します。
- 42Stripe Charge
- ワークフロー基盤が、Stripe サービスを使用し、課金を実行します。
- 40お手続き詳細内容セット
- ワークフロー基盤が、本申し込み画面に表示される、手続き詳細内容をセットします。
- 23件名セット
- 25件名セット
- 28件名セット
- 50件名セット
- 58件名セット
- 60件名セット
- 70件名セット
- 65年払い:課金期間
- ワークフロー基盤が、(年払い用)次回課金期間をセットします。
- 52料金計算
- 63月払い:課金期間
- ワークフロー基盤が、(月払い用)次回課金期間をセットします。
- 62次回 Charge 実行
- ワークフロー基盤が、次回分の Charge 実行フローを実行します。
- 6試用版情報/課金期間セット
- ワークフロー基盤が、試用版情報を解析し、データ項目へ格納します。
- 1試用版情報取得
- ワークフロー基盤が、試用版登録DB(Google シート)から顧客情報を取得します。
- 26購入手続き 本申し込み
- ワークフロー基盤が、本申し込みフォームを生成します。
受け渡しされるビジネスプロセス変数 (データ項目の数:32)
- ◆仮申込ガイダンス
25
- ◆本申込ガイダンス
29
- お申し込み日q_registration_date
12
- お申し込み日が格納されます。
- processInstanceStartDatetime
- 試用版IDq_contract_number
0
- ご契約メールアドレスq_contracted_email
8
- お支払い方法q_payment_method
27*
- 顧客選択のお支払い方法(月払い/年払い)が格納されます。
- ご希望のプランq_plan
26*
- お手続き詳細内容q_guidance_Massage
33
- 料金テーブルq_price_table
38
- 選択された支払い方法・プランの料金が格納されます。
- 小計q_subtotal_amount
39
- 消費税q_tax
40
- 合計q_total_amount
41
- ◆お支払い情報の入力 I/F(Stripe トークンの作成)
30
- クレジットカード情報登録 I/F が格納されています。(”pk_test_*****”文字列は Stripe サービス設定から取得・反映してください)
- Stripe Tokenq_stripeToken
31*
- Stripe 決済に必要な token が格納されます。
- last4q_last4
32*
- クレジットカードの一部(番号の最後の4桁)が格納されます。
- 特記事項q_message
11
- ◆試用版利用情報
9
- 企業名q_corprate_name
2
- 企業名(契約情報DB Google シート)が格納されます。
- 担当者名q_customer_name
3
- 担当者名(契約情報DB Google シート)が格納されます。
- 担当者メールアドレスq_customer_email
4
- 担当者メールアドレス(契約情報DB Google シート)が格納されます。
- ◆Charge 情報
10
- 課金開始日q_payment_start_date
6
- 課金開始日(申込日の翌日)が格納されます。
- processInstanceStartDatetime.addDays(1)
- 課金終了日q_payment_end_date
5
- STRIPE CUSTOMER IDq_STRIPE_CUSTOMER_ID
34
- Stripe サービスからの通知(Customer ID)を格納します。
- STRIPE CHARGE IDq_STRIPE_CHARGE_ID
7
- Stripe サービスからの通知(Charge ID)を格納します。
- STRIPE CARD BRANDq_STRIPE_CARD_BRAND
35
- Stripe サービスからの通知(クレジットカードブランド名)を格納します。
- STRIPE LAST4q_STRIPE_LAST4
36
- Stripe サービスからの通知(クレジットカード番号の一部、下4桁)を格納します。
- STRIPE EXPq_STRIPE_EXP
37
- Stripe サービスからの通知(クレジットカードの有効期限)を格納します。
- ◆システム情報
13
- 試用登録情報q_contract_information
1
- APIキー(本申し込み用)q_api_key
28
- 本申込みフォームへのアクセスに必要な API キーが格納されます。
- #{#randomString(16)}
- APIキー(Charge Stop 用)q_api_key_for_charge_stop
42
- Charge Stop Web hook に必要な API キーが格納されます。
- #{#randomString(16)}
フィールド名, Num, 初期値
Download
This archive contains the BPMN icon, which is only available in the Professional edition.
Notes
- インポート時に組織構造に合わせて、処理担当者設定の関連付けを行います
- 「試用版情報取得」工程 「File-ID」 は Google シートの URL 等を参照します。
- docs.google.com/spreadsheets/d/{File-ID}/edit#gid=0
- 試用版登録DB の作成例:https://docs.google.com/spreadsheets/d/1rMjhaQ-u2_o4cNWvfjUCDgAkPbE7pPW2znr-LwxLMs8/edit#gid=0
- 「Stripe Customer ID 生成」「Stripe Charge」工程の”HTTP認証設定”
- Stripe サービス内容から情報を取得し、設定してください。
- トークン例: sk_live_***
Arrangement Tips
「試用版情報/課金期間セット」自動工程 スクリプト (click to open)
// q_contract_information データフォーマット
// フォーマット例: 企業名 担当者名 担当者名メールアドレス 作業担当組織
// 記載例 :株式会社増上寺 佐藤 二朗 sato@sample2.com CS部,運用部
const info = engine.findDataByVarName("q_contract_information");
const plan = engine.findDataByVarName("q_plan").get(0).getValue();
const method = engine.findDataByVarName("q_payment_method").get(0).getValue();
const startDate = engine.findDataByVarName("q_payment_start_date");
let endDate;
engine.log("q_plan: " + plan);
engine.log("q_payment_method: " + method);
main();
function main(){
if (info !== null){
const cols = info.split(" ");
engine.setDataByVarName("q_corprate_name",cols[0]);
engine.setDataByVarName("q_customer_name",cols[1]);
engine.setDataByVarName("q_customer_email",cols[2]);
engine.setDataByVarName("q_price_table",[plan]);
if (method === "Monthly"){
endDate = startDate.addMonths(1).addDays(-1);
}else{
endDate = startDate.addMonths(12).addDays(-1);
}
engine.setDataByVarName("q_payment_end_date",endDate);
}
}
「料金計算」自動工程 スクリプト (click to open)
const taxRate = 0.1; // 消費税 10%
const subtotal = Number(engine.findDataByVarName("q_price_table").get(0).getDisplay());
const tax = subtotal * taxRate;
const total = subtotal + tax;
engine.setDataByVarName("q_subtotal_amount",new java.math.BigDecimal(subtotal));
engine.setDataByVarName("q_tax",new java.math.BigDecimal(tax));
engine.setDataByVarName("q_total_amount",new java.math.BigDecimal(total));
Capture
試用版登録DB 例
See also
Related