Skip to content

统一退款 ​

商户业务系统通过统一退款接口发起退款请求,三希智付支付网关会根据商户发起的支付订单号,找到对应到支付通道发起退款。

接口说明

适用对象:普通商户 特约商户

请求URL:https://pay.sanxipay.com/api/refund/refundOrder

请求方式:POST

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

请求参数

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

请求示例数据

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.sanxipay.com",
  "signType": "MD5",
  "currency": "cny",
  "mchNo": "M1623984572",
  "refundAmount": 4
}

返回参数

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

data数据格式

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

返回示例数据

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

查询退款订单 ​

商户通过该接口查询退款订单,支付网关会返回订单最新的数据

接口说明

适用对象:普通商户 特约商户

请求URL:https://pay.sanxipay.com/api/refund/query

请求方式:POST

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

请求参数

字段名变量名必填类型示例值描述
商户号mchNo是String(30)M1621873433953商户号
应用IDappId是String(24)60cc09bce4b0f1c0b83761c9应用ID
退款订单号refundOrderId二选一String(30)R20160427210604000490与mchRefundNo二者传一即可
商户退款单号mchRefundNo二选一String(30)20160427210604000490与refundOrderId二者传一即可
请求时间reqTime是long1622016572190请求接口时间,13位时间戳
接口版本version是String(3)1.0接口版本号,固定:1.0
签名sign是String(32)C380BEC2BFD727A4B6845133519F3AD6签名值,详见签名算法
签名类型signType是String(32)MD5签名类型,目前只支持MD5方式

请求示例数据

json
{
  "refundOrderId": "P202106181105527690009",
  "appId": "60cc09bce4b0f1c0b83761c9",
  "sign": "1484293FCAEAFE11DEC8949DB6B525A9",
  "signType": "MD5",
  "reqTime": "1624008199",
  "mchNo": "M1623984572",
  "version": "1.0"
}
字段名变量名必填类型示例值描述
返回状态code是int00-处理成功,其他-处理有误,详见错误码
返回信息msg否String(128)签名失败具体错误原因,例如:签名失败、参数格式校验错误
签名信息sign否String(32)CCD9083A6DAD9A2DA9F668C3D4517A84对data内数据签名,如data为空则不返回
返回数据data否String(512){}返回下单数据,json格式数据

data数据格式

字段名变量名必填类型示例值描述
退款订单号refundOrderId是String(30)R20160427210604000490支付中心生成的退款单号
支付订单号payOrderId是String(30)P12021022311124442600返回支付系统订单号
商户号mchNo是String(30)M1621873433953商户号
应用IDappId是String(24)60cc09bce4b0f1c0b83761c9应用ID
商户退款单号mchRefundNo是String(30)20160427210604000490商户生成的退款单号
支付金额payAmount是int100支付金额,单位分
退款金额refundAmount是int100退款金额,单位分
货币代码currency是String(3)cny三位货币代码,人民币:cny
退款状态state是int2退款状态
0-订单生成
1-退款中
2-退款成功
3-退款失败
4-退款关闭
渠道订单号channelOrderNo否String20160427210604000490对应渠道的订单号
渠道错误码errCode否String1002渠道返回错误码
渠道错误描述errMsg否String134586944573118714渠道返回错误描述
扩展参数extraParam否String(512)134586944573118714商户扩展参数,回调时会原样返回
创建时间createdAt是long1622016572190订单创建时间,13位时间戳
成功时间successTime否long1622016572190订单支付成功时间,13位时间戳

返回示例数据

json
{
  "code": 0,
  "data": {
    "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
  },
  "msg": "SUCCESS",
  "sign": "E3F9F008FC5EF84BD782CCC7BE69DC5E"
}

退款通知 ​

当退款完成时(成功或失败),支付网关会向商户系统发起回调通知。如果商户系统没有正确返回,支付网关会延迟再次通知。

商户必须完成的处理

先验签,再按 mchRefundNo 查询本地退款单并核对 refundAmount:state=2 更新为退款成功,state=3 更新为退款失败,其他状态拒绝处理。退款通知必须以 refundOrderId 独立幂等,不能与支付通知共用 payOrderId 作为唯一键;成功落库后返回 success,重复通知也返回 success,但不得重复增加退款金额或执行资金副作用。

接口说明

适用对象:普通商户 特约商户

请求URL:该链接是通过统一退款接口提交的参数notifyUrl设置,如果无法访问链接,商户系统将无法接收到支付中心的通知。

请求方式:POST

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

通知参数

字段名变量名必填类型示例值描述
退款订单号refundOrderId是String(30)R20160427210604000490支付中心生成的退款单号
支付订单号payOrderId是String(30)P12021022311124442600返回支付系统订单号
商户号mchNo是String(30)M1621873433953商户号
应用IDappId是String(24)60cc09bce4b0f1c0b83761c9应用ID
商户退款单号mchRefundNo是String(30)20160427210604000490商户生成的退款单号
支付金额payAmount是int100支付金额,单位分
退款金额refundAmount是int100退款金额,单位分
货币代码currency是String(3)cny三位货币代码,人民币:cny
退款状态state是int2退款状态
0-订单生成
1-退款中
2-退款成功
3-退款失败
4-退款关闭
渠道订单号channelOrderNo否String20160427210604000490对应渠道的订单号
渠道错误码errCode否String1002渠道返回错误码
渠道错误描述errMsg否String134586944573118714渠道返回错误描述
扩展参数extraParam否String(512)134586944573118714商户扩展参数,回调时会原样返回
创建时间createdAt是long1622016572190订单创建时间,13位时间戳
成功时间successTime否long1622016572190订单支付成功时间,13位时间戳
通知请求时间reqTime是String(30)1622016572190通知请求时间,,13位时间戳
签名sign是String(32)C380BEC2BFD727A4B6845133519F3AD6签名值,详见签名算法

> 返回结果

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

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

通知示例数据

json
{
    "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
}