Stripe - 取消订阅

问题描述 投票:0回答:1

更新:问题在于,当创建新客户时,Stripe 会使用 card_token 进行响应,而不是客户 ID。可能我做错了什么。

我在 Rails 应用程序上设置了 Stripe,然后将其与 Devise 集成。它工作正常,因为它在我的 Stripe 帐户上创建了一个新客户,并在我的 Rails 应用程序上创建了一个新用户。当注册发生时,我将 Stripe 令牌保存在我的用户表中作为 stripe_card_token (来自 stripe 的响应)。

我希望用户能够取消订阅。

我使用“stripe-ruby”gem,发现gem内部有一些用于取消订阅的方法,例如“cancel_subscription”方法。但是我不确定如何调用这个方法。

我检查了 Stripe 取消订阅的 API,示例是:

customer = Stripe::Customer.retrieve({CUSTOMER_ID})
customer.subscriptions.retrieve({SUBSCRIPTION_ID}).delete()

但我没有客户的ID。我在创建客户时保存的唯一属性是在 Stripe 响应上发送的令牌。

在 User.rb 中我用这种方法创建了一个客户

  def create_a_customer
    token = self.stripe_card_token
    customer = Stripe::Customer.create(
      :card => token,
      :plan => 1,
      :email => self.email
      )         
  end

当我创建客户时,我将response.id保存为令牌:

  handleStripeResponse: (status, response) ->
if status == 200
  $('#user_stripe_card_token').val(response.id)
  $('#new_user')[0].submit()
else
  $('#stripe_error').text(response.error.message)
  $('#stripe_error').show()
  $('input[type=submit]').attr('disabled', false)

此response.id是卡的令牌,而不是客户的ID...

我对如何使用 gem 感到困惑,因为它没有给出示例,并且 API 询问客户 ID,而我得到的 ID 是卡的令牌。我很确定我错过了一些东西。

非常感谢任何指导、帮助!

ruby-on-rails ruby-on-rails-4 stripe-payments
1个回答
0
投票

当您调用 Stripe::Customer.create 时,您可以在响应中获取 id,即 stripe 客户 ID。您可以将该 ID 存储到针对您的用户的数据库中,并使用它来获取订阅以取消。

参考文档:https://docs.stripe.com/api/customers/create

对于现有客户,您可以使用此搜索(https://docs.stripe.com/api/customers/search)并检索客户 ID。

© www.soinside.com 2019 - 2024. All rights reserved.