我使用以下命令创建一个新的 Stripe 连接帐户:
account = Stripe::Account.create({
type: 'express',
requested_capabilities: ['card_payments', 'transfers']
})
当用户单击“连接 Stripe”时,他们开始输入详细信息。他们可以输入美国电话号码,但不能输入美国地址 - 该国家/地区已锁定为澳大利亚,单击“澳大利亚”尝试更改它根本不会执行任何操作:
此外,“州”字段仅显示澳大利亚各州:
为什么stripe做出这样的限制?我很确定我在设置stripe时已经正确配置了它,我怀疑这是我的代码的问题(我在
Stripe::Account.create()
期间正在做或没有做的事情)?
我尝试过
requested_capabilities: ['card_payments']
,但是:
Accounts do not currently support `card_payments` without `transfers`.
Please visit
https://stripe.com/docs/connect/account-capabilities#card-payments
for more details.
我尝试了
requested_capabilities: ['transfers']
,没有错误,但我仍然只能输入澳大利亚地址。
我检查了平台仪表板中的设置,无法发现设置中的任何异常情况,并确认 connect 配置为接受来自澳大利亚 + 35 个其他国家/地区的连接用户
我认为 Stripe API v1 应该允许您指定国家/地区。根据我在文档中看到的内容,我认为您应该指定您想要的内容。
StripeAPI 文档的POST /v1/accounts 看起来像这样
require 'stripe'
Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
Stripe::Account.create({
type: 'custom',
country: 'US',
email: '[email protected]',
capabilities: {
card_payments: {requested: true},
transfers: {requested: true},
},
})
您可能需要进一步配置。如果指定国家/地区不能解决问题,请告诉我。从这里阅读。根据 API 中的内容,
country
是可选的。由于您没有指定,因此默认为您的位置。
截至今天,Stripe Express 支持澳大利亚、奥地利、比利时、保加利亚、加拿大、塞浦路斯、捷克共和国、丹麦、爱沙尼亚、芬兰、法国、德国、希腊、香港、匈牙利、爱尔兰、意大利、日本、拉脱维亚、立陶宛、卢森堡、马耳他、墨西哥、荷兰、新西兰、挪威、波兰、葡萄牙、罗马尼亚、新加坡、斯洛伐克、斯洛文尼亚、西班牙、瑞典、瑞士、英国或美国。因此,您可以决定要指定哪个国家/地区并输入 ISO 3166-1 alpha-2 国家/地区代码。
在我们的例子中,问题在于
suggested_capabilities[]=transfers
URL 参数的存在。这种设置导致只有美国、巴西和日本成为选择。甚至支持转移的国家也没有出现。这很不幸,因为该 URL 参数位于 Stripe Connect Express 的官方入门文档中。
因此,有效的方法是为客户提供一个类似的 URL
https://connect.stripe.com/express/oauth/authorize?redirect_uri=https://our-site.com/stripe/connect&client_id=our_client_id&state=our_state
而不是
https://connect.stripe.com/express/oauth/authorize?redirect_uri=https://our-site.com/stripe/connect&client_id=our_client_id&state=our_state&suggested_capabilities[]=transfers
对我来说,我发现我必须向用户提供一张表格,先填写国家/地区 - 然后再为他们创建 Stripe Connect 帐户。
如果用户没有此选项,Stripe 默认会选择美国作为连接帐户国家/地区,这很奇怪。
他们应该在文档中指定这一点,或者让用户在连接入门流程中选择国家/地区,这更理想。
我收到了 Stripe 支持的回复,但他们的回复与 @Afolabi 的答案相矛盾,也与代码在 Rails 控制台中运行时发生的情况相矛盾。所以我回复了额外的信息,并会在收到回复后更新。
条纹说:
如果您有标准和快速帐户,则用户将指示他们的 Stripe 帐户所在的国家/地区,对于自定义帐户,平台需要指示国家/地区,因为与标准和快速 Stripe 不同,自定义帐户没有仪表板账户。
但是我所有尝试生成
express
帐户但不提供国家/地区都会导致该国家/地区默认为'US'
并且用户无法更改它(因此我现阶段能做的最好的事情就是确保平台(即我的应用程序)提供了国家参数)最小可重现示例
require 'stripe'
Stripe.api_key = 'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
new_account = Stripe::Account.create({
type: 'express',
email: '[email protected]',
capabilities: {
card_payments: {requested: true},
transfers: {requested: true},
},
})
account_links = Stripe::AccountLink.create({
account: new_account.id,
refresh_url: 'http://localhost:3000/reauth',
return_url: 'http://localhost:3000/return',
type: 'account_onboarding',
})
# Visit url provided and see that country is locked to 'US',
# and it cannot be input by the user being onboarded like stripe
# support suggests should happen
来自
const stripeAccount = await stripe.accounts.create({
type: 'express',
email: userData.email,
//country: country,
capabilities: {
card_payments: { requested: true },
transfers: { requested: true },
},
});
更改为
const stripeAccount = await stripe.accounts.create({
type: 'express',
email: userData.email,
});