跳到主要内容

充值接入流程

充值业务类似于交易所的机制,每个用户都有一个固定的子合约钱包地址,用于接收用户储值。这意味着每个用户有自己的唯一标识,并且可以通过这个标识向其分配的子合约地址进行充值。这种机制更适合处理个体用户的充值需求,确保资金的准确归属和管理。

1. 充值流程

充值过程的接口调用时序图如下:

调用流程如下:

  1. 商家系统调用 /user/create创建用户子合约钱包接口),向 Pay Protocol 发起创建子合约请求,Pay Protocol 对商户请求参数进行校验,生成用户在对应公链的钱包地址。

  2. 创建完成后,通过调用 /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"
    }
    }
  3. 用户充值转账到接收地址后,Pay Protocol 会根据转账接收地址的交易成功记录生成对应的充值订单。

  4. 充值订单完成后,Pay Protocol 通过 POST 请求充值回调 URL(如图下图所示,请在商户管理后台自行设置充值回调地址),返回回调通知参数。

    充值回调地址设置

  5. 由于充值订单是 Pay Protocol 系统生成,而并非商户创建,商家也可自行调用 /recharge/list查询充值订单列表接口)查询充值列表以及最新的充值记录信息。

  6. 若由于网络等原因,导致商家系统没有收到回调通知,商家可自行调用/recharge/detail查询充值订单详情接口)查询充值以及充值记录信息,(商家也可以直接调用该查询接口,不需要依赖回调通知),或自行调用/recharge/notify主动发起充值回调通知)。

注意
  • 商家系统接收到回调通知以后,必须通过验签(验证通知请求头中 X-PAY-SIGN 参数)来确保充值通知是由 Pay Protocol 发送的。详细验签规则可查看回调通知验签
  • 接收到回调通知并验签通过后,请务必核对订单,请勿重复充值订单,并根据参数 rechargeStatus 进行后续业务处理。

2. 提现流程

提现过程的接口调用时序图如下:

调用流程如下:

  1. 商家系统调用 /withdraw/apply发起提现申请接口)向 Pay Protocol 发起提现请求,Pay Protocol 对商家请求参数进行校验,而后生成提现记录并返回。
  2. 生成提现记录后,商户通过管理后台对提现订单审核并交易转账。
  3. 交易成功后,Pay Protocol 通过 POST 请求 notifyUrl(提现时商户入参传入),返回回调通知参数。
  4. 若由于网络等原因,导致商家系统没有收到回调通知,商家可自行调用 /withdraw/detail查询提现订单详情接口)查询交易以及提现信息,(商家也可以直接调用该查询接口,不需要依赖回调通知),或自行调用 /withdraw/notify主动发起提现回调通知)。
注意
  • 商家系统接收到回调通知以后,必须通过验签(验证通知请求头中的 X-PAY-SIGN 参数)来确保提现通知是由 Pay Protocol 发送的。详细验签规则可查看回调通知验签
  • 接收到回调通知并验签通过后,请务必核对通知中的参数值是否与请求中的一致,并根据参数 withdrawStatus 进行后续业务处理。