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
0
1.6k
TwilioとStripeを使った従量課金サービスの裏側
「1分100円からビジネス相談可能な」通話課金機能の開発のお話。
tetsuco9
May 20, 2019
Tweet
Share
Other Decks in Programming
See All in Programming
AI Assistants for Your Angular Solutions
manfredsteyer
PRO
0
150
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
230
Docコメントで始める簡単ガードレール
keisukeikeda
1
130
PHPで TLSのプロトコルを実装してみる
higaki_program
0
230
Fundamentals of Software Engineering In the Age of AI
therealdanvega
2
260
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
750
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
0
130
The free-lunch guide to idea circularity
hollycummins
0
270
OTP を自動で入力する裏技
megabitsenmzq
0
120
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
410
AHC061解説
shun_pi
0
400
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
470
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
sira's awesome portfolio website redesign presentation
elsirapls
0
190
Why Our Code Smells
bkeepers
PRO
340
58k
YesSQL, Process and Tooling at Scale
rocio
174
15k
GitHub's CSS Performance
jonrohan
1032
470k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.9k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
230
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Utilizing Notion as your number one productivity tool
mfonobong
4
260
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
52k
The Limits of Empathy - UXLibs8
cassininazir
1
260
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
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