再次查询充值

This commit is contained in:
sxu 2025-04-09 13:37:06 +08:00
parent e198fb86d7
commit b322b482ca
3 changed files with 47 additions and 5 deletions

View File

@ -83,6 +83,7 @@ public class NotifyCotroller {
updateTrade.setFailReason(trade_status);
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
//TODO 增加用户的个人钱包 acc_wallet_info
} else {
AccTradeVo updateTrade = new AccTradeVo();
updateTrade.setOrderNo(order_no);
@ -92,7 +93,6 @@ public class NotifyCotroller {
updateTrade.setFailReason(trade_status);
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
}
out.println("success");
} else {
out.println("fail");

View File

@ -1,9 +1,12 @@
package com.bonus.canteen.core.pay.controller;
import com.alibaba.excel.util.StringUtils;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.bonus.canteen.core.account.constants.AccTradeStateEnum;
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
import com.bonus.canteen.core.account.service.IAccTradeService;
@ -31,7 +34,7 @@ import java.util.UUID;
@Api(tags = "支付接口")
@RestController
@RequestMapping("/alipay")
public class PayCotroller {
public class PayController {
@Resource
AlipayClient alipayClient;
@Resource
@ -47,8 +50,8 @@ public class PayCotroller {
accTradeVo.setTradeType(AccTradeTypeEnum.CONSUME.getKey().longValue());
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
accTradeVo.setOrderNo(GlobalConstants.TENANT_ID + "_" + UUID.randomUUID().toString().replaceAll("-","") + "_" + sdf.format(date));
accTradeVo.setOrderName(GlobalConstants.TENANT_ID + "_" + SecurityUtils.getUserId() + "_" + GlobalConstants.PERSONAL_RECHARGE + "_" + sdf.format(date));
accTradeVo.setOrderNo(sdf.format(date) + "_" + GlobalConstants.TENANT_ID + "_" + SecurityUtils.getUserId());
accTradeVo.setOrderName(accTradeVo.getOrderNo() + "_" + GlobalConstants.PERSONAL_RECHARGE);
accTradeVo.setTradeTime(new Date());
accTradeVo.setAmount(accTradeVo.getPaymentAmount().multiply(new BigDecimal(100)).longValue());
accTradeVo.setPayType(PayTypeEnum.MEAL_CARD.getKey().longValue());
@ -72,4 +75,43 @@ public class PayCotroller {
response.getWriter().println(alipayResponse.getBody());
response.getWriter().flush();
}
/**
* 查询支付宝订单状态
* @param accTradeVo 商户订单号
* @return 订单查询结果
*/
@RequestMapping("queryOrder")
public AlipayTradeQueryResponse queryOrder(@RequestBody AccTradeVo accTradeVo) {
// 创建查询请求
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
// 设置业务参数
String bizContent = String.format("{\"out_trade_no\":\"%s\"}", accTradeVo.getOrderNo());
request.setBizContent(bizContent);
try {
// 发送查询请求
AlipayTradeQueryResponse response = alipayClient.execute(request);
// 根据结果处理充值记录成功的话存入钱包
String trade_status = response.getTradeStatus();
String third_trade_no = response.getTradeNo();
if ("TRADE_FINISHED".equals(trade_status) || "TRADE_SUCCESS".equals(trade_status)) {
AccTradeVo updateTrade = new AccTradeVo();
updateTrade.setOrderNo(accTradeVo.getOrderNo());
updateTrade.setThirdTradeNo(third_trade_no);
updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey().longValue());
updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue());
updateTrade.setFailReason(trade_status);
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
//TODO 增加用户的个人钱包 acc_wallet_info
}
return response;
} catch (AlipayApiException e) {
log.error("查询异常, ", e.getErrMsg());
return null;
}
}
}

View File

@ -50,7 +50,7 @@ public class ReturnCotroller {
String trade_no = request.getParameter("trade_no");
//交易状态
String trade_status = request.getParameter("trade_status");
out.println("trade_no:" + trade_no + "<br>out_trade_no:" + out_trade_no +
out.println("return_values: " + "<br>trade_no:" + trade_no + "<br>out_trade_no:" + out_trade_no +
"<br>total_amount:" + total_amount + "<br>trade_status" + trade_status);
} else {
out.println("fail");