普通商户 特约商户POSTapplication/x-www-form-urlencoded| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 退款订单号 | refundOrderId | 是 | String(30) | R20160427210604000490 | 支付中心生成的退款单号 |
| 支付订单号 | payOrderId | 是 | String(30) | P12021022311124442600 | 返回支付系统订单号 |
| 商户号 | mchNo | 是 | String(30) | M1621873433953 | 商户号 |
| 应用ID | appId | 是 | String(24) | 60cc09bce4b0f1c0b83761c9 | 应用ID |
| 商户退款单号 | mchRefundNo | 是 | String(30) | 20160427210604000490 | 商户生成的退款单号 |
| 支付金额 | payAmount | 是 | int | 100 | 支付金额,单位分 |
| 退款金额 | refundAmount | 是 | int | 100 | 退款金额,单位分 |
| 货币代码 | currency | 是 | String(3) | cny | 三位货币代码,人民币:cny |
| 退款状态 | state | 是 | int | 2 | 退款状态 0-订单生成 1-退款中 2-退款成功 3-退款失败 4-退款关闭 |
| 渠道订单号 | channelOrderNo | 否 | String | 20160427210604000490 | 对应渠道的订单号 |
| 渠道错误码 | errCode | 否 | String | 1002 | 渠道返回错误码 |
| 渠道错误描述 | errMsg | 否 | String | 134586944573118714 | 渠道返回错误描述 |
| 扩展参数 | extParam | 否 | String(512) | 134586944573118714 | 商户扩展参数,回调时会原样返回 |
| 创建时间 | createdAt | 是 | long | 1622016572190 | 订单创建时间,13位时间戳 |
| 成功时间 | successTime | 否 | long | 1622016572190 | 订单支付成功时间,13位时间戳 |
| 通知请求时间 | reqTime | 是 | String(30) | 1622016572190 | 通知请求时间,,13位时间戳 |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 |
注意:返回的字符串必须是小写,且前后不能有空格和换行符。通知示例数据{
"appId": "60cc09bce4b0f1c0b83761c9",
"channelOrderNo": "2021061822001423031419593035",
"createdAt": 1623985552769,
"currency": "cny",
"extParam": "",
"mchNo": "M1623984572",
"mchRefundNo": "mho1623985552430",
"payAmount": 58,
"payOrderId": "P202106181104177050002",
"refundAmount": 4,
"refundOrderId": "P202106181105527690009",
"state": 2,
"successTime": 1623985554000
} @RequestMapping("/mchJeepayRefundOrderNotify")
public void mchJeepayRefundOrderNotify(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 获取到请求参数
RefundOrderNotifyResModel refundOrderNotifyResModel = JeepayNotifyKit.convertRefundOrderNotifyResModel(request);
// 获取到jeepay回调参数中的: mchNo 和 appId
String mchNo = refundOrderNotifyResModel.getMchNo();
String appId = refundOrderNotifyResModel.getAppId();
String mchOrderNo = refundOrderNotifyResModel.getMchRefundNo(); // 商户订单编号
String mchAppSecret = ""; // TODO 根据[mchNo,appId]自行查询配置的秘钥
// 验签失败
if(!refundOrderNotifyResModel.checkSign(mchAppSecret)){
response.getWriter().print("sign fail");
return;
}
// 以下为验签成功
// TODO 商户业务逻辑处理。。。。。。。。。。。
// 响应jeepay SUCCESS字样
response.getWriter().print("SUCCESS");
}