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

fix car pay

release_toaliyun_real
lin 3 лет назад
Родитель
Сommit
f04ffb8b08
9 измененных файлов: 49 добавлений и 20 удалений
  1. +0
    -4
      mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java
  2. +1
    -0
      mallinkAdmin/src/main/resources/db/migration/V20230200001__car.sql
  3. +8
    -2
      mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java
  4. +6
    -3
      mallinkService/src/main/java/com/iformall/domain/po/WxCarPayOrder.java
  5. +3
    -2
      mallinkService/src/main/java/com/iformall/enums/EnumCarPayAmountType.java
  6. +1
    -0
      mallinkService/src/main/java/com/iformall/service/WxProfitPaymentReceiverService.java
  7. +19
    -6
      mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java
  8. +6
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxProfitPaymentReceiverServiceImpl.java
  9. +5
    -3
      mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayServiceImpl.java

+ 0
- 4
mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMerchantController.java Просмотреть файл

@@ -285,10 +285,6 @@ public class WxMerchantController extends BaseController {
@ApiOperation("(微信)商户手填收款账号")
@PostMapping("setMerchantAccount")
public ResultData setMerchantAccount(@RequestBody WxMerchant wxMerchant) {
if (null == wxMerchant.getId() || StringUtils.isBlank(wxMerchant.getAccount())
|| null == wxMerchant.getIsIsv() || null == wxMerchant.getApiKey()) {
return new ResultData(ResultData.ERROR,"参数缺失");
}
wxMerchant.updateTenantInfo(getTenantInfo());
return wxMerchantService.setWxMerchantAccount(wxMerchant);
}


+ 1
- 0
mallinkAdmin/src/main/resources/db/migration/V20230200001__car.sql Просмотреть файл

@@ -11,6 +11,7 @@ CREATE TABLE `wx_car_pay_order` (
`pay_time` datetime NOT NULL COMMENT '支付时间',
`transaction_id` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '微信生成的订单号',
`park_order_no` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '车场订单号',
`merchant_account_type` int(1) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商户收款账户类型EnumCarPayAmountType',
`merchant_account` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商户收款账户',
`park_notify` int(1) NOT NULL DEFAULT '0' COMMENT '是否已通知车场EnumYesOrNo',
`notify_fail_reason` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '通知失败原因',


+ 8
- 2
mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java Просмотреть файл

@@ -478,6 +478,7 @@ public class WxCarController extends BaseController {
String receiverAccount = null;
boolean isIsv = false;
String apiKey = null;
EnumCarPayAmountType amountType = null;
WxAppinfo cAppInfo = wxAppinfoService.getCAppInfoFromRedis(park.getTenantId(), EnumPayWay.PAY_WAY_WECHAT.getPlat());
if(cAppInfo == null){
throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND.getCode(),"未查询到C端小程序");
@@ -492,6 +493,7 @@ public class WxCarController extends BaseController {
//查找小程序收款账户
receiverAccount = payAccount.getSubMchId();
isIsv = true;
amountType = EnumCarPayAmountType.PAY_ACCOUNT;
//查询商官商户
// WxMerchant adminMerchant = wxMerchantService.findAdmin(park);
// if (null == adminMerchant) {
@@ -506,15 +508,19 @@ public class WxCarController extends BaseController {
Integer isvModel = (Integer)receiver.getReceiverParamValue(Constant.paymentReceiverParamIsv);
if (EnumYesOrNo.YES.getCode() == isvModel) {
isIsv = true;
amountType = EnumCarPayAmountType.CAR_ISV_MERCHANT;
}else {
amountType = EnumCarPayAmountType.CAR_OWN_MERCHANT;
}
apiKey = (String)receiver.getReceiverParamValue(Constant.paymentReceicerParamApiKey);
}
int rlength = receiverAccount.length();
//最大128 cuserId,cuserPhone,carNumber,merchantId,merchantAccount,parkOrderNo
//最大128 cuserId,cuserPhone,carNumber,amountType,merchantAccount,parkOrderNo
StringBuffer attachSb = new StringBuffer()
.append(user.getUserId()).append(",")
.append(user.getPhone()).append(",")
.append(carNumber).append(",");
.append(carNumber).append(",")
.append(amountType.getCode());
if (rlength > 4) {
attachSb.append(receiverAccount.substring(rlength-4,rlength)).append(",");
}else {


+ 6
- 3
mallinkService/src/main/java/com/iformall/domain/po/WxCarPayOrder.java Просмотреть файл

@@ -60,13 +60,16 @@ public class WxCarPayOrder extends TenantEntity {
@Excel(name = "车场订单号", width = 20, orderNum = "9")
@io.swagger.annotations.ApiModelProperty(value="车场订单号",name="parkOrderNo")
private String parkOrderNo;
@Excel(name = "商户收款账户", width = 20, orderNum = "10")
@Excel(name = "商户收款账号类型", width = 20,replace = {"特约停车商户_1,自有停车商户_2,小程序收款账户_3"}, orderNum = "10")
@io.swagger.annotations.ApiModelProperty(value="商户收款账号类型EnumCarPayAmountType",name="merchantAccountType")
private Integer merchantAccountType;
@Excel(name = "商户收款账户(后4位)", width = 20, orderNum = "11")
@io.swagger.annotations.ApiModelProperty(value="商户收款账户",name="merchantAccount")
private String merchantAccount;
@Excel(name = "是否已通知车场", width = 20, replace = {"已通知成功_1"}, orderNum = "13")
@Excel(name = "是否已通知车场", width = 20, replace = {"已通知成功_1"}, orderNum = "12")
@io.swagger.annotations.ApiModelProperty(value="是否已通知车场EnumYesOrNo",name="parkNotify")
private Integer parkNotify;
@Excel(name = "通知失败原因", width = 20, orderNum = "14")
@Excel(name = "通知失败原因", width = 20, orderNum = "13")
@io.swagger.annotations.ApiModelProperty(value="通知失败原因",name="notifyFailReason")
private String notifyFailReason;
@io.swagger.annotations.ApiModelProperty(value="通知重试次数",name="notifyCount")


+ 3
- 2
mallinkService/src/main/java/com/iformall/enums/EnumCarPayAmountType.java Просмотреть файл

@@ -2,8 +2,9 @@ package com.iformall.enums;

public enum EnumCarPayAmountType {

CAR_MERCHANT(1, "停车商户"),
ADMIN_MERCHNAT(2, "商管商户"),
CAR_ISV_MERCHANT(1, "特约停车商户"),
CAR_OWN_MERCHANT(2, "自有停车商户"),
PAY_ACCOUNT(3,"小程序收款账户")
;

public static EnumCarPayAmountType getEnum(Integer code) {


+ 1
- 0
mallinkService/src/main/java/com/iformall/service/WxProfitPaymentReceiverService.java Просмотреть файл

@@ -53,6 +53,7 @@ public interface WxProfitPaymentReceiverService {
*/
WxProfitPaymentReceiver findReceiver(TenantEntity tenantEntity, Long merchantId, EnumAppPlat plat);

ResultData deleteReceiver(TenantEntity tenantEntity,Long id);

ResultData updateReceiver(WxProfitPaymentReceiver receiver);



+ 19
- 6
mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java Просмотреть файл

@@ -938,12 +938,25 @@ public class WxMerchantServiceImpl implements WxMerchantService {
try {
WxProfitPaymentReceiver receiver = wxProfitPaymentReceiverService.findReceiver(wxMerchant, wxMerchant.getId(),EnumAppPlat.WX);
if (null == receiver ) {
receiver = new WxProfitPaymentReceiver();
receiver.setMerchantId(wxMerchant.getId());
receiver.setReceiverType(EnumProfitPaymentReceiverType.wx_special_merchant_number.getCode());
receiver.setReceiverComments("手动设置收款账号");
receiver.setStatus(EnumProfitSharingReceiverStatus.PROFIT_SHARING_RECEIVER_STATUS_VALID.getCode());
receiver.setPlat(EnumAppPlat.WX.getCode());
//置空
if (!StringUtils.isBlank(wxMerchant.getAccount())){
if (null == wxMerchant.getIsIsv() || null == wxMerchant.getApiKey()) {
return new ResultData(ResultData.ERROR,"参数缺失");
}
receiver = new WxProfitPaymentReceiver();
receiver.setMerchantId(wxMerchant.getId());
receiver.setReceiverType(EnumProfitPaymentReceiverType.wx_special_merchant_number.getCode());
receiver.setReceiverComments("手动设置收款账号");
receiver.setStatus(EnumProfitSharingReceiverStatus.PROFIT_SHARING_RECEIVER_STATUS_VALID.getCode());
receiver.setPlat(EnumAppPlat.WX.getCode());
}else {
return new ResultData();
}
}else {
//置空,删除此收款账号
if (StringUtils.isBlank(wxMerchant.getAccount())){
return wxProfitPaymentReceiverService.deleteReceiver(receiver, receiver.getId());
}
}
StringBuffer psb = new StringBuffer("{\"").append(Constant.paymentReceiverParamIsv).append("\":").append(wxMerchant.getIsIsv()).append("");
if (EnumYesOrNo.YES.getCode().intValue()== wxMerchant.getIsIsv().intValue()) {


+ 6
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxProfitPaymentReceiverServiceImpl.java Просмотреть файл

@@ -353,4 +353,10 @@ public class WxProfitPaymentReceiverServiceImpl implements WxProfitPaymentReceiv
RedisCacheUtils.removeCache(paymentReceicerRedisTemplate, key);
}
}

@Override
public ResultData deleteReceiver(TenantEntity tenantEntity, Long id) {
wxProfitPaymentReceiverMapper.deleteById(id);
return new ResultData();
}
}

+ 5
- 3
mallinkService/src/main/java/com/iformall/service/park/pay/WxParkPayServiceImpl.java Просмотреть файл

@@ -166,16 +166,18 @@ public class WxParkPayServiceImpl implements WxParkPayService {
Long cUserId = null;
String userPhone = null;
String carNumber = null;
Integer accountType = null;
String merchantAccount = null;
String parkOrderNo = null;
if (!StringUtils.isBlank(attach)) {
String[] attrs = attach.split(",");
if (attrs.length == 5) {
if (attrs.length == 6) {
cUserId = Long.parseLong(attrs[0]);
userPhone = attrs[1];
carNumber = attrs[2];
merchantAccount = attrs[3];
parkOrderNo = attrs[4];
accountType = Integer.parseInt(attrs[3]);
merchantAccount = attrs[4];
parkOrderNo = attrs[5];
}
}
handlePaidSuccess(wxPark,cUserId,carVendor,carNumber,parkOrderNo,Integer.parseInt(cashFeeStr),


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