搜索结果

×

搜索结果将在这里显示。

提现结果通知

接口说明

接口描述:当钱包提现成功时,平台网关会向商户系统发起回调通知。如果商户系统没有正确返回,平台网关会延迟再次通知。

适用对象:特约商户

请求URL:该链接是通过发起提现接口提交的参数notifyUrl设置,如果无法访问链接,商户系统将无法接收通知。

请求方式:POST

请求类型:application/x-www-form-urlencoded

通知参数

字段名 变量名 必填 类型 示例值 描述
平台提现单号 cashoutId 是 String(30) C1724328933329321985 平台提现单号
商户号 mchNo 是 String(30) M1621873433953 商户号
应用ID appId 是 String(24) 60cc09bce4b0f1c0b83761c9 应用ID
商户订单号 mchOrderNo 是 String(30) 20160427210604000490 返回商户传入的订单号
支付接口代码 ifCode 是 String(30) hnawalletpay 支付接口代码
提现钱包用户编号 walletId 是 String 124442600 提现钱包用户编号
提现金额 amount 是 long 30 提现金额, 单位:分
提现状态 state 是 int 2 提现状态: 0-订单生成, 1-提现中, 2-提现成功, 3-提现失败
渠道提现单号 channelOrderNo 否 String T7812873321y8192 渠道提现单号,提现状态为2时返回
提现成功时间 successTime 否 String 2023-11-01 10:02:25 提现成功时间,提现状态为2时返回
扩展参数 extParam 否 String 134586944573118714 商户扩展参数,回调时会原样返回
备注 remark 否 String 备注 备注
渠道错误码 errCode 否 String 100E0047 渠道下单返回错误码
渠道错误描述 errMsg 否 String 账户余额不足 渠道下单返回错误描述
通知请求时间 reqTime 是 String(30) 1622016572190 通知请求时间,,13位时间戳
签名 sign 是 String(32) C380BEC2BFD727A4B6845133519F3AD6 签名值,详见签名算

返回结果

商户业务系统处理后同步返回给平台网关,返回字符串 success 则表示成功,返回非success则表示处理失败,支付中心会再次通知业务系统。(通知频率为0/30/60/90/120/150,单位:秒)

注意:返回的字符串必须是小写,且前后不能有空格和换行符。

通知示例数据

{
  "amount": 1000,
  "appId": "64e87b640d1480cf86ae4385",
  "cashoutId": "C1724328933329321985",
  "channelOrderNo": "",
  "errCode": "",
  "errMsg": "",
  "extParam": "mchParams",
  "ifCode": "hnawalletpay",
  "mchNo": "M1692957540",
  "mchOrderNo": "MT1699947028710",
  "remark": "备注",
  "state": 2,
  "walletId": "2",
  "reqTime": "1622016572190",
  "sign": "099ECF5B1941F59A7319306F176CC5BA"
}

SDK验签代码示例

@RequestMapping("/mchJeepayWalletCashoutNotify")
    public void mchJeepayWalletCashoutNotify(HttpServletRequest request, HttpServletResponse response) throws IOException {

        // 获取到请求参数
        WalletCashoutNotifyResModel walletCashoutNotifyResModel = JeepayNotifyKit.convertWalletCashoutNotifyResModel(request);

        // 获取到jeepay回调参数中的: mchNo 和 appId
        String mchNo = walletCashoutNotifyResModel.getMchNo();
        String appId = walletCashoutNotifyResModel.getAppId();
        String mchOrderNo = walletCashoutNotifyResModel.getMchOrderNo(); // 商户请求单号

        String mchAppSecret = ""; // TODO 根据[mchNo,appId]自行查询配置的秘钥

        // 验签失败
        if (!walletCashoutNotifyResModel.checkSign(mchAppSecret)) {
            response.getWriter().print("sign fail");
            return;
        }
    }