一、API简介
通用场景
商户可使用该接口查询自已通过alipay.trade.refund或alipay.trade.refund.apply提交的退款请求是否执行成功。
该接口的返回码10000,仅代表本次查询操作成功,不代表退款成功。
1、如果退款请求通过同步接口(alipay.trade.refund)发起,则如果退款查询接口返回了业务信息(trade_no、out_request_no和refund_amount不为空),表示退款成功;否则表示退款没有执行成功;
2、如果退款请求通过异步接口(alipay.trade.refund.apply)发起,则如果退款查询接口返回了业务信息,且refund_status为空或为REFUND_SUCCESS表示退款成功;否则表示退款没有受理成功或还没处理成功; 如果退款未成功,商户可以调用退款接口重试,重试时请务必保证退款请求号和退款金额一致。
注:发起退款查询接口的时间不能离退款请求时间太短,建议之间间隔10秒以上。
二、service
/**
* @Description: refundQuery 退款查询
* @Param: [outTradeNo 订单编号(唯一),
* tradeNo 交易号,
* outRequestNo 标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传
* ]
* @return: java.lang.String
* @Author: 皮蛋布丁
* @Date: 2021/6/27 15:00
*/
String refundQuery(String outTradeNo,String tradeNo,String outRequestNo);
三、service实现
@Override
public String refundQuery(String outTradeNo, String tradeNo, String outRequestNo) {
try {
AlipayTradeFastpayRefundQueryResponse response = Factory.Payment.Common()
.optional("trade_no", tradeNo)
.queryRefund(outTradeNo, outRequestNo);
return response.httpBody;
} catch (Exception e) {
log.error("退款查询发生异常,原因{}",e.getStackTrace() );
}
return null;
}
四、contorller
/**
* @Description: refundQuery 退款查询
* @Param: [outTradeNo 订单编号(唯一),
* tradeNo 交易号,
* outRequestNo 标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传
* ]
* @return: java.lang.String
* @Author: 皮蛋布丁
* @Date: 2021/6/27 15:04
*/
@PostMapping("/refundQuery")
public String refundQuery(String outTradeNo,String tradeNo,String outRequestNo){
return alipayService.refundQuery(outTradeNo, tradeNo, outRequestNo);
}
五、运行
退款查询时的【退款请求号】跟【商户订单号】是一致的。
注:能力有限,还请谅解,争取早日能够写出有质量的文章!
我是皮蛋布丁,一位爱吃皮蛋的热爱运动的废铁程序猿。