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

// 分账

release_toaliyun_real
xhxu 3 лет назад
Родитель
Сommit
7da8cef3e7
12 измененных файлов: 91 добавлений и 357 удалений
  1. +42
    -42
      mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxProfitSharingOrderService.java
  3. +1
    -15
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java
  4. +22
    -23
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java
  5. +13
    -11
      mallinkService/src/main/java/com/iformall/service/impl/WxProfitSharingOrderServiceImpl.java
  6. +5
    -4
      mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java
  7. +5
    -4
      mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java
  8. +0
    -13
      mallinkService/src/main/java/com/iformall/service/pay/service/share/PayShareAdapterService.java
  9. +0
    -109
      mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java
  10. +0
    -18
      mallinkService/src/main/java/com/iformall/service/pay/service/share/wx/sft/WxPayShareSFTService.java
  11. +0
    -52
      mallinkService/src/main/java/com/iformall/service/pay/service/share/wx/v2/WxPayShareService.java
  12. +2
    -65
      mallinkService/src/main/java/com/iformall/service/pay/service/share/wx/v3/WxPayShareV3Service.java

+ 42
- 42
mallinkSchedule/src/main/java/com/iformall/schedule/SharingOrderRedoSchedule.java Просмотреть файл

@@ -62,16 +62,16 @@ public class SharingOrderRedoSchedule {
if (null != list) {
list.stream().forEach(sharingOrder->{
try {
WxPayOrder wxPayOrder = new WxPayOrder();
wxPayOrder.updateTenantInfo(sharingOrder);
wxPayOrder.setId(sharingOrder.getOrderId());
wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder));
if (null == wxPayOrder) {
logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
+ " ID:" +sharingOrder.getId()
+ " RES: wxPayOrder is null." );
}
ResultData result = wxProfitSharingOrderService.redoSharingOrder(sharingOrder,wxPayOrder);
// WxPayOrder wxPayOrder = new WxPayOrder();
// wxPayOrder.updateTenantInfo(sharingOrder);
// wxPayOrder.setId(sharingOrder.getOrderId());
// wxPayOrder = wxPayOrderMapper.selectOne(new QueryWrapper(wxPayOrder));
// if (null == wxPayOrder) {
// logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
// + " ID:" +sharingOrder.getId()
// + " RES: wxPayOrder is null." );
// }
ResultData result = wxProfitSharingOrderService.redoSharingOrder(sharingOrder);
if (result.code != ResultData.SUCCESS) {
logger.error("分账重试失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
+ " ID:" +sharingOrder.getId()
@@ -132,36 +132,36 @@ public class SharingOrderRedoSchedule {

}

@Async
// @Scheduled(cron = "0 0 2 * * ?") // 每天凌晨02:00分账重试
@Scheduled(cron = "0 10 */1 * * ?") // 测试
public void sharingOrderHanderSchedule() {
List<WxMall> malls = getMalls();
for (WxMall mall: malls) {
WxProfitSharingOrder wxProfitSharingOrder = new WxProfitSharingOrder();
wxProfitSharingOrder.setTenantId(mall.getTenantId());
wxProfitSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_UNKNOWN.getCode());
List<WxProfitSharingOrder> list = wxProfitSharingOrderMapper.findList(wxProfitSharingOrder);
if (null != list) {
list.stream().forEach(sharingOrder->{
try {
ResultData result = wxProfitSharingOrderService.handerSharingOrder(sharingOrder);
if (result.code != ResultData.SUCCESS) {
logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
+ " ID:" +sharingOrder.getId()
+ " RES:" + result.message);
}
} catch (Exception e){
logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
+ " ID:" +sharingOrder.getId()
+ " MSG:" + e.getMessage());
}
});
}
}
}
// @Async
//// @Scheduled(cron = "0 0 2 * * ?") // 每天凌晨02:00分账重试
// @Scheduled(cron = "0 10 */1 * * ?") // 测试
// public void sharingOrderHanderSchedule() {
// List<WxMall> malls = getMalls();
// for (WxMall mall: malls) {
// WxProfitSharingOrder wxProfitSharingOrder = new WxProfitSharingOrder();
// wxProfitSharingOrder.setTenantId(mall.getTenantId());
// wxProfitSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_UNKNOWN.getCode());
// List<WxProfitSharingOrder> list = wxProfitSharingOrderMapper.findList(wxProfitSharingOrder);
// if (null != list) {
// list.stream().forEach(sharingOrder->{
// try {
// ResultData result = wxProfitSharingOrderService.handerSharingOrder(sharingOrder);
// if (result.code != ResultData.SUCCESS) {
// logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
// + " ID:" +sharingOrder.getId()
// + " RES:" + result.message);
// }
//
// } catch (Exception e){
// logger.error("处理分账数据失败:" + EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getMessage()
// + " ID:" +sharingOrder.getId()
// + " MSG:" + e.getMessage());
// }
// });
// }
//
//
// }
//
// }
}

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

