Stripe Connect:限制账号链接上线时的步数



我正在测试允许用户向其他用户付费的Stripe Connect。我正在使用Stripe Java库(在Kotlin中)进行测试。

正如文档所建议的,我需要将收到钱的用户使用Account.createAPI创建一个Stripe帐户,然后将该帐户与AccountLink.createAPI链接。

当用户通过Stripe onboarding flow (AccountLink.createAPI接收到的Stripe url)时,他们需要在许多步骤中输入大量数据。

步骤如下:

  • 01: ">开始使用Stripe":用户被要求创建电子邮件
  • 02: ">创建您的免费Stripe帐户";用户需要输入电子邮件和密码
  • 03号
  • : ">用手机号码保护您的帐户";启用2FA
  • 04:让我们从一些基础知识开始&;;用户被要求输入业务位置和业务类型
  • 05: ">验证您的个人信息";用户被要求输入姓名,地址,电子邮件地址和电话号码
  • 06年
  • : ">专业详情":用户必须输入增值税号码(可选)并选择行业
  • 07年
  • : ">添加您的银行接收付款";用户必须输入货币和银行详细信息
  • 08年
  • : ">为客户添加公共详细信息":用户必须输入"语句描述", "缩短描述"one_answers"客户支持电话">
  • 09年:向客户展示您的气候承诺&;;用户需要选择或跳过气候贡献
  • 10
  • : ">Review and finish up":用户必须审核并确认数据

我希望在初始入职时只保留步骤1、2、3、5(没有地址和电话号码)、7和10,并删除其他步骤,以减少摩擦。

我看到其他网站使用Stripe Connect,我知道这是可能的。

这是我使用的代码:

Account.create请求:

suspend fun stripeCreateNewAccount(
email: String,
localID: String,
productDescription: String,
onSuccess: suspend (Account?) -> Unit,
) {
try {
Stripe.apiKey = Constants.STRIPE_TOKEN_TEST
val metadata: MutableMap<String, String> = HashMap()
metadata["id"] = localID
val createAccountParams = AccountCreateParams.Builder()
.setType(AccountCreateParams.Type.STANDARD)
.setEmail(email.lowercase().trim())
.setMetadata(metadata)
.setBusinessType(AccountCreateParams.BusinessType.INDIVIDUAL)
.setBusinessProfile(
AccountCreateParams.BusinessProfile.builder()
.setUrl(url)
.setName("Testing Stripe connect")
.setProductDescription(productDescription)
.build()
)
.setCompany(
AccountCreateParams.Company.Builder()
.setName("Test Company Name")
.build()
)
.setIndividual(
AccountCreateParams.Individual.Builder()
.setFirstName("John")
.setLastName("Smith")
.setEmail(email.lowercase().trim())
.build()
)
.setBusinessProfile(
AccountCreateParams.BusinessProfile.builder()
.setUrl("${Constants.BASE_URL}/list/$localID" )
.setProductDescription(productDescription)
.build()
)
.build()
onSuccess(Account.create(createAccountParams))
} catch (e: Exception) {
e.printStackTrace()
onSuccess(null)
}
}

,这是AccountLink.create请求:

suspend fun stripeLinkExistingAccount(
idAccountToLink: String,
onCompleted: suspend (String?) -> Unit,
) {
try {
Stripe.apiKey = Constants.STRIPE_TOKEN_TEST
val params = AccountLinkCreateParams
.builder()
.setAccount(idAccountToLink)
.setRefreshUrl("${Constants.BASE_URL}/profile")
.setReturnUrl("${Constants.BASE_URL}/profile")
.setType(AccountLinkCreateParams.Type.ACCOUNT_ONBOARDING)
.build()
AccountLink.create(params)?.let { accountLink ->
onCompleted(accountLink.url) // The Stripe onboarding url
} ?: run {
// Something went wrong
onCompleted(null)
}
} catch (e: Exception) {
e.printStackTrace()
onCompleted(null)
}
}

不幸的是,这不是您可以控制的。您正在创建一个标准帐户,这意味着该人员直接与Stripe注册并打开一个"完整帐户"。和他们在一起。Stripe将需要收集身份验证所需的所有信息,但他们也将收集他们需要或想要提供的额外细节(如Climate屏幕)。你不能跳过这个

一个可能的替代方案是切换到Express帐户,例如,您可以控制更多的登录。但是它有不同的风险和限制,在这里的文档中有介绍。

即使使用Express,您也无法完成您想要的。根据法律法规,Stripe必须遵循KYC(了解您的客户)和AML(反洗钱)识别和验证发送资金的任何帐户。

认为其他网站没有的原因是他们已经与客户建立了KYC和AML验证。

Stripe不希望比你更慢的帐户。他们(和你)受法律法规的约束。

最新更新