whalet
首页
开放API
  • 收款
  • 鲸卡
  • 收单
首页
开放API
  • 收款
  • 鲸卡
  • 收单
  1. 首页
  • 接入指南
  • Integration Guidelines
  • 附录
  • Appendix
  • 用户入网(User Onboarding)
    • 用户入网申请(User Onboarding Apply)
      POST
    • 入网结果通知(User Onboarding Result Notification)
      POST
  • 持有人(Card Holder)
    • 持有人申请(Card Holder Apply)
      POST
    • 持有人结果通知(Card Holder Result Notification)
      POST
    • 持有人查询(Card Holder Query)
      POST
    • 持有人银行账户申请(Card Holder Beneficary Apply)
      POST
    • 持有人银行账户结果通知(Card Holder Beneficary Result Notify)
      POST
    • 持有人银行账户查询(Card Holder Beneficary Query)
      POST
  • 开卡(Virtual Account)
    • 外贸收款(B2B)
      • 申请收款卡(Virtual Account Apply for B2B)
      • 获取外贸收款渠道(Channel Banks Query for B2B)
    • 电商收款(B2C)
      • 申请收款卡(Virtual Account Apply for B2C)
      • 获取收款卡平台配置(Platform Query for B2C)
      • 获取开通收款卡持有人(Card Holder Query for B2C)
      • 查询开卡数(Card number Query for B2C)
      • 绑定/添加店铺(Bind/Unbind Shop for B2C)
      • 注销收款卡((Card Cancel for B2C))
      • 查询收款卡详情(Card Detail Query for B2C)
      • 注销收款卡结果通知(Card Cancel Result Notify for B2C)
      • 查询店铺(Shop Query for B2C)
      • 查询收款卡(Card Query for B2C)
      • 绑定/添加店铺结果通知(Shop Bind/Unbind/Add Result Notify for B2C)
      • 申请银行证明信(Bank Letter Apply For B2C)
    • 申请收款卡结果通知(Virtual Account Notify for B2C)
      POST
  • 收款(Collections)
    • 收款到账通知(Collection Received Notify)
      POST
    • 关联外贸订单(Trade Order Bind Apply for B2B)
      POST
    • 关联外贸订单结果通知(Trade Order Bind Notify for B2B)
      POST
  • 订单(Order)
    • 外贸收款(Trade Order)
      • 订单申请(Trade Order Apply for B2B)
      • 订单详情(Trade Order Query Detail for B2B)
      • 分页查询(Trade Order Query List for B2B)
    • 电商收款(Shop Order)
      • 上传订单(Shop Order Upload for B2C)
  • 提现(Payout)
    • 申请提现/付款(Payout Apply)
      POST
    • 确认提现/付款(Payout Confirm)
      POST
    • 申请提现/付款结果通知(Payout Result Notify)
      POST
    • 查询汇率(Rate Inquiry)
      POST
    • 查询受益人银行账户字段信息(Beneficiary Account Fields Query)
      POST
    • 绑定受益人银行账户(Benificiary Account Apply)
      POST
    • 绑定受益人银行账户结果通知(Benificiary Account Result Notify)
      POST
    • 删除受益人银行账户(Benificiary Account Delete)
      POST
    • 查询支持的受益人银行账户国家/地区(Beneficiary Account Country Query)
      POST
  • 支付(Pay)
    • 申请支付(Pay Apply)
    • 确认支付(Pay Confirm)
    • 申请支付结果通知(Pay Result Notify)
  • 钱包(Wallet)
    • 币种余额(Currency Balance)
    • 平台余额(Platform Balance)
  • 交易查询(Trade Query)
    • 收款记录(Collection Query)
    • 提现记录(Withdraw Query)
    • 付款记录(Payment Query)
    • 支付记录(Pay Query)
  • 补充资料(ReMaterials)
    • EDD补充资料通知(Edd Replenish Notify)
    • EDD补充资料查询(Edd Replenish Query)
    • EDD补充资料提交(Edd Replenish Submit)
    • EDD补充资料结果通知(Edd Replenish Result Notify)
    • 交易补充资料通知(Trade Replenish Notify)
    • 交易补充资料提交(Trade Replenish Submit)
    • 交易补充资料结果通知(Trade Replenish Result Notify)
  • Connectivity
    • 连通性验证(connectivity)
    • 连通性验证通知(connectivityNotify)
  • Mock
    • 入账通知Mock(mockPayeeNotify)
  1. 首页

接入指南

一、引言#

