Skip to main content

概述

本套 API 面向 ISV(独立软件开发商) 客户:A 端为其终端客户(company)发起开户申请,由 OristaPay 平台完成企业查册、合规审核、IDV、签署、自动开通钱包等全流程。 ISV 客户完成 onboarding 后,拿到 companyCodewalletId,可直接复用 ISV 交易 API 代客户完成转账、收款、Payout 等交易。交易接口字段零变更——A 端调用时只需正常传 walletId,OristaPay 会按 ISV ↔ 商户的归属关系自动完成鉴权。
本套 API 的鉴权、签名、请求头、响应信封、文件上传、错误码体系与 RDPAY API 完全一致,未在本文档重复说明的部分请参考 ISV 交易 API

业务流程

标识符约定

OnboardingAPI

接口索引


1. 文件上传 (FileUpload)

接口概述 提交底层客户资料前,需使用该接口上传企业相关的文件。 请求参数 响应参数 响应示例

2. 提交开户申请 (SubmitApplication)

接口概述 为下游商户(B)提交 company 开户申请。首次提交,或上一笔申请审核拒绝(REJECTED)后重新提交,均走此接口。 请求参数 响应参数 ApplicationData 字段说明 Errors 字段说明 请求示例
响应示例(成功)
响应示例(资料校验失败)
关键约束
  • 幂等键 (extApplicationNo):同 extApplicationNo 重复提交,body 一致 → 返回原 applicationNo;body 不一致 → 6801
  • 同一商户防并发:同一 B 的 (CI 号 / BR 号) 在 A 名下只允许一份活跃申请。当前申请进入终态(APPROVED / REJECTED)后才可再提交
  • 驳回后重提:必须使用新的 extApplicationNo,提交后生成新的 applicationNo
  • 查册失败 = 自动驳回:API 路径下,无论是 企业查册定级失败(CI/BR 找不到等)还是 查册比对不通过(数据不一致),都会直接将申请置为 REJECTED 并推送 REJECTED webhook,A 需换 extApplicationNo 重新提交

3. 查询申请进度 (QueryApplication)

接口概述 applicationNoextApplicationNo 查询申请进度(二选一)。 请求参数 响应参数 QueryApplicationData 字段说明
applicationStatus 取值
  • UNDER_REVIEW:受理中或审核中(覆盖查册中、人工审核中等所有非终态非待用户阶段)
  • PENDING_USER:后台查册通过,等待 keyPeople 完成 IDV / 签署;此时(且仅此时)才可调 GetIdvLink,之前调用返回 6406
  • APPROVED:审核通过、钱包已开通;取 companyCode / walletId 做后续业务
  • REJECTED:申请被驳回;API 场景下无法恢复,需换新的 extApplicationNo 重新提交
query 与 webhook 的 applicationStatus 语义一致。如果 A 端因网络异常错过 PENDING_USER webhook,可主动调 query 看到同样的状态。
profile.keyPeople.people[] 中各 KeyPeopleInfopeopleId(用于获取 IDV / 签署链接)、idvStatus / mandateStatus 两个状态字段(实时反映该人员的 IDV / 签署进度)。
请求示例
响应示例
接口概述 为指定 peopleId 生成一次性 H5 链接。单一链接连续承载 IDV → 签署两步:B 用户打开链接后先完成 IDV,IDV 通过后页面自动进入签署流程;isMandateUser = false 的人员只走 IDV,IDV 完成即结束。 链接由 A 自行送达给 B 用户(邮件 / 短信 / 二维码扫码 / 跳转,A 决定)。
前置条件:必须先收到 ONBOARDING_APPLICATION_STATUS_NOTIFICATIONapplicationStatus = PENDING_USER 的 webhook 后才能调用本接口。在此之前后端处于企业查册阶段,调用将返回 6406,提示等待 PENDING_USER webhook。
请求参数 响应参数 LinkData 字段说明 请求示例
响应示例
关键约束
  • 链接为一次性:B 完成完整流程(IDV + 签署)后链接失效;过期未使用同样失效
  • 同一 peopleId 重复调用:已有未过期链接 → 直接返回原链接;已过期 → 自动作废原链接并生成新链接
  • 该人员已完成全部任务(IDV 通过且 isMandateUser=true 时签署也完成)时再调用返回 6001
接口概述 链接过期(expireTime < now)或临近过期时,A 调用此接口生成新链接;原链接立即失效。 请求参数 响应参数 LinkData:字段同 §4。 请求示例
响应示例 同 §4。 关键约束
  • 前置条件同 §4:必须先收到 PENDING_USER webhook,否则返回 6406
  • 调用后原链接立即作废
  • 若该人员已完成全部任务(IDV 通过且签署完成),调用返回 6001
  • 若申请已进入终态(APPROVED / REJECTED),调用返回 6001

6. 查询审核通过的完整企业资料 (QueryCompanyProfile)

