xhxu 3 лет назад
Родитель
Сommit
25b482cada
4 измененных файлов: 41 добавлений и 28 удалений
  1. +22
    -25
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java
  2. +14
    -1
      mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v2/miniApp/maPay/WxMiniMaPayAdapterService.java
  3. +2
    -2
      mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/v3/miniApp/appPay/WxMiniAppPayV3AdapterService.java
  4. +3
    -0
      mallinkService/src/main/java/com/iformall/service/pay/service/share/douyin/TtPayShareService.java

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

@@ -546,6 +546,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT);
}
WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId());
PayShareAdapterService payShareServie = payServiceFactory.getPayShareAdapterService(payWay.getCode(),payAccount.getPayVersion());
EnumPayShare paySHareEnum = EnumPayShare.getEnum(payAccount.getShare());
if (paySHareEnum != null) {
isShare = paySHareEnum;
@@ -579,20 +580,29 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
record.setShare(isShare.getCode());
record.setComposeOrder(EnumComposeOrder.SINGLE.getCode());

if (isShare == EnumPayShare.YES) {
// 分账金额
int iChargeFee = OrderHelper.getMallCharge(record.getPayAmount(), payAccount);
Integer share_amount = record.getPayAmount() - iChargeFee;
record.setShareAmount(share_amount);
if(payAccount.getRealRate() != null) {
int iRealChargeFee = PayUtils.getPayRate(record.getPayAmount(), payAccount.getRealRate(), true);
record.setRateAmount(iRealChargeFee);
}
if (share_amount <= 0) {
isShare = EnumPayShare.NO;
record.setShare(isShare.getCode());
Map<String,WxComposeChildOrderShare> childShares = new HashMap<String,WxComposeChildOrderShare>();
Long merchant_id = null;
String merchant_uid = "";
if(EnumPayMchType.DIRECT.equals(record.getMchType())){//直连模式记录收款商户
merchant_id = user.getMerchantId();
WxProfitSharingReceiver receiver = payShareServie.getReceiver(payAccount, merchant_id, null, record.getMchType());
// merchant_uid = wxCouponChannelService.getCouponOneMerchantUid(payWay,merchant_id,o.getTenantId());
// if(null == merchant_id || StringUtils.isBlank(merchant_uid)){
if(receiver == null){
throw new MallinkException(ErrorCode.PAY_ORDER_MERCHANT_UID_ERROR);
}
merchant_uid = receiver.getReceiverAccount();
}
int rate = payShareServie.getOfficialCommission(order,payAccount);//抖音分佣率
logger.info("抖音分佣率"+rate);
PayShareCalculateAmount oShareAmount = payShareServie.calculateAmount(order.getPayment(),rate, payAccount);
logger.info("佣金明细"+ JSON.toJSONString(oShareAmount));
int share_amount = oShareAmount.getShareAmount();
int rate_amount = oShareAmount.getRateAmount();
childShares.put(String.valueOf(order.getId()), new WxComposeChildOrderShare(oShareAmount,merchant_id,merchant_uid,order.getId()));
record.setShareAmount(share_amount);
record.setRateAmount(rate_amount);
record.setChildOrderShare(JSON.toJSONString(childShares));

int sqlRow = wxPayOrderMapper.insert(record);
if (sqlRow != 1) {
@@ -601,19 +611,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
}
} else {
record = list.get(0);
if (null == record.getShare()) {
if (isShare == EnumPayShare.YES) {
int iChargeFee = OrderHelper.getMallCharge(record.getPayAmount(), payAccount);
Integer share_amount = record.getPayAmount() - iChargeFee;
if (share_amount <= 0) {
isShare = EnumPayShare.NO;
}
}
record.setShare(isShare.getCode());
}else {
isShare = EnumPayShare.getEnum(record.getShare());
}
payOrderNo = String.valueOf(record.getId());
}

logger.debug("wxPayRecord md5 before:"+record.toString());


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

@@ -6,6 +6,7 @@ import java.util.List;
import java.util.Map;

import com.iformall.domain.po.*;
import com.iformall.service.order.entity.WxComposeChildOrderShare;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -43,6 +44,11 @@ import me.chanjar.weixin.common.error.WxErrorException;
@Service
public class WxMiniMaPayAdapterService extends BaseWxPayV2AdapterService implements CPassivePayService{

protected String getMerchantUid(WxPayOrder payOrder,WxOrder order) {
WxComposeChildOrderShare share = payOrder.getChildOrderShare(order.getId());
return share.getMerchantUid();
}

private WxMicroPayOrderP generateWxMicroPayOrderP(WxPayAccount payAccount, WxComposeOrder composeOrder, String productName,WxPayOrder record, EnumPayShare isShare,
WxAppinfo appInfo, Date currentDate,String bAppId,String bUserPhone) throws Exception {
String noncestr = Utility.generate32UUID();
@@ -104,7 +110,14 @@ public class WxMiniMaPayAdapterService extends BaseWxPayV2AdapterService impleme
wxPayOrderSP.setAppid(appInfo.getParentAppId());
wxPayOrderSP.setMch_id(payAccount.getMchId());
wxPayOrderSP.setSub_appid(appInfo.getAppId());
wxPayOrderSP.setSub_mch_id(payAccount.getSubMchId());
if (record.getMchType() == EnumPayMchType.DIRECT.getCode()) {
wxPayOrderSP.setSub_mch_id(getMerchantUid(record,composeOrder.getSingleOrder()));
//总分
}else if (record.getMchType() == EnumPayMchType.TOTAL.getCode()) {
wxPayOrderSP.setSub_mch_id(payAccount.getSubMchId());
}else {
throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"当前支付模式非法");
}
wxPayOrderSP.setDevice_info(bUserPhone);
wxPayOrderSP.setNonce_str(noncestr);
wxPayOrderSP.setBody(productName);


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

@@ -77,10 +77,10 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl
req.setSp_mchid(payAccount.getMchId());
req.setSub_appid(appInfo.getAppId());
//直连
if (payAccount.getMchType() == EnumPayMchType.DIRECT.getCode()) {
if (record.getMchType() == EnumPayMchType.DIRECT.getCode()) {
req.setSub_mchid(getMerchantUid(record,composeOrder.getSingleOrder()));
//总分
}else if (payAccount.getMchType() == EnumPayMchType.TOTAL.getCode()) {
}else if (record.getMchType() == EnumPayMchType.TOTAL.getCode()) {
req.setSub_mchid(payAccount.getSubMchId());
}else {
throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"当前支付模式非法");


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

@@ -267,6 +267,9 @@ public class TtPayShareService extends PayShareBaseAdapterService{

@Override
public int getOfficialCommission(WxOrder o, WxPayAccount payAccount) {
if(!EnumOrderType.COUPON.getCode().equals(o.getType())){
return 0;
}
Long couponId = wxCouponChannelMapper.findCouponIdById(o.getCouponChannelId(), o.getTenantId());
Integer categoryId = wxCouponMapper.findCategoryIdById(couponId,o.getTenantId());
if(categoryId != null){


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