无法将信用卡添加到Stripe上的托管帐户

时间:2016-02-23 05:05:43

标签: ruby-on-rails ruby stripe-payments credit-card

我正在使用Stripe managed accounts,我可以毫无问题地创建和检索帐户,但我无法将信用卡添加到任何条带帐户。我正在使用Stripe.js来处理卡创建过程,因此在视图中我收集卡片字段并让Stripe.js完成验证和处理的脏工作。如果一切正常,我会从Stripe收到一个stripeToken,我在我的控制器中使用它来最终关联管理帐户和信用卡。

但是我收到此错误:

Error creating card: (Status 400) You must provide a card that has the 'currency' field set when adding a card to a Stripe account.

因此我假设我需要在卡片表单中添加currency字段,所以我再次尝试然后我遇到了这个错误:

This card doesn't appear to be a debit card. (when submitting currency from views)

我已经尝试搜索错误,但不知何故没有真正的引用或以前的答案。

有谁知道如何解决这个问题?

提前致谢!

详情

由于我在本地机器上测试,我使用的是Stripe的测试卡号: 4242424242424242接受任何expiration dateCVC

以下是一些代码:

这是我创建自选帐户的方式:

def create_account(email)
  Stripe::Account.create(
    {
      :country => "US",
      :managed => true,
      :email => email,
      :default_currency => "USD"
    }
  )
end

这是我将卡片令牌添加到帐户的方式(基于API docs):

def add_card_to_account(account_id, card_token)
  account = get_account(account_id)
  account.external_accounts.create(:external_account => card_token)
end

2 个答案:

答案 0 :(得分:16)

条纹accounts是付款目的地 - 他们可以获得资金,但不提供资金。

Customers是付款来源,即他们提供资金。)

目前,Stripe帐户可以使用两种不同类型的外部帐户作为付款方式(即检索其资金):

  • 银行帐户
  • 借记卡(仅限美国境内)

因此,您可以将借记卡作为外部帐户添加到美国自定义帐户,但不能用信用卡,因为这些不能用于接收资金。

要使用借记卡作为付款方式,必须使用currency参数使用token创建卡Stripe.js。由于目前仅适用于美国帐户,因此currency参数的值必须为"usd"。以下是使用currency参数的Stripe.js表单的简单示例:https://jsfiddle.net/ywain/rprufyg5/

在测试模式下,您需要使用一个借记testing card numbers,例如4000 0566 5566 55565200 8282 8282 8210

答案 1 :(得分:2)

我有同样的问题。我联系了他们,我找到了一些解决方案。 我正在使用iOS Stripe SDK生成令牌。 它对我有用。

此时Stripe仅支持基于美国的美元借记卡用于卡外部帐户。将货币参数添加到令牌的方法是添加对

的直接调用
self.paymentTextField.cardParams.currency = @"usd"; 

在您的PaymentViewController中初始化STPPaymentCardTextField后,如下所示:

// Setup payment view
STPPaymentCardTextField *paymentTextField = [[STPPaymentCardTextField alloc] init];
paymentTextField.delegate = self;
paymentTextField.cursorColor = [UIColor purpleColor];
self.paymentTextField = paymentTextField;
self.paymentTextField.cardParams.currency = @"usd";
[self.view addSubview:paymentTextField];