Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
TwilioとStripeを使った従量課金サービスの裏側
Search
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
PHPプロジェクトの結合バランスを可視化する #php_night
kajitack
0
230
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
420
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
180
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
130
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
890
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
180
スマート反転とウェブアクセシビリティ
camiha
0
160
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
160
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
510
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
130
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
760
Featured
See All Featured
How to make the Groovebox
asonas
2
2.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.7k
Scaling GitHub
holman
464
140k
WCS-LA-2024
lcolladotor
0
820
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
710
How GitHub (no longer) Works
holman
316
150k
Leo the Paperboy
mayatellez
8
2.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
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