| @@ -546,6 +546,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); | return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); | ||||
| } | } | ||||
| WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); | WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId()); | ||||
| PayShareAdapterService payShareServie = payServiceFactory.getPayShareAdapterService(payWay.getCode(),payAccount.getPayVersion()); | |||||
| EnumPayShare paySHareEnum = EnumPayShare.getEnum(payAccount.getShare()); | EnumPayShare paySHareEnum = EnumPayShare.getEnum(payAccount.getShare()); | ||||
| if (paySHareEnum != null) { | if (paySHareEnum != null) { | ||||
| isShare = paySHareEnum; | isShare = paySHareEnum; | ||||
| @@ -579,20 +580,29 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| record.setShare(isShare.getCode()); | record.setShare(isShare.getCode()); | ||||
| record.setComposeOrder(EnumComposeOrder.SINGLE.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); | int sqlRow = wxPayOrderMapper.insert(record); | ||||
| if (sqlRow != 1) { | if (sqlRow != 1) { | ||||
| @@ -601,19 +611,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||||
| } | } | ||||
| } else { | } else { | ||||
| record = list.get(0); | 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()); | logger.debug("wxPayRecord md5 before:"+record.toString()); | ||||
| @@ -6,6 +6,7 @@ import java.util.List; | |||||
| import java.util.Map; | import java.util.Map; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.service.order.entity.WxComposeChildOrderShare; | |||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| @@ -43,6 +44,11 @@ import me.chanjar.weixin.common.error.WxErrorException; | |||||
| @Service | @Service | ||||
| public class WxMiniMaPayAdapterService extends BaseWxPayV2AdapterService implements CPassivePayService{ | 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, | private WxMicroPayOrderP generateWxMicroPayOrderP(WxPayAccount payAccount, WxComposeOrder composeOrder, String productName,WxPayOrder record, EnumPayShare isShare, | ||||
| WxAppinfo appInfo, Date currentDate,String bAppId,String bUserPhone) throws Exception { | WxAppinfo appInfo, Date currentDate,String bAppId,String bUserPhone) throws Exception { | ||||
| String noncestr = Utility.generate32UUID(); | String noncestr = Utility.generate32UUID(); | ||||
| @@ -104,7 +110,14 @@ public class WxMiniMaPayAdapterService extends BaseWxPayV2AdapterService impleme | |||||
| wxPayOrderSP.setAppid(appInfo.getParentAppId()); | wxPayOrderSP.setAppid(appInfo.getParentAppId()); | ||||
| wxPayOrderSP.setMch_id(payAccount.getMchId()); | wxPayOrderSP.setMch_id(payAccount.getMchId()); | ||||
| wxPayOrderSP.setSub_appid(appInfo.getAppId()); | 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.setDevice_info(bUserPhone); | ||||
| wxPayOrderSP.setNonce_str(noncestr); | wxPayOrderSP.setNonce_str(noncestr); | ||||
| wxPayOrderSP.setBody(productName); | wxPayOrderSP.setBody(productName); | ||||
| @@ -77,10 +77,10 @@ public class WxMiniAppPayV3AdapterService extends BaseWxPayV3AdapterService impl | |||||
| req.setSp_mchid(payAccount.getMchId()); | req.setSp_mchid(payAccount.getMchId()); | ||||
| req.setSub_appid(appInfo.getAppId()); | req.setSub_appid(appInfo.getAppId()); | ||||
| //直连 | //直连 | ||||
| if (payAccount.getMchType() == EnumPayMchType.DIRECT.getCode()) { | |||||
| if (record.getMchType() == EnumPayMchType.DIRECT.getCode()) { | |||||
| req.setSub_mchid(getMerchantUid(record,composeOrder.getSingleOrder())); | 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()); | req.setSub_mchid(payAccount.getSubMchId()); | ||||
| }else { | }else { | ||||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"当前支付模式非法"); | throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"当前支付模式非法"); | ||||
| @@ -267,6 +267,9 @@ public class TtPayShareService extends PayShareBaseAdapterService{ | |||||
| @Override | @Override | ||||
| public int getOfficialCommission(WxOrder o, WxPayAccount payAccount) { | public int getOfficialCommission(WxOrder o, WxPayAccount payAccount) { | ||||
| if(!EnumOrderType.COUPON.getCode().equals(o.getType())){ | |||||
| return 0; | |||||
| } | |||||
| Long couponId = wxCouponChannelMapper.findCouponIdById(o.getCouponChannelId(), o.getTenantId()); | Long couponId = wxCouponChannelMapper.findCouponIdById(o.getCouponChannelId(), o.getTenantId()); | ||||
| Integer categoryId = wxCouponMapper.findCategoryIdById(couponId,o.getTenantId()); | Integer categoryId = wxCouponMapper.findCategoryIdById(couponId,o.getTenantId()); | ||||
| if(categoryId != null){ | if(categoryId != null){ | ||||