微信支付退款API地址: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_4&index=6
注意事项:
- total_fee:必须是订单的支付金额,单位:分;
- refund_fee:少于订单支付金额,单位:分;
- 同一个订单可以发起多次退款,商户退款单号(out_refund_no)可以不同;
- 使用一个商户退款单号(out_refund_no)进行退款,因为某种原因退款失败了,不影响下次使用其他的商户退款单号进行退款 。
部分错误信息
- 退款中的总金额(total_fee)与微信支付订单总金额不一致
退款请求
<xml>
<sign>464fd80d3822f288396c321501a06c29</sign>
<refund_fee>21500</refund_fee>
<mch_id>123</mch_id>
<op_user_id>1232846202</op_user_id>
<total_fee>21500</total_fee> --这里必须是支付时候的总就价格,特别是分批次退款的时候注意这里
<appid>123123123123</appid>
<out_refund_no>20160601195633930</out_refund_no>
<out_trade_no>2016053017063826030</out_trade_no>
<nonce_str>nNlsPAcmpP</nonce_str>
</xml>
退款响应
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[123123123123]]></appid>
<mch_id><![CDATA[123]]></mch_id>
<nonce_str><![CDATA[F8bnSKUY7qvEpQtk]]></nonce_str>
<sign><![CDATA[908963603B666ECB7FC0F0AE1C1F22EA]]></sign>
<result_code><![CDATA[FAIL]]></result_code>
<err_code><![CDATA[REFUND_FEE_MISMATCH]]></err_code>
<err_code_des><![CDATA[同一个out_refund_no退款金额要一致]]></err_code_des>
</xml>
- 退款金额(refund_fee)大于总金额(total_fee)
<xml><return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[invalid refund_fee]]></return_msg>
</xml>
- 订单的支付金额已经全部退款
<xml><return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[123123123123]]></appid>
<mch_id><![CDATA[123]]></mch_id>
<nonce_str><![CDATA[UdhYGRO1wLNkR0TR]]></nonce_str>
<sign><![CDATA[3FD2B2A28ECF24565CA35FCB76149431]]></sign>
<result_code><![CDATA[FAIL]]></result_code>
<err_code><![CDATA[TRADE_STATE_ERROR]]></err_code>
<err_code_des><![CDATA[订单状态错误]]></err_code_des>
</xml>
- 缺少证书
wx sendpost exception
org.apache.http.NoHttpResponseException: api.mch.weixin.qq.com:443 failed to respond
参考: http://blog.csdn.net/u011160656/article/details/41946873