概述
本套 API 供 ISV 客户 完成 Onboarding 后调用,代其终端客户完成转账、收款、Payout、银行账户管理等日常交易操作。 ISV 调用时传入walletId,OristaPay 会按 ISV ↔ 商户的归属关系自动完成鉴权。交易接口字段零变更。
鉴权与签名
所有接口均需携带签名请求头,详见 认证与签名。接口索引
收付款与转账
1. 静态收款地址查询
查询指定钱包的 Request Payment 静态收款地址。 请求参数
响应参数
StaticAddressData 字段:
请求示例
2. 查询支持币种
按walletId + type 查询该钱包在指定业务类型下支持的币种、可用网络、单笔金额范围与币种精度。调用方可用该接口在创建入金 / 出金订单前做前置校验,避免提交未开通或超出限额的币种组合。
请求参数
响应参数
SupportedCurrenciesQueryData 字段:
请求示例
3. Request Payment 订单申报
申报 Request Payment 入金订单。 请求参数Material 字段:
响应参数
请求示例
4. Request Payment 订单材料补充
为已申报的订单补充商品/物流材料。 请求参数Material 字段同「1. Request Payment 订单申报」。
响应参数
请求示例
5. 订单详情
按订单号或外部订单号查询钱包订单详情。 请求参数
响应参数
WalletOrderDetailData 字段:
请求示例
6. 订单列表
按walletId 分页查询钱包订单列表,可通过订单状态、币种和创建时间范围进行筛选。返回的订单数据使用钱包订单统一结构,适合用于订单列表页、对账前置查询或按状态轮询订单进度。
请求参数
响应参数
Page 字段:
WalletOrderDetailData 字段:
请求示例
7. 对账单下载
每日上午 9 点可提供 D-1 日对账单下载(时区:香港 UTC+8)。 请求参数
响应参数
WalletBillData 字段:
请求示例
银行账户管理
以下接口共享BankAccountData与FileInfo定义。
BankAccountData 字段:
FileInfo 字段:
8. 添加收款账号
请求参数
响应参数
请求示例
9. 更新收款账号
仅可更新非关键字段;accountOwnership / currency / accountType / companyName / companyCode 不在更新范围内。
请求参数
响应参数:与「9. 添加收款账号」相同,
data 为 BankAccountData。
请求示例
10. 删除收款账号
请求参数
响应参数
请求示例
11. 查询收款账号
请求参数
响应参数
请求示例
兑换与出金
12. Payout 询价
获取指定币对价格及转账信息。fromAmount / toAmount 二选一。
请求参数
响应参数
PayoutQuoteData 字段:
请求示例
13. Payout 下单
基于询价 ID 下单。 请求参数
响应参数
PayoutBookData 字段:
请求示例
14. Payout 订单查询
按订单号或询价 ID 查询订单。 请求参数
响应参数
PayoutData 字段:
请求示例
15. Payout 重新结算
针对结算失败或退款订单发起重新结算。 请求参数
响应参数
PayoutReSettleData 字段:
请求示例
回调(Webhook)
请求规范
请求头
签名验证
算法与入向接口完全一致(对称),共用同一把sign_secret:
PATH:回调 URL 的 path 部分,不含域名与 queryBODY:HTTP 请求体原始字节
验签步骤
- 取请求头:
X-Timestamp、X-Nonce、X-Signature、X-Api-Key - 校验时间戳窗口:
abs(now_ms − X-Timestamp) ≤ 5 × 60 × 1000,否则直接拒绝(401) - 读取请求体:在任何反序列化/解析之前拿到原始字节(见下方避坑提示)
- 重算签名:用
sign_secret和步骤 3 得到的 body,按上面的公式算出expected - 常量时间比对:用框架提供的
constant_time_compare/hmac.compare_digest比对expected与X-Signature,不要用==(防时序攻击) - 幂等去重:用
X-Nonce作为幂等键判重,已处理过则直接返回上次结果
避坑提示
- 必须是原始字节:任何中间件/框架如果在你拿到 body 之前做了反序列化、字符重编码、JSON 规范化(例如
JSON.stringify重排字段或美化空格),都会让签名失配。 - PATH 严格匹配:拼签名用的
PATH必须和网关发来的 URL path 完全一致——不能加尾斜杠、不能 urldecode、不能去掉前缀。 - 大小写敏感:
X-Signature是小写 hex;METHOD固定大写POST。 - 空 body 也要参与签名:若本次回调 body 为空,
SHA256_HEX("")=e3b0c442...b855,不能省略。
多语言参考实现
Python调试小技巧 验签失败时,把你算出的string_to_sign打印一次 —— 99% 的 bug 都出在这段字符串与网关侧拼的不一致(PATH、BODY 二次序列化、字符编码)。把你的字符串和对应的X-Request-Id发给技术支持,可以快速定位。
响应要求
- 商户端必须在 8 秒内完成响应。
- HTTP 状态码
2xx视为回调投递成功;非2xx、超时或响应体为业务错误均视为失败。 - 响应体建议遵循统一约定:
幂等与重放防护
- 幂等键:推荐以
X-Nonce作为幂等键持久化,重复收到同一 key 的回调立刻返回上次处理结果,不重复执行业务。 - 重放防护:校验
X-Timestamp与服务器时间差在 ±5 分钟以内,超窗直接拒绝。 - 签名强校验:任何签名验证失败,直接返回
4xx,不进入业务处理。
事件载荷
16. 订单结果通知
示例
17. 添加收款账号结果通知
示例
18. Payout 结果通知
示例
19. Payout 退款结果通知
示例
20. Payout 重新结算结果通知
示例
附录
响应码
Payout 订单状态
入金订单状态
订单类型
字段说明:amount(金额)
字段类型恒为string,精度按币种类型区分:
- 数币(Digital Currency):最多保留 6 位小数,满足链上交易精度需求。
- 法币(Fiat Currency):最多保留 2 位小数,精确到「分」。
- 日元(JPY):无小数货币,必须为整数,不得包含小数部分。
付款目的(purpose)
国家地区编码
ISO 3166 三字母编码(如HKG / CHN / MAC / USA / BMU / WSM / SYC / CYM / VGB 等)。完整列表请向商务/技术支持索取,或参考 Confluence 外链:https://rdwallet.atlassian.net/wiki/external/NzNjMzU5MjZkNTE4NGZkZWI2NzhmYTdiM2IyYjZmNjM
行业编码
subIndustryCode 取值参见 Confluence 外链(可下载 Excel):https://rdwallet.atlassian.net/wiki/external/YjA0N2FiNjcwNjljNDI2MDk0MGE4OTRkZjYxZmEyMmY
档案错误描述(code = 6802)
下列消息均来自资料校验,按所属模块分组(实际消息为 英文,此处保留原文)。 [Business details]Industry cannot be empty!Added industries exceeded limit: 3Industry code cannot be empty!Industry code does not exist!Sales turnover of last year cannot be empty!Incorrect sales turnover of last year input!Year(s) in business cannot be empty!Incorrect year(s) in business input!Location(s) of business cannot be empty!Location(s) of business exceeded limit: 3Industry details cannot be empty!Industry details exceeded maximum length
We only support partnership business in Hong KongWe only support sole proprietorship business in Hong KongPlease enter the ciNumber.Please enter the brNumber.Operating place cannot be empty!Operating address cannot be empty!Operating address exceeded maximum lengthCompany registered place cannot be empty!Company registered place not supported:[区域名称]The operating place is not supported:[区域名称]Company registered address cannot be empty!Company registered address maximum lengthCompany registered address in English onlyWebsite exceeded maximum lengthIncorrect business type!Business registration certificate number exceeded max lengthBusiness registration certificate number cannot be emptyCertificate of incorporation number exceeded maximum lengthCertificate of incorporation number cannot be emptyName of business in English cannot be empty!Name of business in Chinese cannot be empty!Name of business in Chinese exceeded maximum lengthName of business in English exceeded maximum lengthNot allowed optionPlease upload a valid proof of Certificate of IncorporationPlease upload a valid proof of Memorandum and Articles of AssociationPlease upload a valid proof of Business RegistrationPlease upload a valid proof of Partnership AgreementPlease upload a valid proof of Certificate of IncumbencyPlease upload a valid proof of KYC FilesDuplicated documentPlease enter a valid business type.Company incorporation date cannot be emptyCompany incorporation date cannot be empty be greater than current date:[对应数值]Place of financial regulator cannot be empty!Incorrect place of financial regulator input!Name of regulator cannot be empty!Name of regulator exceeded maximum lengthType of license cannot be empty!Type of license exceeded maximum lengthIncorrect place of incorporation!Sorry, the country/region is not supported yet! ... :{placeOfIncorporation}Please upload a valid proof of License/Certificate of Financial InstitutionPlace of listing cannot be empty!Incorrect place of listing input!Name of exchange cannot be empty!Name of exchange exceeded maximum lengthStock code cannot be empty!Stock code exceeded maximum lengthPlace of government owner cannot be empty!Incorrect place of government owner input!
Email exceeded maximum lengthIncorrect email address formatAreaCode exceeded maximum lengthMobileNumber exceeded maximum lengthIncorrect country/region of key peopleIncorrect country/region and idType of key peopleIncorrect idTypeThe user's idv information is incompleteLast name in English exceeded maximum lengthLast name in English and first name in English cannot have only one valueFirst name in English exceeded maximum lengthName in Chinese exceeded maximum lengthidNumber exceeded maximum lengthIncorrect genderPlease upload a valid proof of key peoplePlease set a valid quorumId Number[{idNumber}] was duplicate!Signer must be equal or greater than quorumDirect number has to be between 1 to 99Partner number has to be between 2 to 6Please add at least one ownerPlease add at most one ownerOnly limited company can create directorOnly partnership can create partnerPlease select at least one role for user:IsOwner is only supported by sole proprietorship
Shareholder structure cannot be emptyIncorrect Level in sharesholder structure, only Zero to Ten LevelLast name in English exceeded maximum lengthFirst name in English exceeded maximum lengthName in Chinese exceeded maximum lengthShareholder (company) name in English exceeded maximum lengthShareholder (company) name in Chinese exceeded maximum lengthShareholder (company) RegulatorName exceeded maximum lengthShareholder (company) ExchangeName exceeded maximum lengthShareholder (company) Stock code exceeded maximum lengthIncorrect ownedSharesPercentShareholder type cannot be emptyPlease input correct shareholder type:{type}Shareholder (personal) name in English and Chinese cannot be empty at the same time!Shareholder (company) name cannot be emptyShareholder (company) business type cannot be emptyPlease input correct business type for the shareholder (company):{businessType}We only support sole proprietorship business in Hong KongWe only support partnership business in Hong KongShareholder (company) place of incorporate cannot be emptyIncorrect shareholder (company) place of incorporateWe only support company registered place for partnership and sole proprietorship in Hong Kong onlyLast name in English and first name in English cannot have only one valueParentId cannot be emptyListed/government owner/financial regulator not support partnership businessPlace of financial regulator cannot be empty!Place of financial regulator not supported!Name of regulator cannot be empty!Name of regulator exceeded maximum lengthType of license cannot be empty!Type of license exceeded maximum lengthListed/government owner not support sole proprietorship businessPlace of listing cannot be empty!Place of listing not supported!Name of exchange cannot be empty!Name of exchange exceeded maximum lengthStock code cannot be empty!Stock code exceeded maximum lengthPlace of government owner cannot be empty!Incorrect place of government owner input!Corresponding shareholder type for sameId[{id}] is differentCorresponding shareholder name for sameId[{id}] is differentIncorrect parentId in sharesholder structureAbnormal shareholder structureShareholder structure cannot exceed 10 layersShareholder structure is not necessary
Customer type error.