@@ -54,5 +54,5 @@ public interface WxProfitSharingOrderService {
// void updatetttttttttttttt(String tenantId);

ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder);
// ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder);
}

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

@@ -1718,21 +1718,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
} catch (Exception e) {
logger.error("核销记账失败"+e.getMessage(),e);
}
}else{
WxProfitSharingReceiver psReceiver = payServiceFactory.getPayShareAdapterService(wxPayOrder.getPayVendor(),couponOrder.getPayVersion())
.getReceiver(wxPayOrder,merchantId,wxPayOrder.getTtPayWay(),wxPayOrder.getMchType());

if (psReceiver == null) {
try {
// 查询不到分账帐号,往账户里面记帐
if (couponOrder.getCouponPrice() > 0) {
recordAfterVerified(couponOrder, merchantId);
}
} catch (Exception e) {
logger.error("核销记账失败"+e.getMessage(),e);
}
}
}
}

WxOrder order = wxOrderService.getById(couponOrder.getOrderId(), wxPayOrder.getTenantId());
if (null == order) {


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

@@ -1166,30 +1166,29 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
} catch (Exception e) {
logger.error("收银台结算记录失败,{}", e.getMessage());
}
} else {
// 延迟10秒后分账
new Thread(() -> {
TenantEntity tenantEntity = record;
Long orderId = record.getOrderId();
Long payOrderId = record.getId();
logger.info("收银台订单分账休眠10s: composeOrderId: {}, payOrderId: {}, {}", orderId, payOrderId, tenantEntity);
try {
Thread.currentThread().sleep(10000);
} catch (Exception e) {
logger.error("sleep error: " + e.getMessage());
}

// 支付分账
logger.info("收银台订单分账开始: composeOrderId: {}, payOrderId: {}", orderId, payOrderId);
try {
wxOrderService.shareForMicroPay(tenantEntity, orderId, payOrderId);
} catch (MallinkException e) {
logger.error("收银台订单分账失败: orderId: {}, payOrderId: {}", orderId, payOrderId);
logger.error("收银台订单分账失败: " + e.getMessage());
}
logger.info("收银台订单分账结束: orderId: {}, payOrderId: {}", orderId, payOrderId);
}).start();
}
// 延迟10秒后分账
new Thread(() -> {
TenantEntity tenantEntity = record;
Long orderId = record.getOrderId();
Long payOrderId = record.getId();
logger.info("收银台订单分账休眠10s: composeOrderId: {}, payOrderId: {}, {}", orderId, payOrderId, tenantEntity);
try {
Thread.currentThread().sleep(10000);
} catch (Exception e) {
logger.error("sleep error: " + e.getMessage());
}

// 支付分账
logger.info("收银台订单分账开始: composeOrderId: {}, payOrderId: {}", orderId, payOrderId);
try {
wxOrderService.shareForMicroPay(tenantEntity, orderId, payOrderId);
} catch (MallinkException e) {
logger.error("收银台订单分账失败: orderId: {}, payOrderId: {}", orderId, payOrderId);
logger.error("收银台订单分账失败: " + e.getMessage());
}
logger.info("收银台订单分账结束: orderId: {}, payOrderId: {}", orderId, payOrderId);
}).start();
}

@Override


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

@@ -169,6 +169,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
int shareAmount = wxComposeChildOrderShare.getShareAmount() - cpsCommission;//分给商户的钱

JSONArray receivers = new JSONArray();//分账参数json
//todo
if(systemAmount > 0){
//todo 查询系统抽点到账帐号 jsonArray.add()
}
@@ -258,11 +259,12 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
return new ResultData(shareResult.getData());
}


