| @@ -24,7 +24,9 @@ import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.web.bind.annotation.*; | |||
| import javax.servlet.http.HttpServletResponse; | |||
| import java.io.ByteArrayInputStream; | |||
| import java.io.OutputStream; | |||
| import java.util.HashMap; | |||
| import java.util.Map; | |||
| @@ -247,4 +249,42 @@ public class WxProfitSharingReceiverApplyController extends BaseController { | |||
| } | |||
| } | |||
| @PostMapping(value = "/getYwsqh_v2") | |||
| @ApiOperation("获取图片") | |||
| public void getYwsqh_v2(@RequestBody Map<String, String> param, HttpServletResponse response) { | |||
| logger.info("[" + getIpAddr() + "] WxMerchantMediaUploadController::getYwsqh_v2"); | |||
| logger.info("getYwsqh---"+JSON.toJSONString(param)); | |||
| TenantEntity tenantEntity = getTenantInfo(); | |||
| String contact_name = param.get("contact_name"); | |||
| String contact_id_number = param.get("contact_id_number"); | |||
| String contact_department = param.get("contact_department"); | |||
| String contact_job = param.get("contact_job"); | |||
| String legal_person = param.get("legal_person"); | |||
| String id_card_number = param.get("id_card_number"); | |||
| String card_period_begin = param.get("card_period_begin"); | |||
| String card_period_end = param.get("card_period_end"); | |||
| Boolean isSeal = "true".equals(param.get("is_seal"))?true:false; | |||
| String merchant_name = param.get("merchant_name"); | |||
| byte[] bytes = ImgYwsqhUtil.imgCeate(contact_name, contact_id_number, contact_department, contact_job, | |||
| legal_person, id_card_number, card_period_begin, card_period_end, isSeal, merchant_name); | |||
| try{ | |||
| if(bytes == null){ | |||
| response.setCharacterEncoding("UTF-8"); | |||
| response.setContentType("application/json"); | |||
| ResultData resultData = new ResultData(ResultData.UNLOGIN,"用户未登录"); | |||
| response.getWriter().write(JSON.toJSONString(resultData)); | |||
| }else{ | |||
| response.setContentType("image/jpeg"); | |||
| OutputStream os=response.getOutputStream(); | |||
| os.write(bytes); | |||
| } | |||
| }catch(Exception e){ | |||
| logger.error("返回授权函异常"+e.getMessage()); | |||
| } | |||
| } | |||
| } | |||
| @@ -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; | |||
| @@ -574,23 +575,34 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { | |||
| record.setPayAmount(record.getPayAmount()); | |||
| record.setPayVendor(payWay.getCode()); | |||
| record.setPayVersion(payAccount.getPayVersion()); | |||
| record.setMchType(payAccount.getMchType()); | |||
| record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); | |||
| 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.getCode().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) { | |||
| @@ -599,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()); | |||
| @@ -54,7 +54,12 @@ public class MulityNumberOneOrderBatchOrderAdapterService extends BaseBatchOrder | |||
| @Override | |||
| public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { | |||
| return super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH); | |||
| WxComposeOrder composeOrder = super.getComposeOrder(mainOrderId, tenantId, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH); | |||
| List<WxOrder> orders = super.getChildOrders(composeOrder, tenantId, EnumComposeOrder.MULITY_NUMBER_ORDER_BATCH); | |||
| if (null != orders && orders.size() > 0 ) { | |||
| composeOrder.setSingleOrder(orders.get(0)); | |||
| } | |||
| return composeOrder; | |||
| } | |||
| @Override | |||
| @@ -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); | |||
| @@ -163,9 +176,9 @@ public class WxMiniMaPayAdapterService extends BaseWxPayV2AdapterService impleme | |||
| String productName, EnumPayShare isShare,WxAppinfo appInfo, Date currentDate, PayExtraParam params) throws Exception { | |||
| //2.0版本未对接直连模式, 小商户进件成为特约商户号 | |||
| if (payAccount.getMchType() == EnumPayMchType.DIRECT.getCode()) { | |||
| throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"当前支付版本不支持直连模式"); | |||
| } | |||
| // if (payAccount.getMchType() == EnumPayMchType.DIRECT.getCode()) { | |||
| // throw new MallinkException(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"当前支付版本不支持直连模式"); | |||
| // } | |||
| if (payAccount.getType() == EnumPayMode.MCH.getCode()) { | |||
| // 扫码支付 普通商户模式 | |||
| String bAppId = (String) params.getValue("bAppId"); | |||
| @@ -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(),"当前支付模式非法"); | |||
| @@ -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){ | |||