以下内容包含通过易鲸平台实现收款接口说明。

1.1 编写目的#

本文档主要目的是帮助合作伙伴技术开发人员熟练掌握易鲸收款接口使用,并接入到现有的系统中。

1.2 使用对象#

本文档的使用对象为合作伙伴的产品经理、系统设计人员、技术开发人员及测试人员。

1.3 版权说明#

此文档版权归厦门易鲸信息科技有限公司(以下简称"whalet")所有。作为本系统的最终用户(以下简称"合作方/合作伙伴"),可以拥有该文档的使用权,但未征得whalet的书面批准,不得向第三方借阅、出让、出版该文档。

1.4 技术支持#

有关本接口对接、调试任何问题,可以在工作时间按以下方式联络相关技术支持人员。
product@whalet.com

二、公共报文#

2.1 接入方式#

使用HTTPS通信协议,使用POST方式提交。
环境地址
测试环境https://test-open.whalet.com/api
生产环境https://open.whalet.com/api

2.2 数据格式#

使用JSON作为请求和响应报文的通用格式,统一采用UTF-8编码格式。
报文必填标识:M(必填选项) O(可选选项) C(条件必选,特定条件必填);

请求报文#

1.
请求报文由两部分组成:请求报文头和请求报文体。其中请求报文头信息在报文头(head) 节点内,请求报文体信息在报文体(body)节点内。
2.
请求报文头格式适用于所有接口。请求报文头信息的填写标准请参看公共请求报文头章节。
3.
请求报文体根据每个接口定义而各不相同。请求报文体的定义请参看具体接口请求定义。需按照具体接口定义组装和解析请求报文体。

响应报文#

1.
响应报文由两部分组成:响应报文头和响应报文体。其中响应报文头信息在报文头(head)节点内,响应报文体信息在报文体(body)节点内。
2.
响应报文头格式适用于所有接口。响应报文头信息的填写标准请参看公共响应报文头章节。
3.
响应报文体根据每个接口定义而各不相同。应答报文体的定义请参看具体接口响应定义。需按照每个接口定义组装和解析应答报文体。
4.
响应成功时,报文头的code为"SUCCESS",detail为"成功", 此时报文体(body)节点根据实际业务需要为空也可以不为空。
5.
响应失败时,错误码和错误信息填写在报文头的code(返回码)和detail(返回描述)域中,报文体(body)节点为空。

2.3 加密及签名方式#

为保证数据的安全性,交易报文传输都需要进行加密、签名和校验。
1.
报文加密算法:AES/ECB/PKCS5Padding
2.
会话密钥生成:KeyGenerator生成
3.
会话密钥加密算法:RSA/ECB/PKCS1Padding
4.
签名算法:SHA1withRSA

RSA密钥对获得#

对于合作方来说,需要生成自己的RSA密钥对(包含公钥和私钥 ),其中,私钥合作方自己保留,同时将公钥2048位(Base64 编码)提供给whalet。
对于whalet来说,需要为每个合作方生成对应的密钥对 2048位(Base64 编码)。其中,私钥whalet平台保留,公钥2048位(Base64 编码)需要提供给合作方。

报文加密及签名#

1.
使用KeyGenerator生成器,生成AES加密会话密钥SK。
2.
使用SK对json明文进行加密(AES/ECB/PKCS5Padding),并将加密结果转换为HEX字符串,得到encrypt域。
3.
对SK进行Base64编码,并将结果转换为HEX字符串,使用接收方公钥对其加密(RSA/ECB/PKCS1Padding),并将结果转换为HEX字符串,得到keyEnc域。对请求待签字符串(UTF-8编码)使用发送方的私钥进行签名(SHA1withRSA),并将签名结果转换为HEX字符串,得到sign域。

报文解密及验签#

1.
将keyEnc域转换为二进制byte数组,使用接收方的私钥对其进行解密,然后进行Base64解码并转换为二进制byte数组,得到明文SK;
2.
将encrypt也转换为二进制byte数组,使用上一步得到的会话密钥SK解密,得到明文json;
3.
使用获取到的待签字符串、发送方公钥和sign域数据验证签名的有效性。

请求待签字符串#

所有字段按如下顺序依次使用|符号连接。
partnerId,apiCode,version,requestNo来自请求头中对应字段。
encrypt来自实际请求体中encrypt字段。

响应待签字符串#

