From 801600b0b5ae9898cf509258e2afa1973fae1813 Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期三, 11 十月 2023 10:32:00 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/PlayPai --- cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java | 203 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 188 insertions(+), 15 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java index 8821c90..120a41e 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java +++ b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java @@ -1,26 +1,42 @@ package com.dsh.account.util; +import cn.hutool.core.util.RandomUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.CertAlipayRequest; import com.alipay.api.DefaultAlipayClient; -import com.alipay.api.domain.AlipayTradeAppPayModel; -import com.alipay.api.domain.AlipayTradeQueryModel; +import com.alipay.api.domain.*; import com.alipay.api.request.*; import com.alipay.api.response.*; +import com.dsh.account.dto.Receivers; +import com.dsh.account.entity.OperatorUser; +import com.dsh.account.feignclient.competition.DeductionCompetitionsClient; +import com.dsh.account.feignclient.competition.model.PaymentCompetition; +import com.dsh.account.feignclient.course.CoursePackageClient; +import com.dsh.account.feignclient.course.model.TCoursePackagePayment; +import com.dsh.account.feignclient.other.SiteClient; +import com.dsh.account.feignclient.other.model.SiteBooking; +import com.dsh.account.mapper.RechargeRecordsMapper; import com.dsh.account.util.httpClinet.HttpClientUtil; +import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingReceiver; +import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingRequest; +import com.github.binarywang.wxpay.service.ProfitSharingV3Service; +import com.github.binarywang.wxpay.service.WxPayService; import org.apache.commons.collections.map.HashedMap; +import org.apache.http.client.methods.CloseableHttpResponse; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; @@ -140,6 +156,49 @@ model.setTotalAmount(amount);//付款金额 model.setProductCode("QUICK_MSECURITY_PAY"); model.setPassbackParams(passbackParams);//自定义参数 + + + //分账 + Integer coursePackagePayments = coursePackageClient.queryByCode(outTradeNo); + Integer paymentCompetitions = competitionsClient.queryByCode(outTradeNo); + Integer siteBookings = siteClient.queryByCode(outTradeNo); + List<Integer> stores = new ArrayList<>(); + stores.add(coursePackagePayments); + stores.add(paymentCompetitions); + stores.add(siteBookings); + + OperatorUser operatorUser = siteClient.queryOperator(stores); + + String alipayProportion = operatorUser.getAlipayProportion(); + String alipayNum = operatorUser.getAlipayNum(); + + ExtendParams extendParams = new ExtendParams(); +// extendParams.setSysServiceProviderId("YOUR_SERVICE_PROVIDER_ID"); + model.setExtendParams(extendParams); + + RoyaltyInfo royaltyInfo = new RoyaltyInfo(); +// royaltyInfo.setRoyaltyType("transfer"); + + + RoyaltyDetailInfos royaltyDetailInfo1 = new RoyaltyDetailInfos(); + royaltyDetailInfo1.setTransOutType("userId"); + royaltyDetailInfo1.setTransOut(aliAppid); + royaltyDetailInfo1.setTransInType("loginName"); + royaltyDetailInfo1.setTransIn("18398968484"); + + royaltyDetailInfo1.setDesc("分账描述1"); + royaltyDetailInfo1.setAmountPercentage(alipayProportion); + List<RoyaltyDetailInfos> royaltyDetailInfos = new ArrayList<>(); + + + + + royaltyInfo.setRoyaltyDetailInfos(royaltyDetailInfos); + model.setRoyaltyInfo(royaltyInfo); +System.out.println("=================="+royaltyInfo); + + + // request.setBizModel(model); request.setNotifyUrl(callbackPath + notifyUrl); try { @@ -389,7 +448,8 @@ } - + @Resource + private RechargeRecordsMapper rereMapper; /** @@ -414,6 +474,9 @@ map1.put("transaction_id", map.get("transaction_id"));//微信支付订单号 String result = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"; map1.put("result", result); + + + return map1; }else{ System.err.println(map.get("err_code_des")); @@ -425,10 +488,120 @@ e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); + } catch (Exception e) { + throw new RuntimeException(e); } return null; } +@Resource +private CoursePackageClient coursePackageClient; + @Resource + private DeductionCompetitionsClient competitionsClient; + + @Resource + private SiteClient siteClient; + @Autowired + private WxPayService wxPayService; + //分账 + public ResultUtil order(String code) throws Exception { + + + + Integer coursePackagePayments = coursePackageClient.queryByCode(code); + Integer paymentCompetitions = competitionsClient.queryByCode(code); + Integer siteBookings = siteClient.queryByCode(code); + List<Integer> stores = new ArrayList<>(); + stores.add(coursePackagePayments); + stores.add(paymentCompetitions); + stores.add(siteBookings); + + OperatorUser operatorUser = siteClient.queryOperator(stores); + + + WxPayService myWxPayService = wxPayService.switchoverTo("mch_id"); + + ProfitSharingV3Service profitSharingV3Service = myWxPayService.getProfitSharingV3Service(); + + String nonceStr = RandomUtil.randomString(32); + String appId = "您的appid"; + + + //添加分账方 + +// ProfitSharingReceiver profitSharingReceiver = new ProfitSharingReceiver(); +// profitSharingReceiver.setAccount("appid对应的openId"); +// profitSharingReceiver.setAmount(1l); +// profitSharingReceiver.setAppid(appId); +// profitSharingReceiver.setType("PERSONAL_OPENID"); +// profitSharingReceiver.setRelationType("PARTNER"); +// profitSharingV3Service.addProfitSharingReceiver(profitSharingReceiver); + + //分账 + ProfitSharingRequest profitSharingRequest = new ProfitSharingRequest(); + profitSharingRequest.setAppid(appId); + profitSharingRequest.setTransactionId("微信支付订单号"); + profitSharingRequest.setOutOrderNo("业务系统唯一编号"); + //分账完成后,剩余金额自动解冻并返回给商户账号,默认false + profitSharingRequest.setUnfreezeUnsplit(true); + //待分账金额1元 + Long money = 1L; + List<ProfitSharingReceiver> profitSharingReceivers = new ArrayList<>(); + ProfitSharingReceiver profitSharingReceiver = new ProfitSharingReceiver(); + profitSharingReceiver.setAccount("appid对应的openId,分账用户1"); + + + //分账百分之5 + profitSharingReceiver.setAmount(money * 100 / 5); + profitSharingReceiver.setAppid(appId); + profitSharingReceiver.setType("PERSONAL_OPENID"); + profitSharingReceiver.setRelationType("PARTNER"); + profitSharingReceiver.setDescription("test01"); + profitSharingReceivers.add(profitSharingReceiver); + + ProfitSharingReceiver receiver = new ProfitSharingReceiver(); + receiver.setAccount("appid对应的openId,分账用户2"); + //百分之10 + receiver.setAmount(money * 100 / 10); + receiver.setAppid(appId); + receiver.setType("PERSONAL_OPENID"); + receiver.setRelationType("PARTNER"); + receiver.setDescription("test02"); + profitSharingReceivers.add(receiver); + + + profitSharingRequest.setReceivers(profitSharingReceivers); + + profitSharingV3Service.profitSharing(profitSharingRequest); + + + + +// Map<String,String> headers = new HashMap<>(); +// headers.put("Authorization",map.get("sign")); +// headers.put("Accept","application/json"); +// headers.put("Wechatpay-Serial",certPath); +// +// List<Receivers> receivers = new ArrayList<>(); +// +// Map<String,Object> body = new HashMap<>(); +// body.put("appid",appid); +// body.put("transaction_id",map.get("transaction_id")); +// body.put("out_order_no",map.get("out_trade_no")); +// body.put("receivers",receivers); +// body.put("unfreeze_unsplit",true); + + //支付分账 +// String url ="https://api.mch.weixin.qq.com/v3/profitsharing/orders"; +// CloseableHttpResponse closeableHttpResponse = HttpClientUtil.setPostHttpRequset(url, body, headers, "application/json"); +// + + return null; + + + + + } /** * 微信扫码收款 @@ -1110,18 +1283,18 @@ } - public static void main(String[] ages){ - PayMoneyUtil payMoneyUtil = new PayMoneyUtil(); - ResultUtil ce = payMoneyUtil.alipay("测试", "测试", "", "121456457", "10", "http://123.com"); - System.err.println(ce); - ResultUtil resultUtil = null; - try { - resultUtil = payMoneyUtil.queryALIOrder("121456457"); - } catch (Exception e) { - e.printStackTrace(); - } - System.err.println(resultUtil); - } +// public static void main(String[] ages){ +// PayMoneyUtil payMoneyUtil = new PayMoneyUtil(); +// ResultUtil ce = payMoneyUtil.alipay("测试", "测试", "", "121456457", "10", "http://123.com"); +// System.err.println(ce); +// ResultUtil resultUtil = null; +// try { +// resultUtil = payMoneyUtil.queryALIOrder("121456457"); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// System.err.println(resultUtil); +// } /** -- Gitblit v1.7.1