| @@ -4,6 +4,7 @@ package com.iformall.controller; | |||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.domain.po.base.BaseCUserEntity; | import com.iformall.domain.po.base.BaseCUserEntity; | ||||
| import com.iformall.enums.EnumAppPlat; | import com.iformall.enums.EnumAppPlat; | ||||
| import com.iformall.enums.EnumPayVersion; | |||||
| import com.iformall.service.CUserTokenService; | import com.iformall.service.CUserTokenService; | ||||
| import com.iformall.utils.RedisCacheUtils; | import com.iformall.utils.RedisCacheUtils; | ||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
| @@ -13,6 +14,7 @@ import com.iformall.domain.po.base.TenantEntity; | |||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.service.WxAppinfoService; | import com.iformall.service.WxAppinfoService; | ||||
| import com.iformall.service.WxMerchantBUserService; | import com.iformall.service.WxMerchantBUserService; | ||||
| import com.iformall.service.WxPayAccountService; | |||||
| import com.iformall.service.wechat.FmOpenService; | import com.iformall.service.wechat.FmOpenService; | ||||
| import com.iformall.utils.Constant; | import com.iformall.utils.Constant; | ||||
| import com.iformall.utils.IPUtil; | import com.iformall.utils.IPUtil; | ||||
| @@ -40,6 +42,9 @@ public class BaseController { | |||||
| @Autowired | @Autowired | ||||
| private WxAppinfoService wxAppinfoService; | private WxAppinfoService wxAppinfoService; | ||||
| @Autowired | |||||
| private WxPayAccountService wxPayAccountService; | |||||
| @Autowired | @Autowired | ||||
| MaUtil maUtil; | MaUtil maUtil; | ||||
| @@ -105,6 +110,12 @@ public class BaseController { | |||||
| return id; | return id; | ||||
| } | } | ||||
| public WxAppinfo getCurrentApp() { | |||||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | |||||
| WxAppinfo appInfo = (WxAppinfo) request.getAttribute(Constant.APP_INFO); | |||||
| return appInfo; | |||||
| } | |||||
| public CUser getCUser() { | public CUser getCUser() { | ||||
| HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); | ||||
| BaseCUserEntity baseuser = (BaseCUserEntity) request.getAttribute(Constant.REQUEST_C_USER_KEY); | BaseCUserEntity baseuser = (BaseCUserEntity) request.getAttribute(Constant.REQUEST_C_USER_KEY); | ||||
| @@ -109,8 +109,8 @@ public class WxCashOutController extends BaseController { | |||||
| Map<String,Object> resultMap = new HashMap<String,Object>(); | Map<String,Object> resultMap = new HashMap<String,Object>(); | ||||
| resultMap.put("cashOutCount", merchant.getCashOutCount()); | resultMap.put("cashOutCount", merchant.getCashOutCount()); | ||||
| resultMap.put("cashOutNumber", merchant.getCashOutNumber()); | resultMap.put("cashOutNumber", merchant.getCashOutNumber()); | ||||
| WxPayAccount payAccount= wxPayAccountService.getByTenantId(mall.getTenantId()); | |||||
| WxAppinfo appInfo = getCurrentApp(); | |||||
| WxPayAccount payAccount= wxPayAccountService.getById(appInfo.getPayId()); | |||||
| if (payAccount.getShare().intValue() == EnumPayShare.YES.getCode().intValue()) { | if (payAccount.getShare().intValue() == EnumPayShare.YES.getCode().intValue()) { | ||||
| resultMap.put("cashOutSupport", 0); | resultMap.put("cashOutSupport", 0); | ||||
| }else { | }else { | ||||
| @@ -74,10 +74,10 @@ public class WxMicroPayController extends BaseController { | |||||
| //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); | //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); | ||||
| String authCode = paramMap.get("authCode"); | String authCode = paramMap.get("authCode"); | ||||
| String totalFeeStr = paramMap.get("totalFee"); | String totalFeeStr = paramMap.get("totalFee"); | ||||
| return saveMicopayOrder(authCode, totalFeeStr, EnumPayWay.PAY_WAY_WECHAT_MA, request); | |||||
| return saveMicopayOrder(authCode, totalFeeStr, EnumPayWay.PAY_WAY_WECHAT_MA,EnumPayVersion.WX_PAY_V2, request); | |||||
| } | } | ||||
| private ResultData saveMicopayOrder(String authCode,String totalFeeStr,EnumPayWay payWay,HttpServletRequest request) { | |||||
| private ResultData saveMicopayOrder(String authCode,String totalFeeStr,EnumPayWay payWay,EnumPayVersion payVersion,HttpServletRequest request) { | |||||
| if (StringUtils.isBlank(authCode)) { | if (StringUtils.isBlank(authCode)) { | ||||
| logger.error("authCode不能为空"); | logger.error("authCode不能为空"); | ||||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "authCode不能为空"); | return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "authCode不能为空"); | ||||
| @@ -97,7 +97,7 @@ public class WxMicroPayController extends BaseController { | |||||
| WxOrder order = null; | WxOrder order = null; | ||||
| try { | try { | ||||
| order = wxOrderService.saveMicroPayOrder(user, totalFeeStr,payWay); | |||||
| order = wxOrderService.saveMicroPayOrder(user, totalFeeStr,payWay,payVersion); | |||||
| } catch (MallinkException e) { | } catch (MallinkException e) { | ||||
| logger.error("saveMicopayOrder 1" + e.getMessage()); | logger.error("saveMicopayOrder 1" + e.getMessage()); | ||||
| return new ResultData(e.getErrorCode(), e.getMessage()); | return new ResultData(e.getErrorCode(), e.getMessage()); | ||||
| @@ -84,6 +84,7 @@ public class AuthorizationInterceptor extends HandlerInterceptorAdapter { | |||||
| request.setAttribute(Constant.LOGIN_USER_KEY, user.getId()); | request.setAttribute(Constant.LOGIN_USER_KEY, user.getId()); | ||||
| request.setAttribute(Constant.TENANT_ID, tenantId); | request.setAttribute(Constant.TENANT_ID, tenantId); | ||||
| request.setAttribute(Constant.REQUEST_C_USER_KEY, user); | request.setAttribute(Constant.REQUEST_C_USER_KEY, user); | ||||
| request.setAttribute(Constant.APP_INFO, user.getAppinfo()); | |||||
| if (StringUtils.isNotBlank(parenTenantId)) { | if (StringUtils.isNotBlank(parenTenantId)) { | ||||
| request.setAttribute(Constant.PARENT_TENANT_ID, parenTenantId); | request.setAttribute(Constant.PARENT_TENANT_ID, parenTenantId); | ||||
| } | } | ||||
| @@ -120,7 +120,7 @@ public class CashOutSchedule { | |||||
| if (null == appInfo) { | if (null == appInfo) { | ||||
| return; | return; | ||||
| } | } | ||||
| WxPayAccount payAccount = wxPayAccountService.getByTenantId(cashout.getTenantId()); | |||||
| WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); | |||||
| if (null == payAccount) { | if (null == payAccount) { | ||||
| return; | return; | ||||
| } | } | ||||
| @@ -61,7 +61,7 @@ public interface WxOrderService { | |||||
| * @param totalFeeStr | * @param totalFeeStr | ||||
| * @return 订单id | * @return 订单id | ||||
| */ | */ | ||||
| WxOrder saveMicroPayOrder(WxMerchantBUser user, String totalFeeStr,EnumPayWay payWay); | |||||
| WxOrder saveMicroPayOrder(WxMerchantBUser user, String totalFeeStr,EnumPayWay payWay,EnumPayVersion payVersion); | |||||
| /** | /** | ||||
| * 付款码支付v2 | * 付款码支付v2 | ||||
| @@ -50,7 +50,7 @@ public interface WxPayAccountService { | |||||
| void deleteById(Long id); | void deleteById(Long id); | ||||
| WxPayAccount getByTenantId(String te); | |||||
| //WxPayAccount getByTenantId(String te); | |||||
| WxPayService getWxPayService(String tenantId); | WxPayService getWxPayService(String tenantId); | ||||
| } | } | ||||
| @@ -239,7 +239,7 @@ public class WxCashOutServiceImpl implements WxCashOutService { | |||||
| if (null == appInfo) { | if (null == appInfo) { | ||||
| return; | return; | ||||
| } | } | ||||
| WxPayAccount payAccount = wxPayAccountService.getByTenantId(tenantEntity.getTenantId()); | |||||
| WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); | |||||
| if (null == payAccount) { | if (null == payAccount) { | ||||
| return; | return; | ||||
| } | } | ||||
| @@ -1086,7 +1086,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) | ||||
| public WxOrder saveMicroPayOrder(WxMerchantBUser user, String totalFeeStr,EnumPayWay payWay) { | |||||
| public WxOrder saveMicroPayOrder(WxMerchantBUser user, String totalFeeStr,EnumPayWay payWay,EnumPayVersion payVersion) { | |||||
| // 检查用户 | // 检查用户 | ||||
| if (user == null) { | if (user == null) { | ||||
| logger.error("用户不存在"); | logger.error("用户不存在"); | ||||
| @@ -1121,6 +1121,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| order.updateTenantInfo(wxMerchant); | order.updateTenantInfo(wxMerchant); | ||||
| order.setPayment(payment); | order.setPayment(payment); | ||||
| order.setPayVendor(payWay.getCode()); | order.setPayVendor(payWay.getCode()); | ||||
| order.setPayVersion(payVersion.getCode()); | |||||
| order.setOrderType(EnumComposeOrder.SINGLE.getCode()); | order.setOrderType(EnumComposeOrder.SINGLE.getCode()); | ||||
| order.setCreateDate(new Date()); | order.setCreateDate(new Date()); | ||||
| wxBatchOrderMapper.insert(order); | wxBatchOrderMapper.insert(order); | ||||
| @@ -1137,8 +1138,8 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| record.updateTenantInfo(user); | record.updateTenantInfo(user); | ||||
| record.setOrderNumber(orderNumber); | record.setOrderNumber(orderNumber); | ||||
| record.setType(EnumOrderType.MICROPAY.getCode()); | record.setType(EnumOrderType.MICROPAY.getCode()); | ||||
| record.setPayVendor(EnumPayWay.PAY_WAY_WECHAT_MA.getCode()); | |||||
| record.setPayVersion(EnumPayVersion.WX_PAY_V2.getCode()); | |||||
| record.setPayVendor(payWay.getCode()); | |||||
| record.setPayVersion(payVersion.getCode()); | |||||
| record.setProductId(user.getId()); | record.setProductId(user.getId()); | ||||
| record.setPaymentType(EnumPayType.PAY_PAYMENT.getCode()); | record.setPaymentType(EnumPayType.PAY_PAYMENT.getCode()); | ||||
| record.setPayment(payment); | record.setPayment(payment); | ||||
| @@ -1194,6 +1195,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| order.updateTenantInfo(wxMerchant); | order.updateTenantInfo(wxMerchant); | ||||
| order.setPayment(payment); | order.setPayment(payment); | ||||
| order.setPayVendor(EnumPayWay.PAY_WAY_WECHAT_MA.getCode()); | order.setPayVendor(EnumPayWay.PAY_WAY_WECHAT_MA.getCode()); | ||||
| order.setPayVersion(EnumPayVersion.WX_PAY_V2.getCode()); | |||||
| order.setOrderType(EnumComposeOrder.SINGLE.getCode()); | order.setOrderType(EnumComposeOrder.SINGLE.getCode()); | ||||
| order.setCreateDate(new Date()); | order.setCreateDate(new Date()); | ||||
| wxBatchOrderMapper.insert(order); | wxBatchOrderMapper.insert(order); | ||||
| @@ -1250,6 +1252,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| order.updateTenantInfo(merchant); | order.updateTenantInfo(merchant); | ||||
| order.setPayment(payment); | order.setPayment(payment); | ||||
| order.setPayVendor(EnumPayWay.PAY_WAY_PREPAIDCARD.getCode()); | order.setPayVendor(EnumPayWay.PAY_WAY_PREPAIDCARD.getCode()); | ||||
| order.setPayVersion(EnumPayVersion.NO_VERSION.getCode()); | |||||
| order.setOrderType(EnumComposeOrder.SINGLE.getCode()); | order.setOrderType(EnumComposeOrder.SINGLE.getCode()); | ||||
| order.setCreateDate(new Date()); | order.setCreateDate(new Date()); | ||||
| wxBatchOrderMapper.insert(order); | wxBatchOrderMapper.insert(order); | ||||
| @@ -79,17 +79,12 @@ public class WxPayAccountServiceImpl implements WxPayAccountService { | |||||
| wxPayAccountMapper.deleteById(id); | wxPayAccountMapper.deleteById(id); | ||||
| } | } | ||||
| @Override | |||||
| public WxPayAccount getByTenantId(String tenantId) { | |||||
| return wxPayAccountMapper.getByTenantId(tenantId); | |||||
| } | |||||
| @Override | @Override | ||||
| public WxPayService getWxPayService(String tenantId) { | public WxPayService getWxPayService(String tenantId) { | ||||
| TenantEntity tenantEntity = new TenantEntity(); | TenantEntity tenantEntity = new TenantEntity(); | ||||
| tenantEntity.setTenantId(tenantId); | tenantEntity.setTenantId(tenantId); | ||||
| WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity, EnumAppPlat.WX); | WxAppinfo cAppInfo = wxAppinfoService.getCAppInfo(tenantEntity, EnumAppPlat.WX); | ||||
| WxPayAccount payAccount = this.getByTenantId(tenantId); | |||||
| WxPayAccount payAccount = this.getById(cAppInfo.getPayId()); | |||||
| if(cAppInfo != null && payAccount != null){ | if(cAppInfo != null && payAccount != null){ | ||||
| return maUtil.getWxPayService(cAppInfo,payAccount); | return maUtil.getWxPayService(cAppInfo,payAccount); | ||||
| }else{ | }else{ | ||||
| @@ -751,7 +751,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| public ResultData payOrderClose(WxAppinfo appInfo, WxPayOrder record) { | public ResultData payOrderClose(WxAppinfo appInfo, WxPayOrder record) { | ||||
| WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); | WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); | ||||
| try { | try { | ||||
| PayAdapterResult result = payServiceFactory.getPayAdapterService(record.getPayVendor(),payAccount.getPayVersion()).payOrderClose(appInfo, record, payAccount); | |||||
| PayAdapterResult result = payServiceFactory.getPayAdapterService(record.getPayVendor(),record.getPayVersion()).payOrderClose(appInfo, record, payAccount); | |||||
| if (result.isSuccess()) { | if (result.isSuccess()) { | ||||
| record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_CANCEL.getCode()); | record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_CANCEL.getCode()); | ||||
| }else { | }else { | ||||
| @@ -788,7 +788,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| WxAppinfo appInfo = wxAppinfoService.getCAppInfo(record,EnumPayWay.getEnum(record.getPayVendor()).getPlat()); | WxAppinfo appInfo = wxAppinfoService.getCAppInfo(record,EnumPayWay.getEnum(record.getPayVendor()).getPlat()); | ||||
| WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); | WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); | ||||
| try { | try { | ||||
| PayAdapterResult result = payServiceFactory.getPayAdapterService(record.getPayVendor(),payAccount.getPayVersion()).payOrderReverse(appInfo, record, payAccount); | |||||
| PayAdapterResult result = payServiceFactory.getPayAdapterService(record.getPayVendor(),record.getPayVersion()).payOrderReverse(appInfo, record, payAccount); | |||||
| if (result.isSuccess()) { | if (result.isSuccess()) { | ||||
| record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_REVERSE.getCode()); | record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_REVERSE.getCode()); | ||||
| record.setUpdateTime(new Date()); | record.setUpdateTime(new Date()); | ||||