@Override
// @Transactional(isolation=Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
public ResultData createSharingOrder(WxSharingOrderDto sharingOrderDto,WxPayOrder payOrder) {

PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion());
// PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion());
//创建分账订单
WxComposeChildOrderShare childOrderShare = null;
if(sharingOrderDto.getSingleOrderId() != null){
@@ -615,15 +617,15 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ
// });
// }

@Override
public ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder) {
WxPayOrder payOrder = wxPayOrderMapper.selectById(sharingOrder.getOrderId(), sharingOrder.getTenantId());
if(payOrder != null && EnumPayStatus.PAY_STATUS_SUCCESS.getCode().equals(payOrder.getPayOrderStatus())){
PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion());
return payShareAdapterService.handerSharingOrder(payOrder,sharingOrder);
}else{
return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND);
}
}
// @Override
// public ResultData handerSharingOrder(WxProfitSharingOrder sharingOrder) {
// WxPayOrder payOrder = wxPayOrderMapper.selectById(sharingOrder.getOrderId(), sharingOrder.getTenantId());
// if(payOrder != null && EnumPayStatus.PAY_STATUS_SUCCESS.getCode().equals(payOrder.getPayOrderStatus())){
// PayShareAdapterService payShareAdapterService = payServiceFactory.getPayShareAdapterService(payOrder.getPayVendor(),payOrder.getPayVersion());
// return payShareAdapterService.handerSharingOrder(payOrder,sharingOrder);
// }else{
// return new ResultData(ErrorCode.PAY_ORDER_NOT_FOUND);
// }
// }

}

+ 5
- 4
mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/appPay/WxMiniAppPayAdapterService.java Просмотреть файл

@@ -155,10 +155,11 @@ public class WxMiniAppPayAdapterService extends BaseWxPayV2AdapterService implem
futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000);
wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束
wxPayOrderSP.setSign_type("HMAC-SHA256");
wxPayOrderSP.setProfit_sharing(null);
if (isShare == EnumPayShare.YES) {
wxPayOrderSP.setProfit_sharing("Y");
}
wxPayOrderSP.setProfit_sharing("Y");
// wxPayOrderSP.setProfit_sharing(null);
// if (isShare == EnumPayShare.YES) {
// wxPayOrderSP.setProfit_sharing("Y");
// }
Map<String, String> payOrderMap = BeanUtils.toStringMap(wxPayOrderSP);
wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey()));
return wxPayOrderSP;


+ 5
- 4
mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java Просмотреть файл

@@ -130,10 +130,11 @@ public class WxMiniMaPayAdapterService extends BaseWxPayV2AdapterService impleme
futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000);
wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束
wxPayOrderSP.setSign_type("HMAC-SHA256");
wxPayOrderSP.setProfit_sharing(null);
if (isShare == EnumPayShare.YES) {
wxPayOrderSP.setProfit_sharing("Y");
}
wxPayOrderSP.setProfit_sharing("Y");
// wxPayOrderSP.setProfit_sharing(null);
// if (isShare == EnumPayShare.YES) {
// wxPayOrderSP.setProfit_sharing("Y");
// }
Map<String, String> payOrderMap = BeanUtils.toStringMap(wxPayOrderSP);
wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey()));
return wxPayOrderSP;


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

@@ -52,15 +52,6 @@ public interface PayShareAdapterService {
*/
WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType);
/**
* 创建分账记录
* @param sharingOrderDto
* @param mchType
* @param share
* @return
*/
WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder);
/**
* 无分账接收方分账 ,钱直接分给小程序方 调用API分账
* @param appInfo
@@ -141,8 +132,4 @@ public interface PayShareAdapterService {
*/
int getOfficialCommission(WxOrder o, WxPayAccount payAccount);


ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder);


}

+ 0
- 109
mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java Просмотреть файл

@@ -301,115 +301,6 @@ public class TtPayShareService extends PayShareBaseAdapterService{
return 0;
}

