Slide 1

Slide 1 text

決済のお話 『Railsガイド』の事例 (YassLab 株式会社)

Slide 2

Slide 2 text

Naoya Matayoshi @nanophate nanophate.com Programming, Anime me:

Slide 3

Slide 3 text

image: https://speakerdeck.com/yasslab/case-studies-of-less-code-payments?slide=3 work:

Slide 4

Slide 4 text

work: Railsチュートリアル・ガイドの運用と新機能開発

Slide 5

Slide 5 text

✨ ৽αʔϏεʰTeamϓϥϯʱ N ew ! ϦϦʔεͨ͠Α ੭◌ु ˃ ̶͈̀Т ˂̶ ͈́ ੭◌ु ⁾⁾ IUUQTSBJMTHVJEFTKQUFBN

Slide 6

Slide 6 text

payment: Stripeではめちゃ楽しく対応できる 1.前払い 2.Subscription 3.日割り計算 4.利用量の変更

Slide 7

Slide 7 text

利用人数を3人→1人にした図 繰り越し (Balance)が発生する

Slide 8

Slide 8 text

payment: 繰り越しでお金が 残るのは避けたい

Slide 9

Slide 9 text

payment: 先人のサービスで 利用人数系の決済 繰り越しでお金が残るのは避けたい

Slide 10

Slide 10 text

payment: 追加メンバー数の減少は2020/04/29

Slide 11

Slide 11 text

payment: Stripeではめちゃ楽しく対応できる 1.前払い 2.Subscription 3.日割り計算 4.利用量の変更 5.次回の決済は減少する

Slide 12

Slide 12 text

Stripeの自動決済をやめ cronでAPIを呼び出す payment:

Slide 13

Slide 13 text

payment:

Slide 14

Slide 14 text

payment:

Slide 15

Slide 15 text

利用人数を3人→1人にした図

Slide 16

Slide 16 text

Subscription Schedules 利用人数を3人→1人にした図

Slide 17

Slide 17 text

last: 先人の知恵を拝見して 決済方法を対応できた

Slide 18

Slide 18 text

last: sub_sched_phase = Stripe::SubscriptionSchedule .retrieve(sub_sched_id).current_phase sub_sched_id = Stripe::Customer.retrieve('cus_TEST') .subscriptions.first.id

Slide 19

Slide 19 text

Stripe::SubscriptionSchedule.update( sub_sched_id, phases: [ { plans: [ { plan: TEAM_FIXED_PLAN_ID, quantity: team_stripe_customer .subscription.quantity } ], start_date: sub_sched_phase.start_date, end_date: sub_sched_phase.end_date }, { plans: [ { plan: TEAM_FIXED_PLAN_ID, quantity: limit } ], start_date: Time.zone.now .next_month.beginning_of_month.to_i } ], prorate: false, renewal_behavior: 'release' )