定期決済プロセス,Stripe決済 20211120
サブスクリプション申込をオンラインで受け付けるワークフローです。
顧客は、試用版IDをキーにオンラインで仮申込します。仮申込後、顧客は、クレジットカード情報を入力し、本申込します。
課金は Stripe で定期的に決済されます。
仕事の流れ (ワークフロー図の複雑度:44)
- 45 1.ライセンス更新
- ライセンス更新担当が、受注内容を元にライセンスを更新します。
- 43 2.Charge 中止判断
- 営業担当者が、Charge 中止を判断します。(3時間判断なしなら Charge 自動実行)
- 61 Charge 実行
- ワークフロー基盤が、Charge 実行フローを実行します。
- 55 Charging Stop
- ワークフロー基盤が、解約プロセス/契約変更プロセスからの通知を待ち受けます。
- 41 Stripe Customer ID 生成
- ワークフロー基盤が、Stripe サービスから Customer ID を取得します。
- 42 Stripe 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
- 試用版ID q_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 Token q_stripeToken
31
*- Stripe 決済に必要な token が格納されます。
- last4 q_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 ID q_STRIPE_CUSTOMER_ID
34
- Stripe サービスからの通知(Customer ID)を格納します。
- STRIPE CHARGE ID q_STRIPE_CHARGE_ID
7
- Stripe サービスからの通知(Charge ID)を格納します。
- STRIPE CARD BRAND q_STRIPE_CARD_BRAND
35
- Stripe サービスからの通知(クレジットカードブランド名)を格納します。
- STRIPE LAST4 q_STRIPE_LAST4
36
- Stripe サービスからの通知(クレジットカード番号の一部、下4桁)を格納します。
- STRIPE EXP q_STRIPE_EXP
37
- Stripe サービスからの通知(クレジットカードの有効期限)を格納します。
- ◆システム情報
13
- 試用登録情報 q_contract_information
1
- APIキー(本申し込み用) q_api_key
28
- 本申込みフォームへのアクセスに必要な API キーが格納されます。
- APIキー(Charge Stop 用) q_api_key_for_charge_stop
42
- Charge Stop Web hook に必要な API キーが格納されます。
フィールド名, 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