@Override
public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) {
// if(!EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode().equals(sharingOrder.getType())
// && !EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE_FINISH.getCode().equals(sharingOrder.getType())){
// return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"抖音暂不支持多次分账");
// }
WxCouponOrder couponOrder = new WxCouponOrder();
couponOrder.updateTenantInfo(payOrder);
couponOrder.setComposeOrderId(payOrder.getId());
List<WxCouponOrder> list = wxCouponOrderMapper.findList(couponOrder);
if(list.stream().filter(co->(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode().equals(co.getCouponOrderStatus()))).count() > 0){
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"存在未核销的券");
}
if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){
WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder();
updSharingOrder.setId(sharingOrder.getId());
updSharingOrder.updateTenantInfo(payOrder);
updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode());
updSharingOrder.setErrorMsg("待分账重试");
updSharingOrder.setUpdateTime(new Date());
wxProfitSharingOrderMapper.updateById(updSharingOrder);
return new ResultData();
}
if(EnumProfitSharingOrderType.PROFIT_SHARING_SINGLE.getCode().equals(sharingOrder.getType())){
WxOrder order = new WxOrder();
order.updateTenantInfo(payOrder);
order.setComposeOrderId(payOrder.getId());
List<WxOrder> list1 = wxOrderMapper.findList(order);
if(list1.size() != list.size()){
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"订单与卷码不匹配");
}
if(list1.stream().filter(o->(EnumOrderCpsStatus.ORDER_DEF_CPS.getCode().equals(o.getCpsStatus()))).count() > 0){
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"存在未同步cps的订单");
}
JSONArray receivers = new JSONArray();
Map<Long,WxCouponOrder> map = list.stream().collect(Collectors.toMap(WxCouponOrder::getOrderId, co -> co));
for (WxOrder o:list1) {
WxCouponOrder co = map.get(o.getId());
WxProfitSharingReceiver receiver = getReceiver(payOrder, co.getBMerchantId(), payOrder.getTtPayWay(),payOrder.getMchType());
if(receiver != null){
WxComposeChildOrderShare childOrderShare = payOrder.getChildOrderShare(o.getId());
int darenTakeAmount = 0;
if(EnumOrderCpsStatus.ORDER_IS_CPS.getCode().equals(o.getCpsStatus())){
OrderCps orderCps = orderCpsMapper.selectById(o.getId(), payOrder.getTenantId());
darenTakeAmount = orderCps.getCommissionAmount();
}
JSONObject jo = new JSONObject();
jo.put("type",this.getShareAccount(receiver.getReceiverType()).getMessage());
jo.put("account",receiver.getReceiverAccount());
jo.put("amount", childOrderShare.getShareAmount() - darenTakeAmount);
jo.put("rateAmount", childOrderShare.getRateAmount());
jo.put("realRateAmount", childOrderShare.getRealRateAmount());
jo.put("commissionAmount", childOrderShare.getCommissionAmount());
jo.put("darenTakeAmount", darenTakeAmount);
//jo.put("description",receiver.getReceiverComments()); //改为存ID,
jo.put("description",receiver.getId().toString()); //为重试做准备
receivers.add(jo);
}
}

WxProfitSharingOrder updSharingOrder = new WxProfitSharingOrder();
updSharingOrder.setId(sharingOrder.getId());
updSharingOrder.updateTenantInfo(payOrder);
updSharingOrder.setSharingStatus(EnumProfitSharingOrderStatus.PROFIT_SHARING_APPLY_FAILED.getCode());
updSharingOrder.setErrorMsg("待分账重试");
if(!receivers.isEmpty()){
updSharingOrder.setReceivers(receivers.toJSONString());
}
updSharingOrder.setUpdateTime(new Date());
wxProfitSharingOrderMapper.updateById(updSharingOrder);
return new ResultData();
}
return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"数据异常-----end");

}