所有字段按如下顺序依次使用|符号连接。
partnerId,apiCode,version,requestNo,code和detail来自响应头中对应字段。
encrypt来自实际响应体中encrypt字段,报文体(body)节点为空时,encrypt为空,不参加待签字符串连接。

2.4 公共请求报文头#

字段名类型长度必填描述
partnerIdString30M合作方id,whalet提供
apiCodeString30M接口名称
requestNoString30M请求流水号, 唯一
versionString3M接口版本,固定为:1.0
signStringM请求报文签名
keyEncStringM会话密钥密文

2.5 公共响应报文头#

字段名类型长度必填描述
partnerIdString30M请求头原样返回 合作方id,whalet提供
apiCodeString30M请求头原样返回 接口名称
requestNoString30M请求头原样返回 请求流水号, 唯一
versionString3M请求头原样返回 版本,固定为:1.0
codeString32M返回码SUCCESS 表示请求成功
detailString256M描述
signStringO响应报文签名
keyEncStringO会话密钥密文

2.6 错误响应码#

代码描述备注
SUCCESS请求成功
PROCESSING处理中等待通知,以通知为准
FAILURE失败具体失败内容见detail属性
TOO_MANY_REQUESTS请求频率过高
PARTNER_NOT_EXIST合作方不存在
INTERNAL_ERROR内部错误
PARAM_FORMAT_ERROR参数格式错误
PARAMETER_ERROR参数错误
IDEMPOTENT_ERROR幂等错误
REQUEST_NO_NOT_UNIQUE请求号重复
UNAUTHORIZED未授权
UNAUTHENTICATED_ERROR认证(签名)错误
INTERFACE_UNAUTHORIZED接口未授权

2.7 异步通知#

针对部分无法同步返回结果(同步结果状态为PROCESSING)的接口,whalet会在业务处理完成后通过异步通知的方式,根据不同业务场景,将不同通知类型(通过ApiCode区分)的消息post到合作伙伴提供的通知URL上,合作伙伴收到通知后在完成相应的消息解密验签后,可自行处理自己的业务。
合作方需要在指定时间内返回结果(需满足公共响应格式以及要求),如果出现请求超时,whalet会按照如下规则重试:
1.
最多重试5次
2.
间隔时间依次为1s、2s、4s、8s、16s
3.
如果5次仍然无法成功,whalet将线下通知合作伙伴
建议合作方收到请求后异步处理内部业务逻辑,及时返回响应结果。同时保证自身服务的稳定性。

2.8 报文示例#

以连通性Demo为例。

请求定义#

ConnectivityGuideRequestBody
notifyFlag
enum<string> 
是否通知
required
Allowed values:
YN
notifyMessage
string 
通知内容
optional
responseFlag
enum<string> 
是否响应
required
Allowed values:
YN
responseMessage
string 
响应内容
optional

请求示例#

响应定义#

ConnectivityGuideResponseBody
messge
string 
消息内容
optional

响应示例#

三、文件上传#

3.1 接入方式#

使用HTTPS通信协议,使用POST方式提交。
环境地址
测试环境https://test-open.whalet.com/file/upload
生产环境https://open.whalet.com/file/upload

3.2 数据格式#

请求格式使用multipart/form-data,响应格式使用JSON。

3.3 token生成#

待签字符串#

将字段按如下顺序使用|符号连接。
partnerId为合作方ID,timestamp为当前时间戳(毫秒,13位数字)。

签名#

对待签字符串(UTF-8编码)使用发送方的私钥进行签名(SHA1withRSA),并将签名结果转换为HEX字符串即为token。

有效期#

whalet会对token进行验签,并根据timestamp校验token的有效期,token的有效期为30分钟,在有效期内可以重复使用。

3.4 请求示例#

shell命令请求#

postman请求#

image.png
image.png

3.5 响应示例#

正确响应#

{
    "code": "SUCCESS",
    "detail": "成功",
    "info": {
        "fileId": "202405011245158834940001",
        "fileName": "demo.jpg",
        "fileUrl": "https://test-file.whalet.com/2024-05-01/75ab32a9-cc98-46cb-9e8f-5c055fd9e4b5.jpg"
    }
}

异常响应#

{
    "code": "UNAUTHENTICATED_ERROR",
    "detail": "invalid token",
    "info": null
}

注意事项#

1.
支持的文件类型包括:jpeg, jpg, png, gif, bmp, pdf, doc, docx, xls, xlsx, csv, txt, zip, rar
2.
单个文件大小限制为:10M
Modified at 2025-04-22 06:06:45
Next
Integration Guidelines
Built with