搜索结果

×

搜索结果将在这里显示。

发起支付退款

商户业务系统通过统一退款接口发起退款请求,店来宝支付网关会根据商户发起的支付订单号,找到对应到支付通道发起退款。
接口说明
适用对象:普通商户 特约商户
请求URL:https://pay.yintongzaixian.com/api/refund/refundOrder
请求方式:POST
请求类型:application/jsonapplication/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());
}