From 47a06d4c51a5e0397afe0b2fb0fa965a1aed009f Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Fri, 17 Feb 2023 12:14:49 +0800 Subject: [PATCH] fix car pay --- .../park/impl/fute/FuteParkService.java | 59 +++++++++++++++---- .../service/park/impl/fute/FuteUtil.java | 23 ++++++++ 2 files changed, 71 insertions(+), 11 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/park/impl/fute/FuteParkService.java b/mallinkService/src/main/java/com/iformall/service/park/impl/fute/FuteParkService.java index 88e40070e..0b5d94eac 100644 --- a/mallinkService/src/main/java/com/iformall/service/park/impl/fute/FuteParkService.java +++ b/mallinkService/src/main/java/com/iformall/service/park/impl/fute/FuteParkService.java @@ -128,19 +128,56 @@ public class FuteParkService extends BaseParkService implements ParkAdapterServi if (null == valueMap) { return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前停车券没有关联停车场优惠券配置。"+coupon.getTitle()); } - //String orderNo = paramMap.get("parkOrderId"); - String couponNo = valueMap.get("couponNo"); - if (StringUtils.isBlank(couponNo)) { - return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前停车券没有关联停车场优惠券配置[couponNo]。"+coupon.getTitle()); + String reduceType = valueMap.get("reduceType"); + if (StringUtils.isBlank(reduceType)) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前停车券未设置停车场优惠券配置参数[减免类型]。"+coupon.getTitle()); } - String ret = fute.useCoupon(park, couponNo, carNumber); - //打折登陆验证 - logger.info("fute useCoupon result:"+ret); - JSONObject retObj = JSON.parseObject(ret); - if (retObj.getIntValue("state") == 1){ - return new ResultData(); + if ((!"1".equals(reduceType)) && (!"2".equals(reduceType))) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前停车券设置停车场优惠券配置参数[减免类型]值非法。"+coupon.getTitle()); + } + String reduceValueStr = valueMap.get("reduceValue"); + if (StringUtils.isBlank(reduceValueStr)) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前停车券未设置停车场优惠券配置参数[减免数值]。"+coupon.getTitle()); + } + Integer reduceValue = 0; + try { + reduceValue = Integer.parseInt(reduceValueStr); + }catch(Exception e) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前停车券设置停车场优惠券配置参数[减免数值]值非法。"+coupon.getTitle()); + } + boolean isTimeCash = false; + if ("1".equals(reduceType)) { + isTimeCash = true; + } + String createRet = fute.createCoupon(park, carNumber, isTimeCash, reduceValue); + logger.info("fute createCoupon result:"+createRet); + JSONObject createRetObj = JSON.parseObject(createRet); + if (createRetObj.getIntValue("state") == 1){ + String codeUrl = createRetObj.getString("code_url"); + if (StringUtils.isBlank(codeUrl)) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前用户使用福特优惠券失败。福特返回二维码URL为空"); + } + String couponNO = codeUrl.substring(codeUrl.lastIndexOf("/")+1); + if (couponNO.contains("?")) { + couponNO = couponNO.substring(0,couponNO.indexOf("?")); + } + if (StringUtils.isBlank(couponNO)) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前用户使用福特优惠券失败。福特返回二维码URL非法"); + } + + String ret = fute.useCoupon(park, couponNO, carNumber); + //打折登陆验证 + logger.info("fute useCoupon result:"+ret); + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getIntValue("state") == 1){ + return new ResultData(); + }else { + return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前用户使用福特优惠券失败。"+retObj.getString("errmsg")); + } + + }else { - return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前用户使用福特优惠券失败。"+retObj.getString("errmsg")); + return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前用户使用福特优惠券失败。"+createRetObj.getString("errmsg")); } } diff --git a/mallinkService/src/main/java/com/iformall/service/park/impl/fute/FuteUtil.java b/mallinkService/src/main/java/com/iformall/service/park/impl/fute/FuteUtil.java index 5ba9eb200..5b22e356d 100644 --- a/mallinkService/src/main/java/com/iformall/service/park/impl/fute/FuteUtil.java +++ b/mallinkService/src/main/java/com/iformall/service/park/impl/fute/FuteUtil.java @@ -52,6 +52,7 @@ import java.util.TimeZone; public class FuteUtil { public static final String QUERY_PRICE = "http://s1.appykt.com/zld/parkapi/query_price"; + public static final String COUPON_CREATE = "http://s1.appykt.com/zld/createTicketByApi"; public static final String COUPON_USE = "http://s1.appykt.com/zld/useTicket"; public static final String NOTIFY_PAID = "http://s1.appykt.com/zld/parkapi/pay_notify"; @@ -83,6 +84,28 @@ public class FuteUtil { return ProcBussiness(QUERY_PRICE, param,vp.getString("signkey")); } + /** + * 创建优惠券 + */ + public String createCoupon(WxPark wxPark,String carNumber,boolean isTimeCash,Integer cashValue) { + String vendroParams = wxPark.getVendorParams(); + JSONObject vp = JSON.parseObject(vendroParams); + Map param = new HashMap(); + param.put("loginuin", vp.getString("loginuin"));//商家账号 + param.put("md5pass", vp.getString("md5pass"));//商家登录密码进行MD5 加密 + param.put("codeType", 0);//0:动态码 1:固定码 + param.put("ticketCount", 1); + if (isTimeCash) { + param.put("type", 3); + }else { + param.put("type", 5); + } + param.put("reduce", cashValue); + param.put("parkid", wxPark.getParkingId()); + log.info("fute createCoupon :" + JSON.toJSONString(param)); + return ProcBussiness(COUPON_CREATE, param, vp.getString("signkey")); + } + /** * 使用优惠券 **/