1、我们的退款接口可分为全额退款和部分退款,那么怎么区分呢?
这个就要说到我们的关键参数:out_request_no 了,全额退款不传,部分退款必传;
2、out_request_no:标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传。也可以理解为同一笔交易退款,退款金额小于付款金额是,必须传这个参数,而且同一笔交易分多次退款的话,out_request_no每次传值都不能重复,必须保证唯一性
3、如果不传,但是退款金额与实际付款金额不符时会报"撤销或退款金额与订单金额不一致
{"alipay_trade_refund_response":{"code":"40004","msg":"Business Failed","sub_code":"ACQ.REFUND_AMT_NOT_EQUAL_TOTAL","sub_msg":"撤销或退款金额与订单金额不一致","out_trade_no":"2017082114417614181","refund_fee":"0.00","send_back_fee":"0.00"}
4、如果传了,但是退款金额大于实际付款金额则会报:REASON_TRADE_REFUND_FEE_ERR,退款金额无效,检查退款请求的金额是否正确
"alipay_trade_refund_response":{"code":"40004","msg":"Business Failed","sub_code":"ACQ.REASON_TRADE_REFUND_FEE_ERR","sub_msg":"REASON_TRADE_REFUND_FEE_ERR","out_trade_no":"2017082114417614181","refund_fee":"0.00","send_back_fee":"0.00"}
5.out_request_no传值后,如果已经调用进行了部分退款,不修改参数值,再次调用,不会报错,但是会返回:fund_change":"N";