Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TwilioとStripeを使った従量課金サービスの裏側
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tetsuco9
May 20, 2019
Programming
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TwilioとStripeを使った従量課金サービスの裏側
「1分100円からビジネス相談可能な」通話課金機能の開発のお話。
tetsuco9
May 20, 2019
Other Decks in Programming
See All in Programming
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
140
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.6k
Webフレームワークの ベンチマークについて
yusukebe
0
130
Oxlintのカスタムルールの現況
syumai
5
1k
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
110
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
320
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
610
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
190
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
170
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
1.1k
AIエージェントと協働するCLI開発 — BunとOpenClawで学んだこと
yoshikouki
1
240
AI時代のUIはどこへ行く?その2!
yusukebe
19
6.7k
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
55
10k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
The SEO Collaboration Effect
kristinabergwall1
1
480
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
So, you think you're a good person
axbom
PRO
2
2.1k
WENDY [Excerpt]
tessaabrams
11
38k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
260
Everyday Curiosity
cassininazir
0
220
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Code Review Best Practice
trishagee
74
20k
Balancing Empowerment & Direction
lara
6
1.1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
Transcript
TwilioとStripeを使っ た従量課金サービス の裏側
昨年8月に出したサービスの開 発秘話をお届けします。 2
村上哲平@tetsuco9 □ 年 株式会社ビザスク ▪ 新卒入社 □ 年 千葉大学 卒業
□ 年 株式会社ビザスク ▪ インターン 3
4 □ 通話課金機能の概要 □ Twilio・Stripeを使った実装 □ まとめ アジェンダ
1. 通話課金機能の概要 5
6 □ 電話相談の一部が対象で、謝礼金額は1分 あたり100~1,000円で設定 □ 現状の1時間単位から小刻みにし、短時間 の利用や時間を気にせずに相談したい人の 需要に答える 通話課金機能とは プレスリリースより抜粋
https://service.visasq.co m/issues/new から使えます!
7 通話課金機能とは 着想 従来のスポットコンサルは、 事前に所要時間と金額を決める必要がある → 柔軟に決められるようにしたい → 従量課金にすればよいのでは?
8 □ 相談した時間を計測する必要がある ▪ ストップウォッチで測るわけにもいかない。。 □ 事前決済から事後決済になる ▪ ちゃんと払ってもらえなかったらどうしよう。。 従量課金にするためには何
が必要?
9 □ 相談した時間を計測する必要がある ▪ ストップウォッチで測るわけにもいかない。。 ▪ => 電話API Twilioを活用 □
事前決済から事後決済になる ▪ ちゃんと払ってもらえなかったらどうしよう。。 ▪ => 仮売上の仕組みを活用 従量課金にするためには何 が必要?
10 □ エンジニア主導で企画~実装まで担当 ▪ ディレクターとエンジニアの2名体制 ▪ 企画・技術選定からローンチまで約3ヶ月 このプロジェクトについて
2. Twilio・Stripeを使った実装 11
12 □ 050の番号一つで複数の電話転送が可能 □ twimlをかくことで、通話を強制的に切ったり、音声メッセー ジを流したりすることができる Twilio Voiceの仕組み
13 予約から請求までの流れ 正常系 通話予約 通話完了
14 キャンセル料分の確保 □ stripe.Charge.creat e(capture=False) で 与信だけ通す ▪ キャンセル 料分を確保
□ 確保期間が7日
15 予約から請求までの流れ 通話予約 通話完了
16 通話開始から終了までの流れ
17 TwiMLで転送
18 TwiMl 転送 (Pythonコード)
19 Callログの保存 リクエストパラメーター CallSid AccountSid From To CallStatus CallDuration ApiVersion
Direction ForwardedFrom CallerName ParentCallSid queued ringing in-progress completed busy failed no-answer canceled □ ログは基本的に 受け取ったもの をそのままDBに 保存 □ 実際、使ってい るのは赤字のも の
20 重複請求の回避 □ Cronで5分おきにステータスを確認 □ stripe.Charge.create(idempotency_key={案件 ごとにユニークな文字列}) ▪ ベキ等性の保証 □
[別件で発見]失敗レスポンスを受け取った場合 に、カードや金額を変えて再度決済しようとすると 「keyは同じだがリクエスト内容が異なる」エラーが 発生する ▪ Stripe側のkey保持期限は24時間
21 通話を強制終了する □ 1回の通話には2種類(inbound, outbound)のcallオブジェク トが存在する □ 両者に聞こえるように音声メッセージを出そうとすると別機能 (Twilio conference)が必要
□ リダイレクトして依頼者のみに音声メッセージが流れるように 実装 redirect
3. まとめ 22
23 □ Twilio便利! ▪ 電話をWeb技術でハックする感覚が新鮮 □ 録音は別料金がかかる ▪ いずれオプション機能をつくりたい □
[リリース後のトラブル]skypeで取得した050の番号で かけても転送できない □ 決済まわりは、一見シンプルな要件にみえても考えるこ とがたくさん ▪ 経理チームなど部署間の連携も必要になって くる ポイント まとめ
24 □ (組織にとって)、新しい技術を触ることは大きな学 び □ 何よりエンジニアにとって楽しい □ 時には、好奇心ドリブンで新しいプロジェクトを始 めてみては? 最後に
メッセージ
25 □ Twilio Docs ▪ https://jp.twilio.com/docs/voice/twiml#request-parameters □ 『仮売上の仕組みを使って予約フローを改善した 話』 ▪
https://blog.spacemarket.com/code/improve-reservation-flow-using-un captured-charge/ 参照
Credits Special thanks to all the people who made and
released these awesome resources for free: □ Presentation template by SlidesCarnival □ Photographs by Unsplash 26