diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java index aa2d0dd..04cc503 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/NotifyCotroller.java @@ -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"); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayController.java similarity index 62% rename from bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java rename to bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayController.java index e6b5371..39cc6a8 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayCotroller.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/PayController.java @@ -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; + } + } + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/ReturnCotroller.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/ReturnCotroller.java index 0b56ebe..48aafd3 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/ReturnCotroller.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/pay/controller/ReturnCotroller.java @@ -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 + "
out_trade_no:" + out_trade_no + + out.println("return_values: " + "
trade_no:" + trade_no + "
out_trade_no:" + out_trade_no + "
total_amount:" + total_amount + "
trade_status" + trade_status); } else { out.println("fail");