接口概述 companyCode 查询审核通过后的企业完整资料。 请求参数 响应参数 请求示例
响应示例
关键约束
  • 仅可查询审核通过(applicationStatus = APPROVED)的企业;尚未通过的企业返回 6001 + 提示 “Profile is not approved yet.”
  • companyCode 必须属于当前 A,否则返回 6005
  • 资料以 OristaPay 侧最新审核结果为准,可能与提交时的 profile 不完全一致(审核员可补录或修正部分字段)

Callback

回调请求体、签名验证、响应要求与 ISV 交易 API · Callback 完全一致,本文档仅定义新增的 OpenBizType 与载荷字段。

1. 新增的 OpenBizType 枚举

2. 回调数据类型

2.1 申请状态变更 (OnboardingApplicationStatusNotification)

触发时机(仅关键审核节点,节点变更不会逐个推送)
  • 申请刚提交(UNDER_REVIEW 状态首次进入)不会单独推送 webhook,A 通过 SubmitApplication 同步响应即知申请受理
  • 节点级变更(NameScreening → RiskScreening 等)不再推送,仅 QueryApplication 接口可查
  • 同一 applicationStatus 的重复推送应该幂等(按 X-Nonce 去重)
字段说明 示例(查册通过,可发起 IDV)
示例(审核通过)
示例(驳回 / 查册失败)

2.2 keyPeople IDV 失败 (OnboardingKeyPeopleIdvFailedNotification)

某个 keyPeople 的 IDV 失败时推送,A 端收到后可让 B 重做 IDV:调 RefreshIdvLink 拿新链接给 B。 触发时机
  • IDV失败
字段说明 示例

企业资料表单

profile 是提交开户申请(SubmitApplication)的核心载荷,也是查询接口返回的核心数据。结构因业务类型(合伙 / 有限 / 独资)和注册地不同而异。

1. 顶层结构

2. 支持矩阵

3. 通用子结构

3.1 businessDetail.list[] 元素

A 端只需要传 subIndustryCode,主行业 industryCode 由服务端按字典反查自动回填,即使 A 端填了也会被服务端覆盖。

3.2 KeyPeopleInfo 通用字段

所有业务类型的 keyPeople.people[] 都使用 KeyPeopleInfo。通用提交字段:
钱包管理员两种典型组合
  1. 兼任:某个董事 / UBO 同时勾 isWalletAdmin=true(一人两职)
  2. 独立:在 keyPeople 列表里追加一个仅作钱包管理员的人(isDirector / isUbo / isPartner / isOwner 全部 false,只 isWalletAdmin=true),该人需走 IDV
idType 的”中国大陆身份证”是个人证件枚举,与”企业注册地”是不同维度;当企业注册地为 HKG 但董事 / 股东是中国大陆居民时,正常使用此 idType

3.3 KeyPeopleInfo 中由 OristaPay 侧回写的运行时字段

提交时 A 不要填写这些字段;通过 QueryApplication 读取时它们承载 OristaPay 侧的回写结果。

3.4 开户问卷 (accountOpeningQuestionnaire)

所有商业类型的 profile 都必须填写此模块。 示例

4. 合伙公司(仅香港)

entityDetail keyPeople:合伙人列表 2-6 人,KeyPeopleInfo 除通用字段外新增: 提交示例

5. 有限公司(香港)

entityDetail shareholderlistshareholderFileKey 二选一)
仅”有限公司”且 isFinancialInstitute=2 / isListed=2 / isGovOwned=2(即都不豁免)时必须提供股权结构。
ShareholderDto keyPeople KeyPeopleInfo 除通用字段外新增:

6. 有限公司(非香港)

字段绝大部分与 §5 相同,差异如下(未列字段同 §5):

7. 独资公司(仅香港)

entityDetail keyPeople:仅一位 owner,KeyPeopleInfo 除通用字段外新增:

8. 文件 fileKey 字段汇总

文件先通过文件上传接口拿到 fileKey,再填入 profile 文件类型与上限:jpeg / jpg / png / pdf / gif,单文件 ≤ 20 MB。

错误码

1. 业务错误码

2. 各接口错误码对照

2.1 SubmitApplication

2.2 QueryApplication

2.5 QueryCompanyProfile

3. 档案错误描述(code = 6802

完整清单同 ISV 交易 API · 档案错误描述,按所属模块分组:
  • [Business details]
  • [Entity details]
  • [Key people]
  • [Shareholder]
  • [Others]
本套 API 额外的拒绝场景:
  • [Entity details]Place of incorporation not supported: CHN —— 企业层 incorpPlace / regPlace / operatingPlace 不允许 CHN
  • [Entity details]Place of incorporation not supported: <制裁国家代码> —— 被制裁国家
  • [Entity details]Partnership / Sole proprietorship only support incorpPlace=HKG —— 合伙 / 独资仅限香港
  • [Key people]Nationality not supported: <国家代码> —— keyPeople 国籍为被制裁国家(CHN 特例放行)
  • [Wallet Admin]Work certification is necessary —— region=CHN 的钱包管理员未传 overseaWorkCertificateFileKey