Skip to main content
本快速入门是面向企业版的引导并连接客户。你将配置一个只能落在企业账户上的应用,引导一位所有者走完 OAuth 授权,注册其法律实体与受益所有人名单,跟踪 KYB 案件直至出结果,并通过在企业账户上发行一张卡来证明连接已打通。 你面前的人始终首先是一个自然人。他以本人身份登录、以本人身份完成身份验证,_然后_才注册企业。下面的所有步骤都遵循这个顺序。
前提条件

完整流程

为企业配置应用

你的应用在 Permissions 标签页下有两份权限清单,二者独立编辑。Business permissions 清单非空,才会让你的应用启用企业能力。留空的话,无论你还配置了什么,用户都不会看到申请企业账户的选项。趁着还在应用编辑器里,把你的 redirect_uri 注册到 OAuth 标签页,并添加一个订阅了 KYB 状态更新的 webhook URL —— 这样你不用轮询就能知道审核已结束。
同意页面是依据这两份清单构建的,而不是依据你的 authorize URL。你没有在此处勾选的权限,永远不会展示给用户,也永远不会出现在令牌里。完整说明:OAuth 中的企业账户

请 Fluz 将应用限制为仅企业账户

Fluz 可以为你的应用做配置,使该流程永远不会落在个人账户上。配置到位后,没有企业账户的用户会完全跳过账户选择器,直接进入企业注册。
这一项不是自助的。 请联系你的 Fluz 客户经理,为你的应用启用该限制。在此之前,没有企业账户的用户会同时看到自己的个人账户和申请企业账户的选项 —— 其中一些人会选个人账户。
如果你的应用确实同时服务于消费者与企业,请跳过此步。提出这个要求,等于声明落在个人账户上的授权对你而言永远是一个 bug。

引导所有者完成 OAuth 授权

构建 authorize URL:
Authorization URL
在应用被限制为仅企业账户的情况下,首次进入的用户会看到:登录与 2FA,然后是一个包含两组权限的同意页面 —— 现在授予的消费者权限,以及为其即将创建的企业预先批准的企业权限。该清单是只读的;用户要么全部接受,要么无法完成。随后用户会被重定向回你的 redirect_uri,并带有 ?code=...&state=...。先校验 state,再在服务端捕获这个一次性的 code
企业分配它自己的 external_id,取自你系统里的企业记录 —— 而不是取自所有者用户。外部 ID 在首次使用时就会绑定到唯一一个 Fluz 账户,所以一个已经用在某人个人账户上的 ID,无法再用于他的企业。
完整参数参考:面向客户端的 OAuth 授权流程

用授权码交换申请人的令牌

与其他任何授权的交换过程相同 —— 使用 client_id:client_secret 的 base64 做基本认证:
Exchange (cURL)
redirect_uri 必须与你在 /authorize 使用的完全一致(逐字节相同)。
企业此时尚不存在,因此这个令牌属于申请人的个人账户 —— 这是正确的,也正是 registerBusiness 所需要的令牌。请从交换响应中读取账户并持久化,而不要根据你自己关于“谁发起了流程”的记录去推断。

验证申请人身份(KYC)

KYB 验证的是企业和_其他_所有者。它不验证申请人,所以申请人必须在你注册任何东西之前就已通过验证 —— 否则注册会以 ARG-0001 失败。使用申请人的令牌调用 verifyUserInformation。在预发布环境中,这个测试身份始终返回 APPROVED
申请人需要哪种检查,取决于你在下一步为他填写的 isUsPersontrue 要求档案中已有一次成功的 SSN(CIP)验证,false 要求一次成功的证件验证。参见用户 KYC 验证测试 KYC 流程
同一用户最多可提交 3 次,之后将返回 ERROR。不要把尝试次数浪费在你即将用作申请人的那个用户身上。

注册企业

先解析该实体所属的经营类别 —— 千万不要把这些 UUID 写死:
然后在一次调用中提交实体信息和完整的所有者名单,仍然使用申请人的个人账户令牌:
成功的响应会返回一个 accountId 和值为 SUBMITTEDkybStatus。请立刻保存 accountId —— 它是你掌握这份申请的唯一句柄。三件最常导致首次提交被拒的事:
  • 每一位所有者都必须填写 isUsPerson,包括申请人和受邀所有者。这是名单被拒的最常见原因。
  • 必须恰好有一位所有者是申请人 —— 通过邮箱或电话与令牌所属用户匹配 —— 且必须恰好有一位是控制人。
  • 法定地址会经过地址校验服务商核验。 编造的街道会以 BS-0002 失败;请使用测试地址
错误是放在响应负载内部返回的,而不是作为 GraphQL 错误 —— 请根据 successerror 对象分支处理。完整的参数与错误参考:注册企业

让其余所有者完成验证,然后等待

SUBMITTED 表示负载通过了校验并且案件已建立。它不表示已获批准。生成一个企业账户令牌 —— 用申请人的 userId 和新企业的 accountId 调用 generateUserAccessToken —— 然后读取所有者名单:
走证件路径的所有者可通过 requestOwnerDocumentVerificationLink 获取链接;被你标记为 isInvited: true 的所有者由 Fluz 发邮件邀请并自行完成验证。持续跟踪,直到 kybStatus 为终态每位所有者都报告 READY状态会从 PENDING 变为 APPROVEDDECLINED,通常在一到两个工作日内。请从你在第 1 步配置的 KYB 状态更新 webhook 获取结果,并用 getBusiness 做对账 —— 每小时一次即可,不要每次页面加载都查。
向用户如实展示“审核中”的状态。不要把他丢进一个还不能交易的企业面板,也不要在被拒后自动重试 —— 第二次提交会被 BS-0007 阻止。完整生命周期:注册企业

在企业账户上操作 —— 证明它

一旦 kybStatus 变为 APPROVED,用企业账户令牌运行任意 Fluz 操作,它就会针对该企业执行。没有单独的企业 API。
返回一张 ACTIVE 卡片,意味着闭环已完成:已配置 → 已授权 → 已验证 → 已注册 → 已批准 → 可操作。

大功告成 🎉

你已经把一家企业从一个空白应用带到了可以消费的已验证账户。接下来:

OAuth 中的企业账户

两份权限清单、账户选择器,以及授权码最终解析到哪个账户。

注册企业

前提条件、KYB 状态生命周期,以及如何跟踪案件直到出结果。

提交企业文件

授权签署人文件上传,以及如何响应补充材料请求。

引导并连接客户

面向个人的同一段旅程。
想了解更多? 通过 support@fluz.app 联系我们,与专家沟通或申请演示。