搜索结果

×

搜索结果将在这里显示。

发起支付退款

商户业务系统通过统一退款接口发起退款请求,店来宝支付网关会根据商户发起的支付订单号,找到对应到支付通道发起退款。
接口说明
适用对象:普通商户 特约商户
请求URL:https://pay.yintongzaixian.com/api/refund/refundOrder
请求方式:POST
请求类型:application/json 或 application/x-www-form-urlencoded

请求参数

字段名 变量名 必填 类型 示例值 描述
商户号 mchNo 是 String(64) M1621873433953 商户号
应用ID appId 是 String(64) 60cc09bce4b0f1c0b83761c9 应用ID
支付订单号 payOrderId 是 String(30) P20160427210604000490 支付中心生成的订单号,与mchOrderNo二者传一即可
商户订单号 mchOrderNo 是 String(64) 20160427210604000490 商户生成的支付订单号,与payOrderId二者传一即可
商户退款单号 mchRefundNo 是 String(64) M27210632100491 商户生成的退款单号
退款金额 refundAmount 是 int 100 退款金额,单位分
货币代码 currency 是 String(3) cny 三位货币代码,人民币:cny
退款原因 refundReason 是 String(256) 用户退货 退款原因
客户端IP clientIp 否 String(128) 210.73.10.148 客户端IPV4地址
异步通知地址 notifyUrl 否 String(128) https://www.yintongzaixianpay.cn/notify.htm 退款完成后回调该URL,只有传了该值才会发起回调
渠道参数 channelExtra 否 String(512) {“auth_code”, “13920933111042”} 特定渠道发起的额外参数,json格式字符串.详见渠道参数说明
扩展参数 extraParam 否 String(512) 134586944573118714 商户扩展参数,回调时会原样返回
请求时间 reqTime 是 long 1622016572190 请求接口时间,13位时间戳
接口版本 version 是 String(3) 1.0 接口版本号,固定:1.0
签名 sign 是 String(32) C380BEC2BFD727A4B6845133519F3AD6 签名值,详见签名算法
签名类型 signType 是 String(32) MD5 签名类型,目前只支持MD5或RSA2方式

请求示例数据JSON

{
  "payOrderId": "P202106181104177050002",
  "extParam": "",
  "mchOrderNo": "",
  "refundReason": "退款测试",
  "sign": "2762CDB48D5179281DB6C0995E4EEDE0",
  "reqTime": "1624007315",
  "version": "1.0",
  "channelExtra": "",
  "appId": "60cc09bce4b0f1c0b83761c9",
  "mchRefundNo": "mho1624007315478",
  "clientIp": "192.166.1.132",
  "notifyUrl": "https://www.jeequan.com",
  "signType": "MD5",
  "currency": "cny",
  "mchNo": "M1623984572",
  "refundAmount": 4
}

返回参数

字段名 变量名 必填 类型 示例值 描述
返回状态 code 是 int 0 0-处理成功,其他-处理有误,详见错误码
返回信息 msg 否 String(128) 签名失败 具体错误原因,例如:签名失败、参数格式校验错误
签名信息 sign 否 String(32) CCD9083A6DAD9A2DA9F668C3D4517A84 对data内数据签名,如data为空则不返回
返回数据 data 否 String(512) {} 返回下单数据,json格式数据

data数据格式

字段名 变量名 必填 类型 示例值 描述
退款订单号 refundOrderId 是 String(30) R202106181708358940000 返回退款订单号
商户退款单号 mchRefundNo 是 String(30) mho1624007315478 返回商户传入的退款单号
退款状态 state 是 int 2 退款状态
0-订单生成
1-退款中
2-退款成功
3-退款失败
4-退款关闭
渠道退款单号 channelOrderNo 否 String 20160427210604000490 对应渠道的退款单号
渠道错误码 errCode 否 String ACQ.PAYMENT_AUTH_CODE_INVALID 上游渠道返回的错误码
渠道错误描述 errMsg 否 String Business Failed 失败 上游渠道返回的错误描述

返回示例数据JSON

{
  "code": 0,
  "data": {
    "channelOrderNo": "2021061822001423031419593035",
    "mchRefundNo": "mho1624007315478",
    "payAmount": 58,
    "refundAmount": 4,
    "refundOrderId": "R202106181708358940000",
    "state": 2
  },
  "msg": "SUCCESS",
  "sign": "2843B811B7A75D56B7D1950362820875"
}

SDK调用示例(Java)

JeepayClient jeepayClient = JeepayClient.getInstance(Jeepay.appId, Jeepay.apiKey, Jeepay.getApiBase());
RefundOrderCreateRequest request = new RefundOrderCreateRequest();
RefundOrderCreateReqModel model = new RefundOrderCreateReqModel();
model.setMchNo(Jeepay.mchNo);                           // 商户号
model.setAppId(jeepayClient.getAppId());                 // 应用ID
model.setPayOrderId("P1526477317539262465");             // 支付订单号
model.setMchRefundNo("R" + new Date().getTime());        // 商户退款单号
model.setRefundAmount(1L);                              // 退款金额,单位分
model.setRefundReason("用户申请退款");                    // 退款原因

request.setBizModel(model);
try {
    RefundOrderCreateResponse response = jeepayClient.execute(request);
    _log.info("验签结果:{}", response.checkSign(Jeepay.apiKey));
    if (response.isSuccess(Jeepay.apiKey)) {
        _log.info("data:{}", response.getData());
    } else {
        _log.info("请求失败:mchNo={}, msg={}", Jeepay.mchNo, response.getMsg());
    }
} catch (JeepayException e) {
    _log.error(e.getMessage());
}