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

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.pay.WxParkPayService;
import com.iformall.service.park.utils.ParkCacheUtils; import com.iformall.service.park.utils.ParkCacheUtils;
import com.iformall.service.pay.service.pay.entity.PayAdapterResult; 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 com.iformall.utils.Constant;


import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -484,17 +486,20 @@ public class WxCarController extends BaseController {
return new ResultData(Result.ERROR,"商管商户未设置收款账号."); return new ResultData(Result.ERROR,"商管商户未设置收款账号.");
} }
} }
String receiverAccount = receiver.getReceiverAccount();
int rlength = receiverAccount.length();
//最大128
StringBuffer attachSb = new StringBuffer("{") 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(",\"uh\":\"").append(user.getPhone()).append("\"")
.append(",\"car:\":\"").append(carNumber).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("}"); .append("}");
//创建微信支付订单 //创建微信支付订单
boolean isIsv = false; boolean isIsv = false;
@@ -505,7 +510,8 @@ public class WxCarController extends BaseController {
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
String uniquePayOrderNo = carVendor.getMessage()+"_"+idWorker.nextId(); String uniquePayOrderNo = carVendor.getMessage()+"_"+idWorker.nextId();
String apiKey = (String)receiver.getReceiverParamValue(Constant.paymentReceicerParamApiKey); 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()); "127.0.0.1", park.getPaidCallBack(), apiKey, new Date());
return new ResultData(wxResult); return new ResultData(wxResult);
} catch (Exception e) { } 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 { public void send(BaseMsg baseMsg) throws Exception {
FmInsideNotifyCarPaidSuccessMsg msg = (FmInsideNotifyCarPaidSuccessMsg)baseMsg; FmInsideNotifyCarPaidSuccessMsg msg = (FmInsideNotifyCarPaidSuccessMsg)baseMsg;
Map<String, String> paramMap = JSON.parseObject(msg.getJsonMsg(), Map.class); 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, 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; 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; Integer fee,Date paidTime,String transcationId,String merchantAccount,Long merchantId,String merchantName,String userPhone) throws Exception;


public WxCarPayOrder detailWxCarPayOrder(Long id,String tenantId); 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.PayServiceFactory;
import com.iformall.service.pay.service.pay.entity.PayAdapterResult; import com.iformall.service.pay.service.pay.entity.PayAdapterResult;
import com.iformall.service.pay.service.pay.wx.v2.miniApp.appPay.WxMiniAppPayAdapterService; 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.CipherUtil;
import com.iformall.utils.DateUtils; import com.iformall.utils.DateUtils;
import com.iformall.utils.RedisLock; import com.iformall.utils.RedisLock;
@@ -147,7 +148,7 @@ public class WxParkPayServiceImpl implements WxParkPayService {
} }
@Override @Override
public String handlePaidCallBack(Map<String, String> paramMap) {
public String handlePaidCallBack(String tenantId,Map<String, String> paramMap) {
//支付返回消息 //支付返回消息
String returnCode = paramMap.get("return_code"); String returnCode = paramMap.get("return_code");
if ("SUCCESS".equals(returnCode)) { if ("SUCCESS".equals(returnCode)) {
@@ -161,28 +162,20 @@ public class WxParkPayServiceImpl implements WxParkPayService {
String payOrderNo = paramMap.get("out_trade_no"); String payOrderNo = paramMap.get("out_trade_no");
String time_end = paramMap.get("time_end"); String time_end = paramMap.get("time_end");
String transcationId = paramMap.get("transaction_id"); String transcationId = paramMap.get("transaction_id");
String attach = paramMap.get("attach"); String attach = paramMap.get("attach");
JSONObject attachObj = JSON.parseObject(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"); Long cUserId = attachObj.getLong("u");
String carNumber = attachObj.getString("car"); String carNumber = attachObj.getString("car");
String merchantAccount = attachObj.getString("ma"); String merchantAccount = attachObj.getString("ma");
Long merchantId = attachObj.getLong("mid"); Long merchantId = attachObj.getLong("mid");
String merchantName = attachObj.getString("mn");
String userPhone = attachObj.getString("uh"); 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, DateUtils.string2Date(time_end, DateUtils.DATE_PATTERN_ALL_NOSPACE).getTime(),transcationId,
merchantAccount,merchantId,merchantName,userPhone);
merchantAccount,merchantId,"停车商户",userPhone);
} catch (Exception e) { } catch (Exception e) {
logger.error("handlePaidCallBackError.",e); logger.error("handlePaidCallBackError.",e);
return notifyErrorResult(e.getMessage()); return notifyErrorResult(e.getMessage());
@@ -200,11 +193,11 @@ public class WxParkPayServiceImpl implements WxParkPayService {
} }


@Override @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, String payOrderNo,Integer fee,Date paidTime,String transcationId,String merchantAccount,
Long merchantId,String merchantName,String userPhone) throws Exception{ 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)); String parkOrderNo = ParkCreatePayOrder.getRealParkOrderNumber(payOrderNo,EnumCarVendor.getEnum(carVendor));
if (null == payOrder) { if (null == payOrder) {
//此处需要加锁,防止并发设置 //此处需要加锁,防止并发设置
@@ -218,7 +211,7 @@ public class WxParkPayServiceImpl implements WxParkPayService {
payOrder = new WxCarPayOrder(); payOrder = new WxCarPayOrder();
Long id = idworker.nextId(); Long id = idworker.nextId();
payOrder.setId(id); payOrder.setId(id);
payOrder.updateTenantInfo(tenantEntity);
payOrder.updateTenantInfo(wxPark);
payOrder.setCreateTime(new Date()); payOrder.setCreateTime(new Date());
payOrder.setUpdateTime(new Date()); payOrder.setUpdateTime(new Date());
payOrder.setcUserId(cUserId); payOrder.setcUserId(cUserId);
@@ -235,7 +228,7 @@ public class WxParkPayServiceImpl implements WxParkPayService {
wxCarPayOrderMapper.insert(payOrder); wxCarPayOrderMapper.insert(payOrder);
//通知车场支付成功 //通知车场支付成功
try { 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.setParkNotify(EnumYesOrNo.YES.getCode());
payOrder.setUpdateTime(new Date()); payOrder.setUpdateTime(new Date());
wxCarPayOrderMapper.updateById(payOrder); wxCarPayOrderMapper.updateById(payOrder);


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