使用Stripe创建订阅(仅限一个月)

时间:2014-07-16 16:29:59

标签: ruby-on-rails stripe-payments subscription

我正在使用Stripe创建第一个订阅(对于Rails应用程序),我坚持创建一个月的订阅需要多长时间。

通常,当我们创建订阅时,它看起来像这样:

Stripe::Customer.create(description:email, plan: plan_id, card: stripe_card_token)

这意味着对于相应的用户将创建一个订阅,其中每个月将自动从用户的信用卡中获得相应的资金。

但有些用户只想支付订阅费用一个月,这意味着没有定期结算。

怎么做?

文档说我应该在 true 上设置 cancel_at_period_end ,然后订阅将在第一个月之后结束(这意味着在第一个月之后将是订阅设置为已取消)。

但我应该在哪里设置此参数?

或者 - 我对这个有问题的错误的理解,我忽略了什么?

感谢oyu

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码取消订阅:

# Set your secret key: remember to change this to your live secret key in production
# See your keys here https://dashboard.stripe.com/account/apikeys
Stripe.api_key = "sk_test_ypuqOnp64ATuGJlbgEwmAtzV"

customer = Stripe::Customer.retrieve("cus_3R1W8PG2DmsmM9")
customer.subscriptions.retrieve("sub_3R3PlB2YlJe84a").delete

默认情况下,取消立即生效。如果您想立即取消订阅,但要保持订阅有效,直到结算周期结束(例如,通过客户已付款的时间),请提供at_period_end值true:

customer.subscriptions.retrieve("sub_3R3PlB2YlJe84a").delete(:at_period_end => true)

在您的情况下,如果您只想提供一个月的订阅,您可以将其视为一个横断面,我建议您使用Subscription::Charge进行如下操作:

customer = Stripe::Customer.create(
  :source => token,
  :description => "Example customer"
)

# Charge the Customer instead of the card
Stripe::Charge.create(
    :amount => 1000, # in cents
    :currency => "usd",
    :customer => customer.id
)