diff --git a/pom.xml b/pom.xml index 35555bf..53f3df1 100644 --- a/pom.xml +++ b/pom.xml @@ -12,6 +12,7 @@ com.chaozhangui.system.cashservice cashier-client 1.0.0 + pom 8 @@ -48,11 +49,11 @@ hutool-all 4.5.18 - - com.alibaba - fastjson - 1.2.9 - + + + + + org.projectlombok lombok diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMerchantThirdApply.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMerchantThirdApply.java index 896f67b..5bc2a46 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMerchantThirdApply.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/TbMerchantThirdApply.java @@ -23,6 +23,10 @@ public class TbMerchantThirdApply implements Serializable { private String appToken; + private String smallAppid; + + private String storeId; + private static final long serialVersionUID = 1L; public Integer getId() { @@ -104,4 +108,20 @@ public class TbMerchantThirdApply implements Serializable { public void setAppToken(String appToken) { this.appToken = appToken == null ? null : appToken.trim(); } + + public String getSmallAppid() { + return smallAppid; + } + + public void setSmallAppid(String smallAppid) { + this.smallAppid = smallAppid; + } + + public String getStoreId() { + return storeId; + } + + public void setStoreId(String storeId) { + this.storeId = storeId; + } } \ No newline at end of file diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java index c953ed5..4002405 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/PayService.java @@ -8,13 +8,13 @@ import com.chaozhanggui.system.cashierservice.entity.*; import com.chaozhanggui.system.cashierservice.entity.po.OrderDetailPo; import com.chaozhanggui.system.cashierservice.exception.MsgException; import com.chaozhanggui.system.cashierservice.model.ReturnOrderReq; -import com.chaozhanggui.system.cashierservice.model.ReturnWTZInfo; import com.chaozhanggui.system.cashierservice.model.ScanPayReq; import com.chaozhanggui.system.cashierservice.model.TradeQueryReq; import com.chaozhanggui.system.cashierservice.rabbit.RabbitProducer; import com.chaozhanggui.system.cashierservice.sign.CodeEnum; import com.chaozhanggui.system.cashierservice.sign.Result; import com.chaozhanggui.system.cashierservice.thirdpay.resp.MainScanResp; +import com.chaozhanggui.system.cashierservice.thirdpay.resp.OrderReturnResp; import com.chaozhanggui.system.cashierservice.thirdpay.resp.OrderStatusQueryResp; import com.chaozhanggui.system.cashierservice.thirdpay.resp.PublicResp; import com.chaozhanggui.system.cashierservice.thirdpay.service.ThirdPayService; @@ -30,8 +30,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; import java.math.BigDecimal; -import java.text.DecimalFormat; -import java.text.NumberFormat; +import java.math.RoundingMode; import java.util.*; @Service @@ -74,37 +73,33 @@ public class PayService { @Autowired TbUserInfoMapper tbUserInfoMapper; - - + @Autowired + ThirdPayService thirdPayService; + @Autowired + TbShopInfoMapper tbShopInfoMapper; + @Autowired + TbQuickPayMapper tbQuickPayMapper; @Value("${gateway.url}") private String gateWayUrl; - - @Value("${client.backUrl}") private String backUrl; - @Value("${thirdPay.payType}") private String thirdPayType; - - @Value("${thirdPay.url}") private String url; - - - @Value("${thirdPay.callBack}") private String callBack; + public static void main(String[] args) { - @Autowired - ThirdPayService thirdPayService; + System.out.printf("%.2f%n", new BigDecimal(1).setScale(2, RoundingMode.DOWN)); + } public Result queryPayType(String shopId) { return Result.success(CodeEnum.SUCCESS, tbShopPayTypeMapper.selectByShopId(shopId)); } - @Transactional(rollbackFor = Exception.class) public Result scanPay(String orderId, String authCode, String ip, String token) { if (ObjectUtil.isEmpty(orderId) || ObjectUtil.isEmpty(authCode) || ObjectUtil.isEmpty(ip)) { @@ -123,12 +118,12 @@ public class PayService { } - List cashierCarts= tbCashierCartMapper.selectByOrderId(orderId,"create"); - if(ObjectUtil.isEmpty(cashierCarts)||ObjectUtil.isNull(cashierCarts)){ + List cashierCarts = tbCashierCartMapper.selectByOrderId(orderId, "create"); + if (ObjectUtil.isEmpty(cashierCarts) || ObjectUtil.isNull(cashierCarts)) { return Result.fail(CodeEnum.CARTEXIST); } - StringBuffer body=new StringBuffer(); + StringBuffer body = new StringBuffer(); for (TbCashierCart cashierCart : cashierCarts) { body.append(cashierCart.getName()); } @@ -195,14 +190,14 @@ public class PayService { orderInfo.setUpdatedAt(System.currentTimeMillis()); tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); - if("ysk".equals(thirdPayType)){ + if ("ysk".equals(thirdPayType)) { ScanPayReq scanPayReq = new ScanPayReq(); scanPayReq.setAppId(thirdApply.getAppId()); scanPayReq.setTimestamp(System.currentTimeMillis()); scanPayReq.setAuthCode(authCode); scanPayReq.setNotifyUrl(backUrl); - scanPayReq.setConsumeFee(payment.getAmount().setScale(2, BigDecimal.ROUND_DOWN).toPlainString()); + scanPayReq.setConsumeFee(payment.getAmount().setScale(2, RoundingMode.DOWN).toPlainString()); Map map = BeanUtil.transBean2Map(scanPayReq); scanPayReq.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); @@ -258,21 +253,21 @@ public class PayService { return Result.fail(object.getString("msg")); } } - }else { + } else { - String reqbody=""; + String reqbody = ""; - if(body.length()>15){ - reqbody=body.substring(0,6).concat("....").concat(body.substring(body.length()-6,body.length())).toString(); - }else { - reqbody=body.toString(); + if (body.length() > 15) { + reqbody = body.substring(0, 6).concat("....").concat(body.substring(body.length() - 6, body.length())); + } else { + reqbody = body.toString(); } - PublicResp publicResp= thirdPayService.mainScan(url,thirdApply.getAppId(),reqbody,reqbody,payment.getAmount().setScale(2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(100)).longValue(),payType.equals("wechatPay")?"wx212769170d2c6b2a":null,authCode,orderInfo.getOrderNo(),"S2405103298",callBack,thirdApply.getAppToken()); - if(ObjectUtil.isNotNull(publicResp)&&ObjectUtil.isNotEmpty(publicResp)){ - if("000000".equals(publicResp.getCode())){ - MainScanResp mainScanResp= publicResp.getObjData(); - if("TRADE_SUCCESS".equals(mainScanResp.getState())){ + PublicResp publicResp = thirdPayService.mainScan(url, thirdApply.getAppId(), reqbody, reqbody, payment.getAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(), payType.equals("wechatPay") ? thirdApply.getSmallAppid() : null, authCode, orderInfo.getOrderNo(), thirdApply.getStoreId(), callBack, thirdApply.getAppToken()); + if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) { + if ("000000".equals(publicResp.getCode())) { + MainScanResp mainScanResp = publicResp.getObjData(); + if ("TRADE_SUCCESS".equals(mainScanResp.getState())) { payment.setTradeNumber(mainScanResp.getPayOrderId()); payment.setUpdatedAt(System.currentTimeMillis()); tbOrderPaymentMapper.updateByPrimaryKeySelective(payment); @@ -299,7 +294,7 @@ public class PayService { producer.printMechine(orderId); return Result.success(CodeEnum.SUCCESS, mainScanResp); - }else if("TRADE_AWAIT".equals(mainScanResp.getState())){ + } else if ("TRADE_AWAIT".equals(mainScanResp.getState())) { orderInfo.setStatus("paying"); orderInfo.setPayOrderNo(payment.getTradeNumber()); tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); @@ -318,7 +313,6 @@ public class PayService { return Result.fail("失败"); } - public Result queryOrder(String orderId, String token) { if (ObjectUtil.isEmpty(orderId)) { return Result.fail(CodeEnum.PARAM); @@ -339,46 +333,46 @@ public class PayService { TbOrderPayment tbOrderPayment = tbOrderPaymentMapper.selectByOrderId(orderId); if (ObjectUtil.isNotEmpty(tbOrderPayment)) { - if("ysk".equals(thirdPayType)){ - TradeQueryReq tradeQueryReq = new TradeQueryReq(); - tradeQueryReq.setAppId(thirdApply.getAppId()); - tradeQueryReq.setTimestamp(System.currentTimeMillis()); - tradeQueryReq.setOrderNumber(tbOrderPayment.getTradeNumber()); + if ("ysk".equals(thirdPayType)) { + TradeQueryReq tradeQueryReq = new TradeQueryReq(); + tradeQueryReq.setAppId(thirdApply.getAppId()); + tradeQueryReq.setTimestamp(System.currentTimeMillis()); + tradeQueryReq.setOrderNumber(tbOrderPayment.getTradeNumber()); - Map map = BeanUtil.transBean2Map(tradeQueryReq); - tradeQueryReq.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); - ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/tradeQuery"), tradeQueryReq, String.class); - if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { - JSONObject object = JSONObject.parseObject(response.getBody()); - if (object.get("code").equals("0")) { - JSONObject data = object.getJSONObject("data"); - if ("1".equals(data.getString("status"))) { - orderInfo.setStatus("closed"); - orderInfo.setPayOrderNo(tbOrderPayment.getTradeNumber()); - tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); + Map map = BeanUtil.transBean2Map(tradeQueryReq); + tradeQueryReq.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); + ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/tradeQuery"), tradeQueryReq, String.class); + if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { + JSONObject object = JSONObject.parseObject(response.getBody()); + if (object.get("code").equals("0")) { + JSONObject data = object.getJSONObject("data"); + if ("1".equals(data.getString("status"))) { + orderInfo.setStatus("closed"); + orderInfo.setPayOrderNo(tbOrderPayment.getTradeNumber()); + tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); - //更新购物车状态 - int cartCount = tbCashierCartMapper.updateByOrderId(orderId, "final"); - log.info("更新购物车:{}", cartCount); + //更新购物车状态 + int cartCount = tbCashierCartMapper.updateByOrderId(orderId, "final"); + log.info("更新购物车:{}", cartCount); - tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId), "closed"); + tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId), "closed"); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("token", token); - jsonObject.put("type", "create"); - jsonObject.put("orderId", orderId); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("token", token); + jsonObject.put("type", "create"); + jsonObject.put("orderId", orderId); - producer.putOrderCollect(jsonObject.toJSONString()); + producer.putOrderCollect(jsonObject.toJSONString()); - producer.printMechine(orderId); + producer.printMechine(orderId); + } } } - } - }else { - PublicResp orderstatus=thirdPayService.queryOrder(url,thirdApply.getAppId(),orderInfo.getOrderNo(),null,thirdApply.getAppToken()); - if(ObjectUtil.isNotNull(orderstatus)&&ObjectUtil.isNotEmpty(orderstatus)){ - if("000000".equals(orderstatus.getCode())){ - if("TRADE_SUCCESS".equals(orderstatus.getObjData().getState())){ + } else { + PublicResp orderstatus = thirdPayService.queryOrder(url, thirdApply.getAppId(), null, orderInfo.getOrderNo(), thirdApply.getAppToken()); + if (ObjectUtil.isNotNull(orderstatus) && ObjectUtil.isNotEmpty(orderstatus)) { + if ("000000".equals(orderstatus.getCode())) { + if ("TRADE_SUCCESS".equals(orderstatus.getObjData().getState())) { orderInfo.setStatus("closed"); orderInfo.setPayOrderNo(tbOrderPayment.getTradeNumber()); tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo); @@ -408,7 +402,6 @@ public class PayService { } - @Transactional(rollbackFor = Exception.class) public Result accountPay(String orderId, String memberId, String token) { if (ObjectUtil.isEmpty(orderId) || ObjectUtil.isEmpty(memberId)) { @@ -432,7 +425,6 @@ public class PayService { } - TbShopUser user = tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(memberId)); if (ObjectUtil.isEmpty(user) || !"1".equals(user.getIsVip().toString())) { return Result.fail(CodeEnum.MEMBERNOEXIST); @@ -487,7 +479,6 @@ public class PayService { return Result.success(CodeEnum.SUCCESS); } - @Transactional(rollbackFor = Exception.class) public Result memberScanPay(String orderId, String memberCode, String token) { if (ObjectUtil.isEmpty(orderId) || ObjectUtil.isEmpty(memberCode)) { @@ -512,13 +503,13 @@ public class PayService { } - TbUserInfo tbUserInfo=tbUserInfoMapper.selectByCardNo(memberCode); - if(ObjectUtil.isEmpty(tbUserInfo)){ + TbUserInfo tbUserInfo = tbUserInfoMapper.selectByCardNo(memberCode); + if (ObjectUtil.isEmpty(tbUserInfo)) { return Result.fail(CodeEnum.ACCOUNTEIXST); } - TbShopUser user = tbShopUserMapper.selectByShopId(orderInfo.getShopId(),tbUserInfo.getId().toString()).get(0); + TbShopUser user = tbShopUserMapper.selectByShopId(orderInfo.getShopId(), tbUserInfo.getId().toString()).get(0); if (ObjectUtil.isEmpty(user) || !"1".equals(user.getIsVip().toString())) { return Result.fail(CodeEnum.MEMBERNOEXIST); } @@ -545,7 +536,7 @@ public class PayService { orderInfo.setPayAmount(orderInfo.getOrderAmount()); - orderInfo.setMemberId(user.getUserId().toString()); + orderInfo.setMemberId(user.getUserId()); orderInfo.setPayType("deposit"); orderInfo.setStatus("closed"); orderInfo.setPayOrderNo("deposit".concat(SnowFlakeUtil.generateOrderNo())); @@ -572,7 +563,6 @@ public class PayService { return Result.success(CodeEnum.SUCCESS); } - @Transactional(rollbackFor = Exception.class) public Result cashPay(String orderId, String token) { if (ObjectUtil.isEmpty(orderId)) { @@ -621,7 +611,6 @@ public class PayService { return Result.success(CodeEnum.SUCCESS); } - @Transactional(rollbackFor = Exception.class) public Result bankPay(String orderId, String token) { if (ObjectUtil.isEmpty(orderId)) { @@ -669,7 +658,6 @@ public class PayService { return Result.success(CodeEnum.SUCCESS); } - @Transactional(rollbackFor = Exception.class) public Result returnOrder(List list, String token) { if (ObjectUtil.isEmpty(list) || list.size() <= 0) { @@ -738,11 +726,11 @@ public class PayService { } OrderDetailPo detailPo = new OrderDetailPo(); // totalAmount = totalAmount.add(it.getPriceAmount()); - totalAmount = totalAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(map1.get(it.getId())))); + totalAmount = totalAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId())))); saleAmount = saleAmount.add(it.getPrice()); - payAmount = payAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(map1.get(it.getId())))); + payAmount = payAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId())))); // payAmount=payAmount.add(it.getPriceAmount()); - packAMount = packAMount.add(it.getPackAmount().divide(new BigDecimal(it.getNum()), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(map1.get(it.getId())))); + packAMount = packAMount.add(it.getPackAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId())))); detailPo.setId(it.getId()); if (map1.get(it.getId()) + it.getReturnNum() >= it.getNum()) { @@ -751,7 +739,7 @@ public class PayService { detailPo.setStatus("closed"); } - BigDecimal returnAmount = it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(map1.get(it.getId()))); + BigDecimal returnAmount = it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, RoundingMode.DOWN).multiply(new BigDecimal(map1.get(it.getId()))); detailPo.setReturnNum(map1.get(it.getId())); detailPos.add(detailPo); it.setNum(map1.get(it.getId())); @@ -774,26 +762,43 @@ public class PayService { if ("scanCode".equals(payType) || "wx_lite".equals(payType)) { TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(merchantId)); MsgException.checkNull(thirdApply, "支付参数配置错误"); - ReturnOrderReq req = new ReturnOrderReq(); - req.setAppId(thirdApply.getAppId()); - req.setTimestamp(System.currentTimeMillis()); - req.setOrderNumber(orderInfo.getPayOrderNo()); - req.setAmount(String.format("%.2f", newOrderInfo.getPayAmount().setScale(2, BigDecimal.ROUND_DOWN))); - req.setMercRefundNo(orderInfo.getOrderNo()); - req.setRefundReason("退货"); - req.setPayPassword(thirdApply.getPayPassword()); - Map map = BeanUtil.transBean2Map(req); - req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); - log.info("merchantOrderReturn req:{}", JSONUtil.toJsonStr(req)); - ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/returnOrder"), req, String.class); - log.info("merchantOrderReturn:{}", response.getBody()); - if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { - JSONObject object = JSONObject.parseObject(response.getBody()); - if (!object.get("code").equals("0")) { - MsgException.check(true, "退款渠道调用失败"); - } + + if ("ysk".equals(thirdPayType)) { + ReturnOrderReq req = new ReturnOrderReq(); + req.setAppId(thirdApply.getAppId()); + req.setTimestamp(System.currentTimeMillis()); + req.setOrderNumber(orderInfo.getPayOrderNo()); + req.setAmount(String.format("%.2f", newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN))); + req.setMercRefundNo(orderInfo.getOrderNo()); + req.setRefundReason("退货"); + req.setPayPassword(thirdApply.getPayPassword()); + Map map = BeanUtil.transBean2Map(req); + req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); + log.info("merchantOrderReturn req:{}", JSONUtil.toJsonStr(req)); + ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/returnOrder"), req, String.class); + log.info("merchantOrderReturn:{}", response.getBody()); + if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { + JSONObject object = JSONObject.parseObject(response.getBody()); + if (!object.get("code").equals("0")) { + MsgException.check(true, "退款渠道调用失败"); + } // newOrderInfo.setPayOrderNo(object.getJSONObject("data").getString("refundOrderNumber")); + } + } else { + PublicResp publicResp = thirdPayService.returnOrder(url, thirdApply.getAppId(), newOrderInfo.getOrderNo(), null, orderInfo.getOrderNo(), "订单退款", newOrderInfo.getPayAmount().setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(), callBack, null, thirdApply.getAppToken()); + + if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) { + if ("000000".equals(publicResp.getCode())) { + if (!publicResp.getObjData().getState().equals("ING") || "SUCCESS".equals(publicResp.getObjData().getState())) { + MsgException.check(true, "退款渠道调用失败"); + } + } else { + MsgException.check(true, "退款渠道调用失败"); + } + } + } + } @@ -832,139 +837,145 @@ public class PayService { producer.putOrderCollect(jsonObject.toJSONString()); - producer.printMechine(newOrderInfo.getId() + ""); + producer.printMechine(String.valueOf(newOrderInfo.getId())); return Result.success(CodeEnum.SUCCESS); } + public Result quickPay(String token, String amount, String authCode, String payType) { + + JSONObject info = TokenUtil.parseParamFromToken(token); + MsgException.checkNull(info, "获取信息失败"); + + String shopId = info.getString("shopId"); + String staffId = info.getString("staffId"); + + BigDecimal payAmount = new BigDecimal(amount).setScale(2, RoundingMode.DOWN); - @Autowired - TbShopInfoMapper tbShopInfoMapper; + String orderNo = SnowFlakeUtil.generateOrderNo(); - @Autowired - TbQuickPayMapper tbQuickPayMapper; + TbQuickPay tbQuickPay = new TbQuickPay(null, Integer.valueOf(staffId), Integer.valueOf(shopId), orderNo, payType, payAmount, "1", null, new Date(), null); - public Result quickPay(String token,String amount,String authCode,String payType){ - - JSONObject info= TokenUtil.parseParamFromToken(token); - MsgException.checkNull(info,"获取信息失败"); - - String shopId=info.getString("shopId"); - String staffId=info.getString("staffId"); - - BigDecimal payAmount=new BigDecimal(amount).setScale(2, BigDecimal.ROUND_DOWN); - - - String orderNo=SnowFlakeUtil.generateOrderNo(); - - TbQuickPay tbQuickPay= new TbQuickPay(null,Integer.valueOf(staffId),Integer.valueOf(shopId),orderNo,payType,payAmount,"1",null,new Date(),null); - - if("cash".equals(payType)){ + if ("cash".equals(payType)) { tbQuickPay.setStatus("0"); tbQuickPay.setUpdateTime(new Date()); - }else { - TbShopInfo tbShopInfo= tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId)); - MsgException.checkNull(tbShopInfo,"店铺信息不存在"); + } else { + TbShopInfo tbShopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId)); + MsgException.checkNull(tbShopInfo, "店铺信息不存在"); TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(tbShopInfo.getMerchantId())); if (ObjectUtil.isEmpty(thirdApply) || ObjectUtil.isNull(thirdApply)) { return Result.fail(CodeEnum.NOCUSTOMER); } - ScanPayReq scanPayReq = new ScanPayReq(); - scanPayReq.setAppId(thirdApply.getAppId()); - scanPayReq.setTimestamp(System.currentTimeMillis()); - scanPayReq.setAuthCode(authCode); - scanPayReq.setNotifyUrl(backUrl); - scanPayReq.setConsumeFee(payAmount.toPlainString()); + if ("ysk".equals(thirdPayType)) { + ScanPayReq scanPayReq = new ScanPayReq(); + scanPayReq.setAppId(thirdApply.getAppId()); + scanPayReq.setTimestamp(System.currentTimeMillis()); + scanPayReq.setAuthCode(authCode); + scanPayReq.setNotifyUrl(backUrl); + scanPayReq.setConsumeFee(payAmount.toPlainString()); - Map map = BeanUtil.transBean2Map(scanPayReq); - scanPayReq.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); - ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/scanPay"), scanPayReq, String.class); - if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { - JSONObject object = JSONObject.parseObject(response.getBody()); - if (object.get("code").equals("0")) { - tbQuickPay.setTradeNo(object.getJSONObject("data").get("orderNumber").toString()); + Map map = BeanUtil.transBean2Map(scanPayReq); + scanPayReq.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); + ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/scanPay"), scanPayReq, String.class); + if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { + JSONObject object = JSONObject.parseObject(response.getBody()); + if (object.get("code").equals("0")) { + tbQuickPay.setTradeNo(object.getJSONObject("data").get("orderNumber").toString()); + } } - } - } + } else { - tbQuickPayMapper.insert(tbQuickPay); - return Result.success(CodeEnum.SUCCESS,tbQuickPay); - } - - - - - - - public Result queryQuickPayStatus(Integer id){ - - TbQuickPay tbQuickPay= tbQuickPayMapper.selectByPrimaryKey(id); - MsgException.checkNull(tbQuickPay,"订单信息不存在"); - if(tbQuickPay.getPayType().equals("scanpay")&&"1".equals(tbQuickPay.getStatus())) { - - TbShopInfo tbShopInfo= tbShopInfoMapper.selectByPrimaryKey(tbQuickPay.getShopId()); - MsgException.checkNull(tbShopInfo,"店铺信息不存在"); - - TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(tbShopInfo.getMerchantId())); - if (ObjectUtil.isEmpty(thirdApply) || ObjectUtil.isNull(thirdApply)) { - return Result.fail(CodeEnum.NOCUSTOMER); - } - TradeQueryReq tradeQueryReq = new TradeQueryReq(); - tradeQueryReq.setAppId(thirdApply.getAppId()); - tradeQueryReq.setTimestamp(System.currentTimeMillis()); - tradeQueryReq.setOrderNumber(tbQuickPay.getTradeNo()); - - Map map = BeanUtil.transBean2Map(tradeQueryReq); - tradeQueryReq.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); - ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/tradeQuery"), tradeQueryReq, String.class); - if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { - JSONObject object = JSONObject.parseObject(response.getBody()); - if (object.get("code").equals("0")) { - JSONObject data = object.getJSONObject("data"); - if ("1".equals(data.getString("status"))) { - - tbQuickPay.setStatus("0"); - tbQuickPay.setUpdateTime(new Date()); - tbQuickPayMapper.updateByPrimaryKeySelective(tbQuickPay); + PublicResp publicResp = thirdPayService.mainScan(url, thirdApply.getAppId(), "快捷收款", "快捷收款", payAmount.setScale(2, RoundingMode.DOWN).multiply(new BigDecimal(100)).longValue(), payType.equals("wechatPay") ? thirdApply.getSmallAppid() : null, authCode, tbQuickPay.getOrderNo(), thirdApply.getStoreId(), callBack, thirdApply.getAppToken()); + if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) { + if ("000000".equals(publicResp.getCode())) { + MainScanResp mainScanResp = publicResp.getObjData(); + if ("TRADE_SUCCESS".equals(mainScanResp.getState())) { + tbQuickPay.setTradeNo(mainScanResp.getPayOrderId()); + } } } } + } - return Result.success(CodeEnum.SUCCESS,tbQuickPay); + + tbQuickPayMapper.insert(tbQuickPay); + return Result.success(CodeEnum.SUCCESS, tbQuickPay); } + public Result queryQuickPayStatus(Integer id) { + TbQuickPay tbQuickPay = tbQuickPayMapper.selectByPrimaryKey(id); + MsgException.checkNull(tbQuickPay, "订单信息不存在"); + if (tbQuickPay.getPayType().equals("scanpay") && "1".equals(tbQuickPay.getStatus())) { - public Result queryQuickPay(String token,int pageNo,int pageSize){ - JSONObject info= TokenUtil.parseParamFromToken(token); - MsgException.checkNull(info,"获取信息失败"); + TbShopInfo tbShopInfo = tbShopInfoMapper.selectByPrimaryKey(tbQuickPay.getShopId()); + MsgException.checkNull(tbShopInfo, "店铺信息不存在"); - String shopId=info.getString("shopId"); - String staffId=info.getString("staffId"); + TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(tbShopInfo.getMerchantId())); + if (ObjectUtil.isEmpty(thirdApply) || ObjectUtil.isNull(thirdApply)) { + return Result.fail(CodeEnum.NOCUSTOMER); + } + if ("ysk".equals(thirdPayType)) { + TradeQueryReq tradeQueryReq = new TradeQueryReq(); + tradeQueryReq.setAppId(thirdApply.getAppId()); + tradeQueryReq.setTimestamp(System.currentTimeMillis()); + tradeQueryReq.setOrderNumber(tbQuickPay.getTradeNo()); + + Map map = BeanUtil.transBean2Map(tradeQueryReq); + tradeQueryReq.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true)); + ResponseEntity response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/tradeQuery"), tradeQueryReq, String.class); + if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) { + JSONObject object = JSONObject.parseObject(response.getBody()); + if (object.get("code").equals("0")) { + JSONObject data = object.getJSONObject("data"); + if ("1".equals(data.getString("status"))) { + + tbQuickPay.setStatus("0"); + tbQuickPay.setUpdateTime(new Date()); + tbQuickPayMapper.updateByPrimaryKeySelective(tbQuickPay); + } + } + } + } else { + PublicResp orderstatus = thirdPayService.queryOrder(url, thirdApply.getAppId(), null, tbQuickPay.getOrderNo(), thirdApply.getAppToken()); + if (ObjectUtil.isNotNull(orderstatus) && ObjectUtil.isNotEmpty(orderstatus)) { + if ("000000".equals(orderstatus.getCode())) { + if ("TRADE_SUCCESS".equals(orderstatus.getObjData().getState())) { + + tbQuickPay.setStatus("0"); + tbQuickPay.setUpdateTime(new Date()); + tbQuickPayMapper.updateByPrimaryKeySelective(tbQuickPay); + } + } + } + } + + } + return Result.success(CodeEnum.SUCCESS, tbQuickPay); + } + + public Result queryQuickPay(String token, int pageNo, int pageSize) { + JSONObject info = TokenUtil.parseParamFromToken(token); + MsgException.checkNull(info, "获取信息失败"); + + String shopId = info.getString("shopId"); + String staffId = info.getString("staffId"); PageHelper.startPage(pageNo, pageSize); - List list= tbQuickPayMapper.selectByShopIdAndStaffId(Integer.valueOf(shopId),Integer.valueOf(staffId)); - PageInfo pageInfo=new PageInfo(list); - return Result.success(CodeEnum.SUCCESS,pageInfo); + List list = tbQuickPayMapper.selectByShopIdAndStaffId(Integer.valueOf(shopId), Integer.valueOf(staffId)); + PageInfo pageInfo = new PageInfo(list); + return Result.success(CodeEnum.SUCCESS, pageInfo); } - public String generateReturnOrderNumber() { String date = DateUtils.getSdfTimes(); Random random = new Random(); int randomNum = random.nextInt(900) + 100; return "RO" + date + randomNum; } - - - public static void main(String[] args) { - - System.out.println(String.format("%.2f", new BigDecimal(1).setScale(2, BigDecimal.ROUND_DOWN))); - - } } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/DateUtils.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/DateUtils.java index b394b44..5b5f1de 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/DateUtils.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/DateUtils.java @@ -19,6 +19,8 @@ public class DateUtils { private final static SimpleDateFormat sdfTimes = new SimpleDateFormat("yyyyMMddHHmmss"); + private final static SimpleDateFormat sdfTimesSs = new SimpleDateFormat("yyyyMMddHHmmss"); + private final static SimpleDateFormat sdfday = new SimpleDateFormat("MM-dd HH:mm"); @@ -61,6 +63,10 @@ public class DateUtils { } + public static String getSsdfTimes() { + return sdfTimesSs.format(new Date()); + } + public static String getNextSdfTimes(Date date){ return sdfTimes.format(date); } diff --git a/src/main/resources/mapper/TbMerchantThirdApplyMapper.xml b/src/main/resources/mapper/TbMerchantThirdApplyMapper.xml index 7b0b2cc..aac8157 100644 --- a/src/main/resources/mapper/TbMerchantThirdApplyMapper.xml +++ b/src/main/resources/mapper/TbMerchantThirdApplyMapper.xml @@ -11,6 +11,8 @@ + +