充值接入流程
充值业务类似于交易所的机制,每个用户都有一个固定的子合约钱包地址,用于接收用户储值。这意味着每个用户有自己的唯一标识,并且可以通过这个标识向其分配的子合约地址进行充值。这种机制更适合处理个体用户的充值需求,确保资金的准确归属和管理。
1. 充值流程
充值过程的接口调用时序图如下:
调用流程如下:
-
商家系统调用
/user/create
(创建用户子合约钱包接口),向 Pay Protocol 发起创建子合约请求,Pay Protocol 对商户请求参数进行校验,生成用户在对应公链的钱包地址。 -
创建完成后,通过调用
/api/mer/user/detail
(查询钱包详情接口)获取对应公链用户子合约地址,即为用户充值转账接收地址。{
"code": 200,
"msg": "success",
"data": {
"userId": 1054,
"createTime": "2024-03-28 11:43:05",
"userWallet": [
{
"walletId": 55875,
"chainId": 1,
"walletAddress": "TGJVB5aC6wvG7fgD7uyfYsPbEUKhV4vigC"
}
],
"userType": 1,
"uuid": "2313-5f08afe6ca854e4ebf79781f351d0cb7"
}
} -
用户充值转账到接收地址后,Pay Protocol 会根据转账接收地址的交易成功记录生成对应的充值订单。
-
充值订单完成后,Pay Protocol 通过 POST 请求充值回调 URL(如图下图所示,请在商户管理后台自行设置充值回调地址),返回回调通知参数。
-
由于充值订单是 Pay Protocol 系统生成,而并非商户创建,商家也可自行调用
/recharge/list
(查询充值订单列表接口)查询充值列表以及最新的充值记录信息。 -
若由于网络等原因,导致商家系统没有收到回调通知,商家可自行调用
/recharge/detail
(查询充值订单详情接口)查询充值以及充值记录信息,(商家也可以直接调用该查询接口,不需要依赖回调通知),或自行调用/recharge/notify
(主动发起充值回调通知)。
注意
- 商家系统接收到回调通知以后,必须通过验签(验证通知请求头中
X-PAY-SIGN
参数)来确保充值通知是由 Pay Protocol 发送的。详细验签规则可查看回调通知验签。 - 接收到回调通知并验签通过后,请务必核对订单,请勿重复充值订单,并根据参数
rechargeStatus
进行后续业务处理。
2. 提现流程
提现过程的接口调用时序图如下:
调用流程如下:
- 商家系统调用
/withdraw/apply
(发起提现申请接口)向 Pay Protocol 发起提现请求,Pay Protocol 对商家请求参数进行校验,而后生成提现记录并返回。 - 生成提现记录后,商户通过管理后台对提现订单审核并交易转账。
- 交易成功后,Pay Protocol 通过 POST 请求
notifyUrl
(提现时商户入参传入),返回回调通知参数。 - 若由于网络等原因,导致商家系统没有收到回调通知,商家可自行调用
/withdraw/detail
(查询提现订单详情接口)查询交易以及提现信息,(商家也可以直接调用该查询接口,不需要依赖回调通知),或自行调用/withdraw/notify
(主动发起提现回调通知)。
注意
- 商家系统接收到回调通知以后,必须通过验签(验证通知请求头中的
X-PAY-SIGN
参数)来确保提现通知是由 Pay Protocol 发送的。详细验签规则可查看回调通知验签。 - 接收到回调通知并验签通过后,请务必核对通知中的参数值是否与请求中的一致,并根据参数
withdrawStatus
进行后续业务处理。