@Override
public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder) {
WxProfitSharingOrder record = new WxProfitSharingOrder();
record.updateTenantInfo(sharingOrderDto);
record.setOrderId(sharingOrderDto.getOrderId());
record.setSingleOrderId(sharingOrderDto.getSingleOrderId());
record = wxProfitSharingOrderMapper.selectOne(new QueryWrapper(record));
if (record == null) {
//创建分账订单
Date currentDate = new Date();
record = new WxProfitSharingOrder();
final IdWorker idworker = IdWorker.get();
record.setId(idworker.nextId());
record.updateTenantInfo(sharingOrderDto);
record.setTransactionId(sharingOrderDto.getTransactionId());
record.setOrderId(sharingOrderDto.getOrderId());
record.setSingleOrderId(sharingOrderDto.getSingleOrderId());
record.setSingleOrderAmount(sharingOrderDto.getSingleOrderAmount());
record.setPayAmount(sharingOrderDto.getPayAmount());
record.setMerchantId(sharingOrderDto.getMerchantId());
record.setPayMerchantId(sharingOrderDto.getPayMerchantId());
record.setPayMerchantMchId(sharingOrderDto.getPayMerchantMchId());
record.setSharingStatus(this.getSharingOrderInitialStatus());
record.setCreateTime(currentDate);
record.setUpdateTime(currentDate);
record.setPayTimeStart(sharingOrderDto.getPayTimeStart());
record.setPayTimeEnd(sharingOrderDto.getPayTimeEnd());
record.setType(sharingOrderDto.getType());
wxProfitSharingOrderMapper.insert(record);
}
return record;
}

@Override
public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) {
if(merchantId == null || merchantId.equals(0L)){


+ 0
- 18
mallinkService/src/main/java/com/iformall/service/pay/service/share/wx/sft/WxPayShareSFTService.java Просмотреть файл

@@ -155,24 +155,6 @@ public class WxPayShareSFTService extends PayShareBaseAdapterService{
return 0;
}

@Override
public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) {
return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账无需处理");
}

@Override
public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder) {
if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){
throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信直连模式待开发");
}
if(EnumYesOrNo.NO.getCode().equals(payOrder.getShare())){
throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信不分账");
}

return null;
}

@Override
public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) {
return null;


+ 0
- 52
mallinkService/src/main/java/com/iformall/service/pay/service/share/wx/v2/WxPayShareService.java Просмотреть файл

@@ -344,58 +344,6 @@ public class WxPayShareService extends PayShareBaseAdapterService{
return 0;
}

@Override
public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) {
return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账无需处理");
}

@Override
public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto,WxPayOrder payOrder) {
if(EnumPayMchType.DIRECT.getCode().equals(payOrder.getMchType())){
throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信支付2.0直连模式待开发");
}
if(EnumYesOrNo.NO.getCode().equals(payOrder.getShare())){
throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信未开启分账");
}
//是否已创建分账订单
WxProfitSharingOrder record = new WxProfitSharingOrder();
record.updateTenantInfo(sharingOrderDto);
record.setOrderId(sharingOrderDto.getOrderId());
record.setSingleOrderId(sharingOrderDto.getSingleOrderId());
record = wxProfitSharingOrderMapper.selectOne(new QueryWrapper(record));
if (record == null) {
//创建分账订单
Date currentDate = new Date();
record = new WxProfitSharingOrder();
final IdWorker idworker = IdWorker.get();
record.setId(idworker.nextId());
record.updateTenantInfo(sharingOrderDto);
record.setTransactionId(sharingOrderDto.getTransactionId());
record.setOrderId(sharingOrderDto.getOrderId());
record.setSingleOrderId(sharingOrderDto.getSingleOrderId());
record.setSingleOrderAmount(sharingOrderDto.getSingleOrderAmount());
record.setPayAmount(sharingOrderDto.getPayAmount());
record.setMerchantId(sharingOrderDto.getMerchantId());
record.setSharingStatus(this.getSharingOrderInitialStatus());
record.setCreateTime(currentDate);
record.setUpdateTime(currentDate);
record.setPayTimeStart(sharingOrderDto.getPayTimeStart());
record.setPayTimeEnd(sharingOrderDto.getPayTimeEnd());
record.setType(sharingOrderDto.getType());
record.setPayMerchantId(sharingOrderDto.getPayMerchantId());
record.setPayMerchantMchId(sharingOrderDto.getPayMerchantMchId());
wxProfitSharingOrderMapper.insert(record);
}

WxProfitSharingReceiver psReceiver = getReceiver(sharingOrderDto, sharingOrderDto.getMerchantId(), null,payOrder.getMchType());
if (null != psReceiver) {
List<WxProfitSharingReceiver> psReceiverList = new ArrayList<WxProfitSharingReceiver>();
psReceiverList.add(psReceiver);
record.setReceivers(calReceiversAmount(sharingOrderDto, psReceiverList));
wxProfitSharingOrderMapper.updateById(record);
}
return record;
}

