撤销订单
应用场景(付款码支付使用):
支付交易返回失败或支付系统超时,调用该接口撤销交易。如果此订单用户支付失败,QQ钱包系统会将此订单关闭;如果用户支付成功,QQ钱包系统会将此订单资金退还给用户。
注意:
1、7天以内的交易单可调用撤销,其他正常支付的单如需实现退款功能请调用【申请退款接口】;
2、提交支付交易后先调用【订单查询接口】,如多次查询后支付结果仍不明晰再调用【撤销订单接口】;
3、调用支付接口后请勿立即调用【撤销订单接口】。
接口地址:
https://api.qpay.qq.com/cgi-bin/pay/qpay_reverse.cgi
是否需要证书:
是
接口规则
· 为保证交易安全性,采用HTTPS传输
· 采用POST方法提交
· 统一采用UTF-8字符编码
更多详情见接口规则
请求参数:
变量名 | 字段名 | 字段类型 | 必填 | 备注 | 示例 |
appid | 应用ID | String(32) | 否 | 腾讯开放平台或QQ互联平台审核通过的应用APPID | 1007033799 |
sub_appid | 子商户应用ID | String(32) | 否 | 腾讯开放平台或QQ互联平台审核通过的应用APPID | 1007033790 |
mch_id | 商户号 | String(32) | 是 | QQ钱包分配的商户号 | 1900000109 |
sub_mch_id | 子商户号 | String(32) | 是 | 子商户号或银行识别码 | 1900000109或9000000101 |
nonce_str | 随机字符串 | String(32) | 是 | 随机字符串,不长于32位。 | 3e5a036cb4bc3a677a38ad9d69eb3feb |
sign | 商户签名算法规则 | String(128) | 是 | 商户签名,详见商户签名算法规则 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
out_trade_no | 商户订单号 | String(32) | 是 | 商户系统内部的订单号,32个字符内、可包含字母,说明见商户订单号 | 20150806125346 |
op_user_id | 操作员ID | String(32) | 是 | 操作员帐号, 默认为商户号 | 1900000109 |
op_user_passwd | 操作员密码的MD5 | String(32) | 是 | 操作员密码的MD5 | e47fefadd66e024bb2b85dfeb5fe86ba |
示例如下:
<xml>
<mch_id>1301278501</mch_id>
<nonce_str>b3dd0d076baf72459d7ebe5eb3422cb1</nonce_str>
<out_trade_no>2016061235213677</out_trade_no>
<sign>8bf35c2fd0ca5f0ee0d23a2c0d73f912</sign>
<op_user_id>1267727601</op_user_id>
<op_user_passwd>20A8587EE8FE76C02495344769D73729</op_user_passwd>
</xml>
返回结果:
变量名 | 字段名 | 类型 | 必填 | 描述 | 示例 |
return_code | 返回状态码 | String(16) | 是 | SUCCESS/FAIL | SUCCESS |
return_msg | 返回信息 | String(128) | 否 | 返回信息,如非空,为错误原因 | 签名失败 |
retcode | 手Q CGI原始错误码 | String(16) | 是 | 原始错误码 | 10025 |
retmsg | 手Q CGI原始错误信息 | String(128) | 否 | 原始错误信息 | 系统繁忙 |
下列字段,在return_code为成功时有返回:
变量名 | 字段名 | 类型 | 必填 | 描述 | 示例 |
appid | 应用ID | String(32) | 否 | 腾讯开放平台或QQ互联平台审核通过的应用APPID | 1007033799 |
sub_appid | 子商户应用ID | String(32) | 否 | 腾讯开放平台或QQ互联平台审核通过的应用APPID | 1007033790 |
mch_id | 商户号 | String(32) | 是 | QQ钱包分配的商户号 | 1900000109 |
sub_mch_id | 子商户号 | String(32) | 是 | 子商户号或商户识别码 | 1900000109或9000000101 |
sign | 商户签名算法规则 | String(128) | 是 | 商户签名,详见商户签名算法规则 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
result_code | 业务结果 | String(32) | 是 | SUCCESS/FAIL | SUCCESS |
err_code | 错误代码 | String(32) | 否 | 详情见错误代码 | SYSTEMERROR |
err_code_desc | 错误代码描述 | String(128) | 否 | 错误返回的信息描述 | 系统繁忙 |
nonce_str | 随机字符串 | String(32) | 是 | 随机字符串,不长于32位。 | 3e5a036cb4bc3a677a38ad9d69eb3feb |
下列字段,在result_code为成功时有返回:
变量名 | 字段名 | 类型 | 必填 | 描述 | 示例 |
recall | 是否重新调用 | String(1) | 是 | Y 需要重复调用 N 不需要重复调用 | Y |
示例如下:
<xml>
<retcode><![CDATA[0]]></retcode>
<retmsg><![CDATA[ok]]></retmsg>
<mch_id><![CDATA[1301278501]]></mch_id>
<nonce_str><![CDATA[b3dd0d076baf72459d7ebe5eb3422cb1]]></nonce_str>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[SUCCESS]]></return_msg>
<sign><![CDATA[B46441AB8FFBE83CCCDAD614D24BC30B]]></sign>
<sign>3E6136FBBE0BBAD3482C9966434AEA74</sign>
<out_trade_no>2016072208586047</out_trade_no>
<op_user_id>1267727601</op_user_id>
<op_user_passwd>20A8587EE8FE76C02495344769D73729</op_user_passwd>
<recall>N</recall>
</xml>
错误码:
错误码 | 描述 | 原因 | 解决办法 |
SYSTEMERROR | 系统错误 | 系统错误 | 请立即调用被扫订单结果查询API,查询当前订单状态,并根据订单的状态决定下一步的操作。 |
INVALID_TRANSACTIONID | 无效transaction_id | 请求参数未按指引进行填写 | 请求参数错误,检查原交易号是否存在或发起支付交易接口返回失败 |
PARAM_ERROR | 参数错误 | 请求参数未按指引进行填写 | 请根据接口返回的详细信息检查您的程序 |
REQUIRE_POST_METHOD | 请使用post方法 | 未使用post传递参数 | 请检查请求参数是否通过post方法提交,不要使用GET |
SIGNERROR | 签名错误 | 参数签名结果不正确 | 请检查签名参数和方法是否都符合签名算法要求 |
REVERSE_EXPIRE | 订单无法撤销 | 订单有7天的撤销有效期,过期将不能撤销 | 请检查需要撤销的订单是否超过可撤销有效期 |