diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index 3711b60fd..cca03860c 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -21,6 +21,8 @@ import com.iformall.service.park.impl.util.ParkHelper; import com.iformall.service.park.pay.WxParkPayService; import com.iformall.service.park.utils.ParkCacheUtils; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; +import com.iformall.utils.AesUtil; +import com.iformall.utils.Base64Util; import com.iformall.utils.Constant; import io.swagger.annotations.Api; @@ -484,17 +486,20 @@ public class WxCarController extends BaseController { return new ResultData(Result.ERROR,"商管商户未设置收款账号."); } } - + String receiverAccount = receiver.getReceiverAccount(); + int rlength = receiverAccount.length(); + //最大128 StringBuffer attachSb = new StringBuffer("{") - .append("\"t\":\"").append(park.getTenantId()).append("\",\"pt\":\"").append(park.getParentTenantId()).append("\"") - .append(",\"v\":").append(park.getVendorType()) - .append(",\"u\":").append(user.getUserId()) + .append("\"u\":").append(user.getUserId()) .append(",\"uh\":\"").append(user.getPhone()).append("\"") .append(",\"car:\":\"").append(carNumber).append("\"") - .append(",\"fee\":").append(payOrder.getFee()) - .append(",\"ma\":\"").append(receiver.getReceiverAccount()).append("\"") - .append(",\"mid\":").append(parkMerchant.getId()) - .append(",\"mn\":\"").append(parkMerchant.getName()).append("\"") + .append(",\"fee\":").append(payOrder.getFee()); + if (rlength > 4) { + attachSb.append(",\"ma\":\"").append(receiverAccount.substring(rlength-4,rlength)).append("\""); + }else { + attachSb.append(",\"ma\":\"").append(receiverAccount).append("\""); + } + attachSb.append(",\"mid\":").append(parkMerchant.getId()) .append("}"); //创建微信支付订单 boolean isIsv = false; @@ -505,7 +510,8 @@ public class WxCarController extends BaseController { final IdWorker idWorker = IdWorker.get(); String uniquePayOrderNo = carVendor.getMessage()+"_"+idWorker.nextId(); String apiKey = (String)receiver.getReceiverParamValue(Constant.paymentReceicerParamApiKey); - PayAdapterResult wxResult = wxParkPayService.createWxPayOrder(park,isIsv,false,user.getOpenId(), user.getAppId(), receiver.getReceiverAccount(), "停车费支付,车场订单号"+payOrder.getParkOrderNumber(), attachSb.toString(), uniquePayOrderNo, payOrder.getFee(), + String attach = attachSb.toString(); + PayAdapterResult wxResult = wxParkPayService.createWxPayOrder(park,isIsv,false,user.getOpenId(), user.getAppId(), receiver.getReceiverAccount(), "停车费支付,车场订单号"+payOrder.getParkOrderNumber(), attach, uniquePayOrderNo, payOrder.getFee(), "127.0.0.1", park.getPaidCallBack(), apiKey, new Date()); return new ResultData(wxResult); } catch (Exception e) { diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideNotifyCarPaidSuccessMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideNotifyCarPaidSuccessMsgServiceImpl.java index 9f8dd0b03..e8b7e4a46 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideNotifyCarPaidSuccessMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideNotifyCarPaidSuccessMsgServiceImpl.java @@ -33,6 +33,6 @@ public class FmInsideNotifyCarPaidSuccessMsgServiceImpl implements MsgSendServic public void send(BaseMsg baseMsg) throws Exception { FmInsideNotifyCarPaidSuccessMsg msg = (FmInsideNotifyCarPaidSuccessMsg)baseMsg; Map paramMap = JSON.parseObject(msg.getJsonMsg(), Map.class); - wxParkPayService.handlePaidCallBack(paramMap); + wxParkPayService.handlePaidCallBack(msg.getTenantId(),paramMap); } } diff --git a/mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayService.java b/mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayService.java index f9fba60a5..f2e9ab892 100644 --- a/mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayService.java +++ b/mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayService.java @@ -24,9 +24,9 @@ public interface WxParkPayService { public PayAdapterResult createWxPayOrder(TenantEntity tenantEntity,boolean isIsvModel,boolean share,String openId,String appId,String mchId,String productName,String attach,String payOrderNo, Integer fee,String ip,String notifyUrl,String apiKey,Date currentDate) throws Exception; - public String handlePaidCallBack(Map paramMap); + public String handlePaidCallBack(String tenantId,Map paramMap); - public void handlePaidSuccess(TenantEntity tenantEntity,WxPark wxPark,Long cUserId,Integer carVendor,String carNumber,String payOrderNo, + public void handlePaidSuccess(WxPark wxPark,Long cUserId,Integer carVendor,String carNumber,String payOrderNo, Integer fee,Date paidTime,String transcationId,String merchantAccount,Long merchantId,String merchantName,String userPhone) throws Exception; public WxCarPayOrder detailWxCarPayOrder(Long id,String tenantId); diff --git a/mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayServiceImpl.java index 89eadfaf4..cb0cb96c2 100644 --- a/mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayServiceImpl.java @@ -36,6 +36,7 @@ import com.iformall.service.park.entity.ParkNotifyPaid; import com.iformall.service.pay.PayServiceFactory; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; import com.iformall.service.pay.service.pay.wx.v2.miniApp.appPay.WxMiniAppPayAdapterService; +import com.iformall.utils.Base64Util; import com.iformall.utils.CipherUtil; import com.iformall.utils.DateUtils; import com.iformall.utils.RedisLock; @@ -147,7 +148,7 @@ public class WxParkPayServiceImpl implements WxParkPayService { } @Override - public String handlePaidCallBack(Map paramMap) { + public String handlePaidCallBack(String tenantId,Map paramMap) { //支付返回消息 String returnCode = paramMap.get("return_code"); if ("SUCCESS".equals(returnCode)) { @@ -161,28 +162,20 @@ public class WxParkPayServiceImpl implements WxParkPayService { String payOrderNo = paramMap.get("out_trade_no"); String time_end = paramMap.get("time_end"); String transcationId = paramMap.get("transaction_id"); - String attach = paramMap.get("attach"); JSONObject attachObj = JSON.parseObject(attach); - String tenantId = attachObj.getString("t"); - String parentTenantId = attachObj.getString("pt"); - TenantEntity te = new TenantEntity(); - te.setTenantId(tenantId); - te.setParentTenantId(parentTenantId); - - WxPark park = getCurrentPark(te); - - Integer carVendor = attachObj.getInteger("v"); + TenantEntity teq = new TenantEntity(); + teq.setTenantId(tenantId); + WxPark wxPark = getCurrentPark(teq); + Integer carVendor = wxPark.getVendorType(); Long cUserId = attachObj.getLong("u"); String carNumber = attachObj.getString("car"); String merchantAccount = attachObj.getString("ma"); Long merchantId = attachObj.getLong("mid"); - String merchantName = attachObj.getString("mn"); String userPhone = attachObj.getString("uh"); - - handlePaidSuccess(te,park,cUserId,carVendor,carNumber,payOrderNo,Integer.parseInt(cashFeeStr), + handlePaidSuccess(wxPark,cUserId,carVendor,carNumber,payOrderNo,Integer.parseInt(cashFeeStr), DateUtils.string2Date(time_end, DateUtils.DATE_PATTERN_ALL_NOSPACE).getTime(),transcationId, - merchantAccount,merchantId,merchantName,userPhone); + merchantAccount,merchantId,"停车商户",userPhone); } catch (Exception e) { logger.error("handlePaidCallBackError.",e); return notifyErrorResult(e.getMessage()); @@ -200,11 +193,11 @@ public class WxParkPayServiceImpl implements WxParkPayService { } @Override - public void handlePaidSuccess(TenantEntity tenantEntity,WxPark wxPark,Long cUserId,Integer carVendor,String carNumber, + public void handlePaidSuccess(WxPark wxPark,Long cUserId,Integer carVendor,String carNumber, String payOrderNo,Integer fee,Date paidTime,String transcationId,String merchantAccount, Long merchantId,String merchantName,String userPhone) throws Exception{ //查询该笔订单是否已经存在 - WxCarPayOrder payOrder = wxCarPayOrderMapper.findOneByParkOderNo(payOrderNo, tenantEntity.getTenantId()); + WxCarPayOrder payOrder = wxCarPayOrderMapper.findOneByParkOderNo(payOrderNo, wxPark.getTenantId()); String parkOrderNo = ParkCreatePayOrder.getRealParkOrderNumber(payOrderNo,EnumCarVendor.getEnum(carVendor)); if (null == payOrder) { //此处需要加锁,防止并发设置 @@ -218,7 +211,7 @@ public class WxParkPayServiceImpl implements WxParkPayService { payOrder = new WxCarPayOrder(); Long id = idworker.nextId(); payOrder.setId(id); - payOrder.updateTenantInfo(tenantEntity); + payOrder.updateTenantInfo(wxPark); payOrder.setCreateTime(new Date()); payOrder.setUpdateTime(new Date()); payOrder.setcUserId(cUserId); @@ -235,7 +228,7 @@ public class WxParkPayServiceImpl implements WxParkPayService { wxCarPayOrderMapper.insert(payOrder); //通知车场支付成功 try { - parkFactory.getParkService(carVendor).notifyPaid(wxPark,new ParkNotifyPaid(tenantEntity.getTenantId(),payOrderNo,parkOrderNo,fee,paidTime)); + parkFactory.getParkService(carVendor).notifyPaid(wxPark,new ParkNotifyPaid(wxPark.getTenantId(),payOrderNo,parkOrderNo,fee,paidTime)); payOrder.setParkNotify(EnumYesOrNo.YES.getCode()); payOrder.setUpdateTime(new Date()); wxCarPayOrderMapper.updateById(payOrder);