liujie
2023-10-26 e030255c23c7ba3e2cbad1036a810d6d72fa864f
cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
@@ -1,26 +1,43 @@
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 +157,46 @@
        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.err.println("=================="+royaltyInfo);
        //
        request.setBizModel(model);
        request.setNotifyUrl(callbackPath + notifyUrl);
        try {
@@ -343,6 +400,10 @@
            if("SUCCESS".equals(result_code)){
                String type = map1.get("trade_type");
                String prepay_id = map1.get("prepay_id");
                switch (type){
                    case "JSAPI":
                        //重新进行签名后返回给前端
@@ -389,7 +450,8 @@
    }
    @Resource
    private RechargeRecordsMapper rereMapper;
    /**
@@ -414,6 +476,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 +490,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 +1285,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);
//    }
    /**