TRADE_SUCCESS和TRADE_FINISHED的区别

本文详细解析了支付宝交易状态TRADE_SUCCESS与TRADE_FINISHED的区别,TRADE_SUCCESS代表交易成功但未完全结束,允许后续操作如退款;而TRADE_FINISHED表示交易已彻底完成,不再接受任何操作。文章还解释了即时到账普通版与高级版的不同,以及如何正确处理交易通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  • TRADE_SUCCESS  交易成功(或支付成功)
  • TRADE_FINISHED    交易完成


  • 即时到账普通版。   普通版不支持支付完成后的退款操作,即用户充值完成后,该交易就算是完成了,这笔交易就不能再做任何操作了。
  • 即时到账高级版。   这个版本在用户充值完成后,卖家可以执行退款操作进行退款,即该交易还没有彻底完成,卖家还可以修改这笔交易。

用户在支付宝网站上充值完成后,这个时候支付宝的通知消息中,如果是即时到账普通版,那么这时的交易状态值为:  TRADE_FINISHED;如果是即时到账高级版,此时的交易状态值就为:TRADE_SUCCESS。

TRADE_SUCCESS状态代表了充值成功,也就是说钱已经进了支付宝(担保交易)或卖家(即时到账);这时候,这笔交易应该还可以进行后续的操作(比如三个月后交易状态自动变成TRADE_FINISHED),因为整笔交易还没有关闭掉,也就是说一定还有主动通知过来。而TRADE_FINISHED代表了这笔订单彻底完成了,不会再有任何主动通知过来了。

综上所述,收到TRADE_FINISHED请求后,这笔订单就结束了,支付宝不会再主动请求商户网站了;收到TRADE_SUCCESS请求后,后续一定还有至少一条通知记录,即TRADE_FINISHED。所以,在做通知接口时,切记使用判断订单状态用或的关系。

转载于:https://my.oschina.net/zhuzhiqiang/blog/671759

/** * 支付通知(支付宝回调) * * @param request 请求信息 * @param response 响应信息 * @return AjaxResult */ @Override public void notifyUrl(HttpServletRequest request, HttpServletResponse response) { log.info("----------->【H5下单】支付宝支付回调开始"); try { // 从请求中获取支付宝支付通知的数据 Map<String, String> params = AlipayUtils.parseNotify(request); log.info("【H5下单】支付回调响应参数: {}", params); String transactionNo = ""; if (params != null && "TRADE_SUCCESS".equals(params.get("trade_status"))) { transactionNo = params.get("out_trade_no"); String total_amount = params.get("total_amount"); LsUserRechargeRecord order = lsUserRechargeRecordMapper.selectByTransactionNo(transactionNo); if (order != null && order.getStatus() == 2) { // 支付成功,更新订单状态 order.setStatus(1); order.setPaymentTime(new Date()); order.setActualAmount(new BigDecimal(total_amount)); lsUserRechargeRecordMapper.updateLsUserRechargeRecord(order); log.info("【H5下单】订单支付成功, 已更新支付状态"); // 更新用户总资产 this.updateUserInfo(order.getUserId(), total_amount); // 成功,返回 success response.getWriter().print("success"); return; // 关键:成功时直接 return,避免后续执行 fail } } else { log.warn("【H5下单】交易状态非成功或参数为空!"); this.alipayTradeClose(transactionNo); } } catch (Exception e) { log.error("支付回调异常", e); try { response.getWriter().print("fail"); // 只有异常时返回 fail } catch (IOException ioException) { log.error("返回 FAIL 失败", ioException); } } } 支付宝支付回调, 看看有没有哪里有逻辑的问题
最新发布
03-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值