搜索结果

×

搜索结果将在这里显示。

支付结果通知

支付通知

接口描述:当订单支付成功时,支付网关会向商户系统发起回调通知。如果商户系统没有正确返回,支付网关会延迟再次通知。
接口说明
适用对象:普通商户 特约商户
请求URL:该链接是通过统一下单接口提交的参数notifyUrl设置,如果无法访问链接,商户系统将无法接收到支付中心的通知。
请求方式:POST
请求类型:application/x-www-form-urlencoded
通知参数

字段名 变量名 必填 类型 示例值 描述
支付订单号 payOrderId 是 String(30) P12021022311124442600 返回支付系统订单号
商户号 mchNo 是 String(64) M1621873433953 商户号
应用ID appId 是 String(64) 60cc09bce4b0f1c0b83761c9 应用ID
商户订单号 mchOrderNo 是 String(64) 20160427210604000490 返回商户传入的订单号
支付接口 ifCode 是 String(30) wxpay 支付接口编码
支付方式 wayCode 是 String(30) WX_LITE 支付方式,微信小程序WX_LITE
支付金额 amount 是 int 100 支付金额,单位分
货币代码 currency 是 String(3) cny 三位货币代码,人民币:cny
订单状态 state 是 int 2 支付订单状态
0-订单生成
1-支付中
2-支付成功
3-支付失败
4-已撤销
5-已退款
6-订单关闭
客户端IP clientIp 否 String(32) 210.73.10.148 客户端IPV4地址
商品标题 subject 是 String(128) 店来宝商品标题测试 商品标题
商品描述 body 是 String(256) 店来宝商品描述测试 商品描述
渠道订单号 channelOrderNo 否 String 20160427210604000490 对应渠道的订单号
渠道错误码 errCode 否 String 1002 渠道下单返回错误码
渠道错误描述 errMsg 否 String 134586944573118714 渠道下单返回错误描述
扩展参数 extParam 否 String(512) 134586944573118714 商户扩展参数
支付成功时间 successTime 否 long 1622016572190 订单支付成功时间,13位时间戳
创建时间 createdAt 是 long 1622016572190 订单创建时间,13位时间戳
通知请求时间 reqTime 是 String(30) 1622016572190 通知请求时间,,13位时间戳
签名 sign 是 String(32) C380BEC2BFD727A4B6845133519F3AD6 签名值,详见签名算法

以下扩展参数如需同步传递需在商户后台配置

字段名 变量名 必填 类型 示例值 描述
商户门店ID storeId 否 int 商户门店ID
经度 lng 否 String 商户门店ID
纬度 lat 否 String 商户门店ID
码牌ID qrcId 否 int 商户门店ID
支付方式代码分类 wayCodeType 否 String 商户门店ID
商户手续费费率 mchFeeRate 否 String 商户门店ID
商户手续费 mchFeeAmount 否 int 商户手续费,单位分
渠道用户标识 channelUser 否 String 渠道用户标识,如微信openId,支付宝账号
订单分账模式 divisionMode 否 int 订单分账模式:0-该笔订单不允许分账, 1-支付成功按配置自动完成分账, 2-商户手动分账(解冻商户金额)
订单分账状态 divisionState 否 int 订单分账状态:0-未分账, 1-待分账, 2-分账中, 3-已分账, 4-完结中, 5-已完结, 6-已分账完结失败
买家备注 buyerRemark 否 String 买家备注
卖家备注 sellerRemark 否 String 卖家备注
订单失效时间 expiredTime 否 long 订单失效时间
支付凭证交易单号 platformOrderNo 否 String 支付凭证交易单号
支付凭证商户单号 platformMchOrderNo 否 String 支付凭证商户单号

> 返回结果

业务系统处理后同步返回给支付中心,返回字符串 success 则表示成功,返回非success则表示处理失败,支付中心会再次通知业务系统。(通知频率为0/30/60/90/120/150,单位:秒)
注意:返回的字符串必须是小写,且前后不能有空格和换行符。
通知示例数据JSON

{
    "amount": 5,
    "body": "商品描述",
    "clientIp": "192.166.1.132",
    "createdAt": "1622016572190",
    "currency": "cny",
    "extParam": "",
    "ifCode": "wxpay",
    "mchNo": "M1621873433953",
    "appId": "60cc09bce4b0f1c0b83761c9",
    "mchOrderNo": "mho1621934803068",
    "payOrderId": "20210525172643357010",
    "state": 3,
    "subject": "商品标题",
    "wayCode": "WX_BAR",
    "sign": "C380BEC2BFD727A4B6845133519F3AD6"
}

SDK验签代码示例

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

        // 获取到请求参数
        PayOrderNotifyResModel payOrderNotifyResModel = JeepayNotifyKit.convertNotifyResModel(request);

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

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

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

        // 以下为验签成功
        // TODO 商户业务逻辑处理。。。。。。。。。。。

        // 响应jeepay SUCCESS字样
        response.getWriter().print("SUCCESS");
    }