#Stripe API release SubscriptionSchedule what happens? one case Subscription cancel_at removed. Subscription released from Schedule and start run by itself. ( Ruby codes example )
Points
After release
- Subscription schedule be null
- SubscriptionSchedule subscription be null
- Current phase subscription cancel_at removed because thats reason is now Subscription does not know next phase Subscriptions or plans. So it does not should wait and cancel itself for other phases.
BEFORE
AFTER
Ruby Code example
# Docs
# https://stripe.com/docs/api/subscription_schedules/release
# https://support.stripe.com/questions/create-update-and-schedule-subscriptions
# https://stripe.com/docs/billing/subscriptions/subscription-schedules
# Code
require 'stripe'
Stripe::api_key = ENV['STRIPE_SECRET_KEY']
product1 = Stripe::Product.create(name: "Gold plan #{rand(9999999999)}")
plan1 = Stripe::Plan.create(interval: 'month', currency: 'jpy', amount: 5000, product: product1.id, usage_type: 'licensed')
product2 = Stripe::Product.create(name: "Silver plan #{rand(9999999999)}")
plan2 = Stripe::Plan.create(interval: 'month', currency: 'jpy', amount: 3000, product: product2.id, usage_type: 'licensed')
product3 = Stripe::Product.create(name: "Bronse plan #{rand(9999999999)}")
plan3 = Stripe::Plan.create(interval: 'month', currency: 'jpy', amount: 1000, product: product3.id, usage_type: 'licensed')
tax_rate = Stripe::TaxRate.create(display_name: 'Tax Rate', percentage: 10.0, inclusive: false)
customer = Stripe::Customer.create
payment_method = Stripe::PaymentMethod.create(type: 'card', card: { number: '4242424242424242', exp_year: 2030, exp_month: 01})
customer_payment_method = Stripe::PaymentMethod.attach(payment_method.id, customer: customer.id)
def put_subscription_schedule(subscription_schedule, message)
puts '-' * 100
puts "Subscription Schedule"
puts message
puts "https://dashboard.stripe.com/test/subscription_schedules/#{subscription_schedule.id}"
puts '-' * 100
puts subscription_schedule
end
# https://stripe.com/docs/api/subscription_schedules/create
subscription_schedule = Stripe::SubscriptionSchedule.create(
{
customer: customer.id,
start_date: Time.now.to_i + 5,
default_settings: {
default_payment_method: customer_payment_method.id,
},
phases: [
{
plans:
[
{ plan: plan1.id, quantity: 1 },
{ plan: plan2.id, quantity: 4 },
],
default_tax_rates: [tax_rate],
iterations: 3,
},
{
plans:
[
{ plan: plan2.id, quantity: 1 },
{ plan: plan3.id, quantity: 1 },
],
default_tax_rates: [tax_rate],
iterations: 5,
},
{
plans:
[
{ plan: plan3.id, quantity: 3 },
{ plan: plan1.id, quantity: 2 },
],
default_tax_rates: [tax_rate],
iterations: 7,
}
],
}
)
put_subscription_schedule(subscription_schedule, 'CREATED')
puts '-' * 100
puts "Wait until subscription schedule starts"
puts '-' * 100
until subscription_schedule.status == 'active' do
subscription_schedule = Stripe::SubscriptionSchedule.retrieve(subscription_schedule.id)
puts subscription_schedule.status
sleep 2
end
started_subscription_schedule = Stripe::SubscriptionSchedule.retrieve(id: subscription_schedule.id, expand: ['subscription'])
put_subscription_schedule(started_subscription_schedule, 'STARTED')
subscription = started_subscription_schedule.subscription
started_subscription_schedule.subscription # #<StripeSubscription: ...
started_subscription_schedule.phases.size # 3
puts '-' * 100
puts "Subscription created"
puts "https://dashboard.stripe.com/test/subscriptions/#{subscription.id}"
puts '-' * 100
puts subscription
Stripe::SubscriptionSchedule.release(started_subscription_schedule.id)
released_subscription_schedule = Stripe::SubscriptionSchedule.retrieve(id: subscription_schedule.id, expand: ['subscription'])
# SubscriptionSchedule now has no "subscription" but has phases ( not used ? )
released_subscription_schedule.subscription # nil
released_subscription_schedule.phases.size # 3
released_subscription = Stripe::Subscription.retrieve(subscription.id)
removed_from_subscription_by_released_schedule = subscription.to_a - released_subscription.to_a
# Subscription "cancel_at" removed by Subscription release
# e.g
# => [[:cancel_at, 1585720051], [:canceled_at, 1577857651], [:schedule, "sub_sched_1Fw03HCmti5jpytUpJMypWcA"]]
Original by Github issue
# Docs
# https://stripe.com/docs/api/subscription_schedules/release
# https://support.stripe.com/questions/create-update-and-schedule-subscriptions
# https://stripe.com/docs/billing/subscriptions/subscription-schedules
# Code
require 'stripe'
Stripe::api_key = ENV['STRIPE_SECRET_KEY']
product1 = Stripe::Product.create(name: "Gold plan #{rand(9999999999)}")
plan1 = Stripe::Plan.create(interval: 'month', currency: 'jpy', amount: 5000, product: product1.id, usage_type: 'licensed')
product2 = Stripe::Product.create(name: "Silver plan #{rand(9999999999)}")
plan2 = Stripe::Plan.create(interval: 'month', currency: 'jpy', amount: 3000, product: product2.id, usage_type: 'licensed')
product3 = Stripe::Product.create(name: "Bronse plan #{rand(9999999999)}")
plan3 = Stripe::Plan.create(interval: 'month', currency: 'jpy', amount: 1000, product: product3.id, usage_type: 'licensed')
tax_rate = Stripe::TaxRate.create(display_name: 'Tax Rate', percentage: 10.0, inclusive: false)
customer = Stripe::Customer.create
payment_method = Stripe::PaymentMethod.create(type: 'card', card: { number: '4242424242424242', exp_year: 2030, exp_month: 01})
customer_payment_method = Stripe::PaymentMethod.attach(payment_method.id, customer: customer.id)
def put_subscription_schedule(subscription_schedule, message)
puts '-' * 100
puts "Subscription Schedule"
puts message
puts "https://dashboard.stripe.com/test/subscription_schedules/#{subscription_schedule.id}"
puts '-' * 100
puts subscription_schedule
end
# https://stripe.com/docs/api/subscription_schedules/create
subscription_schedule = Stripe::SubscriptionSchedule.create(
{
customer: customer.id,
start_date: Time.now.to_i + 5,
default_settings: {
default_payment_method: customer_payment_method.id,
},
phases: [
{
plans:
[
{ plan: plan1.id, quantity: 1 },
{ plan: plan2.id, quantity: 4 },
],
default_tax_rates: [tax_rate],
iterations: 3,
},
{
plans:
[
{ plan: plan2.id, quantity: 1 },
{ plan: plan3.id, quantity: 1 },
],
default_tax_rates: [tax_rate],
iterations: 5,
},
{
plans:
[
{ plan: plan3.id, quantity: 3 },
{ plan: plan1.id, quantity: 2 },
],
default_tax_rates: [tax_rate],
iterations: 7,
}
],
}
)
put_subscription_schedule(subscription_schedule, 'CREATED')
puts '-' * 100
puts "Wait until subscription schedule starts"
puts '-' * 100
until subscription_schedule.status == 'active' do
subscription_schedule = Stripe::SubscriptionSchedule.retrieve(subscription_schedule.id)
puts subscription_schedule.status
sleep 2
end
started_subscription_schedule = Stripe::SubscriptionSchedule.retrieve(id: subscription_schedule.id, expand: ['subscription'])
put_subscription_schedule(started_subscription_schedule, 'STARTED')
subscription = started_subscription_schedule.subscription
started_subscription_schedule.subscription # #<StripeSubscription: ...
started_subscription_schedule.phases.size # 3
puts '-' * 100
puts "Subscription created"
puts "https://dashboard.stripe.com/test/subscriptions/#{subscription.id}"
puts '-' * 100
puts subscription
Stripe::SubscriptionSchedule.release(started_subscription_schedule.id)
released_subscription_schedule = Stripe::SubscriptionSchedule.retrieve(id: subscription_schedule.id, expand: ['subscription'])
# SubscriptionSchedule now has no "subscription" but has phases ( not used ? )
released_subscription_schedule.subscription # nil
released_subscription_schedule.phases.size # 3
released_subscription = Stripe::Subscription.retrieve(subscription.id)
removed_from_subscription_by_released_schedule = subscription.to_a - released_subscription.to_a
# Subscription "cancel_at" removed by Subscription release
# e.g
# => [[:cancel_at, 1585720051], [:canceled_at, 1577857651], [:schedule, "sub_sched_1Fw03HCmti5jpytUpJMypWcA"]]
Author And Source
この問題について(#Stripe API release SubscriptionSchedule what happens? one case Subscription cancel_at removed. Subscription released from Schedule and start run by itself. ( Ruby codes example )), 我々は、より多くの情報をここで見つけました https://qiita.com/YumaInaura/items/328c049c806753b429fc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .