Просмотр исходного кода

fix car pay

release_toaliyun_real
lin 3 лет назад
Родитель
Сommit
32a57e140d
4 измененных файлов: 30 добавлений и 31 удалений
  1. +15
    -9
      mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideNotifyCarPaidSuccessMsgServiceImpl.java
  3. +2
    -2
      mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayService.java
  4. +12
    -19
      mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayServiceImpl.java

+ 15
- 9
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) {


+ 1
- 1
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<String, String> paramMap = JSON.parseObject(msg.getJsonMsg(), Map.class);
wxParkPayService.handlePaidCallBack(paramMap);
wxParkPayService.handlePaidCallBack(msg.getTenantId(),paramMap);
}
}

+ 2
- 2
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<String, String> paramMap);
public String handlePaidCallBack(String tenantId,Map<String, String> 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);


+ 12
- 19
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<String, String> paramMap) {
public String handlePaidCallBack(String tenantId,Map<String, String> 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);


Загрузка…
Отмена
Сохранить