退款类接口 ========== 退款接口 -------- 功能说明 ~~~~~~~~~~~~~~~~ 用于个人用户、企业用户和个体户进行支付交易的退款 调用方式:系统调用 请求参数 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | **参数中文名称** | **参数名称** | **数据格式** | **是否必须** | **说明** | +======================+==============================+=====================+================+===================================================================================================================+ | 版本号 | version | 定长2位的String | 必须 | 固定为10,如版本升级,能向前兼容 | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 消息类型 | cmd\_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为205 | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 商户客户号 | mer\_cust\_id | 定长16位的String | 必须 | 商户的唯一标识 | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 用户客户号 | user\_cust\_id | 定长16位的String | 可选 | 由汇付生成,用户的唯一性标识 对原交易为网银支付,代扣支付,快捷支付,必须 对原交易为扫码支付,可选 | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 订单日期 | order\_date | 定长8位String | 必须 | 格式为“yyyyMMdd” | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 订单号 | order\_id | 变长20位的String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 退款金额 | trans\_amt | 变长14位的String | 必须 | 退款金额,金额格式必须是###.00,比如2.00,2.01 | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 原交易平台流水id | orginal\_platform\_seq\_id | 定长18位String | 必须 | 原交易流水号 | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 快捷支付页面版标识 | quickpay\_page\_flag | 定长1位String | 可选 | 默认为否 否:0 是:1 原交易为快捷支付WEB版或快捷支付APP版时,设为是 | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 分账账户串 | div\_detail | 变长String | 必须 | 出账账户串,json格式:[{"divCustId":"60010001"," divAcctId":"000001","divAmt":"1.00"}] | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 商户后台应答地址 | bg\_ret\_url | 变长128位的String | 必须 | 通过后台异步通知商户退款结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 商户私有域 | mer\_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ | 扩展域 | extension | 变长512位的String | 可选 | | +----------------------+------------------------------+---------------------+----------------+-------------------------------------------------------------------------------------------------------------------+ 分账账户串(div\_detail )内容: +-------------------+-------------------+------------------+-------------+-----------------------------------------------------------+ | **参数中文名称** | **参数名称** | **数据格式** | **是否必须**| **说明** | +===================+===================+==================+=============+===========================================================+ | 分账客户号 | divCustId | 变长16位String | 必须 | div\_detail参数下的二级参数 分账客户号 | +-------------------+-------------------+------------------+-------------+-----------------------------------------------------------+ | 分账账户号 | divAcctId | 变长9位String | 必须 | div\_detail参数下的二级参数 分账账户号 | +-------------------+-------------------+------------------+-------------+-----------------------------------------------------------+ | 分账金额 | divAmt | 变长14位String | 必须 | div\_detail参数下的二级参数 分账金额,保留两位小数 | +-------------------+-------------------+------------------+-------------+-----------------------------------------------------------+ | 是否冻结标志 | divFreezeFg | 定长2位String | 必须 | div\_detail参数下的二级参数 冻结标志 01:冻结; 00:不冻结 | +-------------------+-------------------+------------------+-------------+-----------------------------------------------------------+ 返回参数 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | **参数中文名称** | **参数名称** | **数据格式** | **是否必须** | **说明** | +====================+=====================+=====================+================+===============================================================================+ | 消息类型 | cmd\_id | 变长String | 必须 | 每一种消息类型代表一种交易,此处为205 | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 返回码 | resp\_code | 变长String | 必须 | 205000--调用成功,其他见返回码 | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 结果描述 | resp\_desc | 变长String | 必须 | 返回描述 | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 商户客户号 | mer\_cust\_id | 变长16位的String | 必须 | | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 用户客户号 | user\_cust\_id | 变长16位的String | 可选 | | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 订单日期 | order\_date | 定长8位 | 必须 | | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 订单号 | order\_id | 变长20位的String | 必须 | | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 平台流水id | platform\_seq\_id | 定长18位String | 必须 | 交易流水号 | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 交易金额 | trans\_amt | 变长14位的String | 必须 | | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 交易状态 | trans\_stat | 变长8位的String | 必须 | | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 商户后台应答地址 | bg\_ret\_url | 变长128位的String | 必须 | 通过后台异步通知商户退款结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 商户私有域 | mer\_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ | 扩展域 | extension | 变长512位的String | 可选 | | +--------------------+---------------------+---------------------+----------------+-------------------------------------------------------------------------------+ 返回码 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-----------------------------------------------+------------------------------------------------------+ |**返回码** |**返回描述** | +-----------------------------------------------+------------------------------------------------------+ | 205000 | 交易成功 | +-----------------------------------------------+------------------------------------------------------+ | 205002 | 请求已受理 | +-----------------------------------------------+------------------------------------------------------+ | 205003 | 交易失败 | +-----------------------------------------------+------------------------------------------------------+ | 205098 | 系统超时 | +-----------------------------------------------+------------------------------------------------------+ | 205099 | 系统异常 | +-----------------------------------------------+------------------------------------------------------+ | 205100 | 请求参数非法 | +-----------------------------------------------+------------------------------------------------------+ | 205101 | 商户无此接口权限 | +-----------------------------------------------+------------------------------------------------------+ | 205102 | 验证签名失败 | +-----------------------------------------------+------------------------------------------------------+ | 205103 | 商户状态异常 | +-----------------------------------------------+------------------------------------------------------+ | 205104 | 用户状态异常 | +-----------------------------------------------+------------------------------------------------------+ | 205105 | 账户状态异常 | +-----------------------------------------------+------------------------------------------------------+ | 205107 | 消息类型与签名内容不一致 | +-----------------------------------------------+------------------------------------------------------+ | 205108 | 商户客户号与签名内容不一致 | +-----------------------------------------------+------------------------------------------------------+ | 205109 | 版本号与签名内容不一致 | +-----------------------------------------------+------------------------------------------------------+ | 205110 | 商户号不存在 | +-----------------------------------------------+------------------------------------------------------+ | 205111 | 用户客户号不存在 | +-----------------------------------------------+------------------------------------------------------+ | 205112 | 账号不存在 | +-----------------------------------------------+------------------------------------------------------+ | 205113 | 过渡账户不能出账 | +-----------------------------------------------+------------------------------------------------------+ | 205202 | 交易订单号重复 | +-----------------------------------------------+------------------------------------------------------+ | 205300 | 原支付交易不存在 | +-----------------------------------------------+------------------------------------------------------+ | 205301 | 该订单状态不可退款 | +-----------------------------------------------+------------------------------------------------------+ | 205302 | 订单已退款 | +-----------------------------------------------+------------------------------------------------------+ | 205303 | 用户客户号与支付交易不一致 | +-----------------------------------------------+------------------------------------------------------+ | 205305 | 可退金额不足 | +-----------------------------------------------+------------------------------------------------------+ | 205306 | 调用PA批量转账接口失败 | +-----------------------------------------------+------------------------------------------------------+ | 205721 | 分账串内容不能超过五个 | +-----------------------------------------------+------------------------------------------------------+ | 205722 | 分账串部分字段为空 | +-----------------------------------------------+------------------------------------------------------+ | 205723 | 分账串金额格式错误 | +-----------------------------------------------+------------------------------------------------------+ | 205724 | 分账串累计金额不等于订单金额 | +-----------------------------------------------+------------------------------------------------------+ | 205727 | 分账信息异常 | +-----------------------------------------------+------------------------------------------------------+ | 205728 | 分账串账户信息格式错误 | +-----------------------------------------------+------------------------------------------------------+ | 205729 | 分账串账户异常 | +-----------------------------------------------+------------------------------------------------------+ 代码示例 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ java .. code:: java String valueObj = "{ "version": "10", "cmd_id": "205", "mer_cust_id": "6666000000002619", "user_cust_id": "6666000000005942", "order_date": "20170830", "order_id": "2000501", "quickpay_page_flag": "1", "trans_amt": "0.03", "orginal_platform_seq_id": "201708300000004663", "div_detail": "[{\"divCustId\":\"6666000000002962\",\"divAcctId\":\"3133\",\"divAmt\":\"0.01\",\"divFreezeFg\":\"00\"},{\"divCustId\":\"6666000000002619\",\"divAcctId\":\"2744\",\"divAmt\":\"0.02\",\"divFreezeFg\":\"00\"}]", "bg_ret_url": "http://192.168.25.79:8081/zeus-callback/asyncHandle.json", "mer_priv": "1", "extension": "1" }"; String testUrl = "http://192.168.3.170:8083/npay/merchantRequest"; String checkValue = sign(valueObj); String cmdId = "205"; String merCustId = "6666000000002619"; String version = "10"; String contentType = "application/x-www-form-urlencoded"; String charset = "UTF-8"; String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue; jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset); jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send(); String body = httpResponse.bodyText(); String resultObj = parseResult(body);//解密 .. 成功响应: .. code:: json 200 { "cmd_id": "205", "resp_code": "205000", "resp_desc": "交易成功", "mer_cust_id" : "6666000000002619", "order_date": "20180327", "order_id": "10000000001", ....... } .. 失败响应: .. code:: json 200 { "cmd_id": "205", "resp_code": "205099", "resp_desc": "交易失败", "mer_cust_id" : "6666000000002619", "order_date": "20180327", "order_id": "10000000001", ....... }