【问题标题】:Creating subscription with Stripe (only for a month)使用 Stripe 创建订阅(仅限一个月)
【发布时间】:2014-09-07 06:58:40
【问题描述】:

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

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

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

这意味着将为相应的用户创建一个订阅,每月将自动从用户的信用卡中提取相应的金额。

但有些用户希望仅支付一个月的订阅费用,这意味着无需重复计费。

怎么做?

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

但是我应该在哪里设置这个参数呢?

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

谢谢你

【问题讨论】:

  • (description: email, plan: plan_id, card: stripe_card_token) 是一个哈希...在 ruby​​(和 rails)中,哈希通常用于传递可选参数...文档我猜你应该将 cancel_at_period_end: true 添加到传递给 create 方法的哈希中......即(描述:电子邮件,计划:plan_id,卡:stripe_card_token,cancel_at_period_end:true)
  • 我尝试过这种方法,但收到一条错误消息,指出该方法的此参数未知。
  • 我查看了文档,看起来您这样做的方式...客户将在创建后获得订阅列表(将它们订阅到已通过的计划).. . 属性 cancel_at_period_end 似乎是订阅模型的一部分...查看计划属性说明中的here

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


【解决方案1】:

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

# 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
)

【讨论】:

    猜你喜欢
    • 2021-02-08
    • 2021-08-04
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 2017-11-12
    • 2020-09-17
    • 2021-04-20
    • 2020-09-18
    相关资源
    最近更新 更多