@Override
public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) {


+ 2
- 65
mallinkService/src/main/java/com/iformall/service/pay/service/share/wx/v3/WxPayShareV3Service.java Просмотреть файл

@@ -75,66 +75,7 @@ public class WxPayShareV3Service extends PayShareBaseAdapterService{
Integer realRateAmount = OrderHelper.getRealRateAmount(payAmount, payAccount);
return new PayShareCalculateAmount(payAmount,mallCharge,realRateAmount,0,systemAmount);
}
@Override
public WxProfitSharingOrder createSharingOrder(WxSharingOrderDto sharingOrderDto, WxPayOrder payOrder) {
if(EnumYesOrNo.NO.getCode().equals(payOrder.getShare())){
throw new MallinkException(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账未开启");
}
//是否已创建分账订单
WxProfitSharingOrder record = new WxProfitSharingOrder();
record.updateTenantInfo(sharingOrderDto);
record.setOrderId(sharingOrderDto.getOrderId());
record.setSingleOrderId(sharingOrderDto.getSingleOrderId());
record = wxProfitSharingOrderMapper.selectOne(new QueryWrapper(record));
if (record == null) {
//创建分账订单
Date currentDate = new Date();
record = new WxProfitSharingOrder();
final IdWorker idworker = IdWorker.get();
record.setId(idworker.nextId());
record.updateTenantInfo(sharingOrderDto);
record.setTransactionId(sharingOrderDto.getTransactionId());
record.setOrderId(sharingOrderDto.getOrderId());
record.setSingleOrderId(sharingOrderDto.getSingleOrderId());
record.setSingleOrderAmount(sharingOrderDto.getSingleOrderAmount());
record.setPayAmount(sharingOrderDto.getPayAmount());
record.setMerchantId(sharingOrderDto.getMerchantId());
//直连模式,
if (payOrder.getMchType() == EnumPayMchType.DIRECT.getCode()) {
if (null == sharingOrderDto.getPayMerchantId()) {
throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"直连模式当前订单的收款商户查询为空");
}
if (StringUtils.isBlank(sharingOrderDto.getPayMerchantMchId())) {
throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"直连模式当前订单的收款商户特约商户号进件信息查询为空");
}
record.setPayMerchantId(sharingOrderDto.getPayMerchantId());
record.setPayMerchantMchId(sharingOrderDto.getPayMerchantMchId());
}
record.setSharingStatus(this.getSharingOrderInitialStatus());
record.setCreateTime(currentDate);
record.setUpdateTime(currentDate);
record.setPayTimeStart(sharingOrderDto.getPayTimeStart());
record.setPayTimeEnd(sharingOrderDto.getPayTimeEnd());
record.setType(sharingOrderDto.getType());
wxProfitSharingOrderMapper.insert(record);
}
//总分模式
if (payOrder.getMchType() == EnumPayMchType.TOTAL.getCode()) {
WxProfitSharingReceiver psReceiver = getReceiver(sharingOrderDto, sharingOrderDto.getMerchantId(), null,payOrder.getMchType());
if (null != psReceiver) {
List<WxProfitSharingReceiver> psReceiverList = new ArrayList<WxProfitSharingReceiver>();
psReceiverList.add(psReceiver);
record.setReceivers(calV3ReceiversAmount(sharingOrderDto, psReceiverList));
wxProfitSharingOrderMapper.updateById(record);
}
//直连的方式
}else if (payOrder.getMchType() == EnumPayMchType.DIRECT.getCode()) {
}
return record;
}


@Override
public WxProfitSharingReceiver getReceiver(TenantEntity tenantEntity, Long merchantId, Integer ttPayWay,Integer mchType) {
@@ -370,10 +311,6 @@ public class WxPayShareV3Service extends PayShareBaseAdapterService{
public int getOfficialCommission(WxOrder o, WxPayAccount payAccount) {
return 0;
}

@Override
public ResultData handerSharingOrder(WxPayOrder payOrder, WxProfitSharingOrder sharingOrder) {
return new ResultData(ErrorCode.SYS_PARAMETER_TYPE_ERROR.getCode(),"微信分账无需处理");
}

}

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