已有用户

时间:2016-05-10 15:50:32

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

在我的情况下 - 我正在使用Stripe with Rails,并且用户可以为一次性“收费”付费,或者订阅并拥有一定数量的每次收费,每月免费。

创建费用后 - 我将stripe_customer_id保存在PG数据库中。

但是,如果用户想要订阅,我想将其添加到Stripe客户,而不是创建一个新订单。

如果要创建一个新的,它会是这样的:

customer_data = {
  email: params[:stripeEmail],
  card: params[:stripeToken]
}.merge(
  (monthly_plan.payment_offerings_plan.blank?) ?
    {} : { plan: Payment_offering.find(monthly_plan.payment_offerings_plan).stripe_plan_id }
)

customer = Stripe::Customer.create customer_data

基本上 - 如何在Stripe中添加订阅到现有的Stripe客户?

1 个答案:

答案 0 :(得分:3)

所有这些都可以在优秀的Ruby API Docs中找到。涉及几个步骤,但并不是那么难。可能需要一些实验才能让它在您的应用程序中运行

创建默认来源

客户必须拥有为订阅费用分配的默认来源。这可以通过令牌创建,如下所示:

customer.sources.create({:source => token_id})

或从客户现有的卡中分配,如果您已经为用户分配了卡片:

customer.default_source = customer.sources.retrieve(card_id)

创建订阅计划

您可以在Stripe控制台上轻松创建订阅计划,因为这通常是一次性活动;构建用于管理订阅计划的用户界面几乎肯定是过度杀伤,除非您有管理员用户可以管理订阅计划,但不能访问Stripe控制台。

要以编程方式创建订阅计划,请尝试以下操作:

Stripe::Plan.create(
  :amount => 4200,         #<== Amount is in cents, not dollars
  :interval => "month",
  :name => "Purple Plan",
  :currency => "usd",
  :id => "purple"
)

您可以创建任意数量的计划,并可以将用户订阅到他们喜欢的任何计划。

为客户创建订阅

此时,您可以在客户上创建订阅,这将启动结算过程。

Stripe::Subscription.create(
  :customer => customer,
  :plan => "purple"
)

设置Web挂钩接收器

出于某种原因,此文档位于不同的位置(请参阅Webhooks),但它是此过程中非常必要的部分。这将使您的应用程序得到建议

def PaymentController   protect_from_forgery:except =&gt; :网络挂接

def webhook     #从webhook参数中捕获事件信息     event_id = params [:event]

# Verify that the event isn't forged to your Stripe account
event = Stripe::Event.retrieve(event_id)

# Record the event
PaymentEvents.create!(event)

# Handle the event in terms of your application
#...

端 端

从Stripe发送的事件类型记录在Types of Events。你可以选择捕捉并处理一些,同时让别人通过。但是,在我的应用程序中,我发现捕获和记录所有事件,然后根据需要处理它们会更好。这样,如果您错过了处理后来变得非常重要的事件,您可以参考事件并在事后处理它。

收取定期付款

这是最简单的部分,最好用你最喜欢的冷饮来完成。从这一点开始,您需要做的就是监控Stripe控制台和您的银行帐户。不需要额外的操作,因为Stripe负责其余的操作。