在处理与Stripe Accounts连接的应用时,我遇到了一个问题。如果给定电子邮件的帐户已存在,则无法创建新帐户。 Stripe会抛出错误。
但是如何连接到现有帐户?我在任何地方都找不到任何东西。
为清楚起见,失败的代码是:
Stripe::Acount.create(managed: false, email: 'Foo@UserEmail.address')
我正在创建一个Stripe::Account
对象,而不是Stripe::Customer
个对象。如果电子邮件已存在于Stripe的API上,则上述代码会引发异常,但不会向我提供任何与之连接的信息。
我担心的是,如果已经拥有Stripe帐户的用户尝试加入该网站,我该如何将其关联起来。
答案 0 :(得分:2)
由于您使用的是独立帐户,如果用户已拥有包含该电子邮件地址的Stripe帐户,您将无法创建该帐户。
在这种情况下,您必须使用OAuth flow将现有帐户连接到您的平台。
请注意,您可以使用OAuth流来处理这两种情况。如果用户已拥有Stripe帐户,则可以登录其现有帐户进行连接,如果用户不能,则可以创建新帐户并同时进行连接。
答案 1 :(得分:0)
使用Stripe Gem,如果帐户已经存在,我会使用类似的东西:
Stripe::Customer.retrieve(@user.stripe_id)
您可以这样做:
customer = if @user.stripe_id?
Stripe::Customer.retrieve(@user.stripe_id)
else
Stripe::Customer.create(email: @user.email)
end
我通常将stripe_id与相关模型一起存储,但您可以使用Stripe API来检索它。
更新
我想念您的问题。如果你在谈论不同的账户(而不是客户)。您可以使用Stripe API检索所有帐户的列表,然后根据电子邮件选择所需帐户。
List all accounts with Stripe API
然后使用相应的电子邮件检索帐户:
Stripe::Account.retrieve("account_id")
此answer为帐户转换的建议:
accounts = Stripe::Account.all
account_i_need = accounts.select do |c|
c.email == "foo@bar.com"
end