From ae9bfd2d66f68a553786ac78b12f4390e65e4e09 Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期五, 24 十一月 2023 18:30:18 +0800 Subject: [PATCH] 后台bug修改 --- cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java | 225 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 206 insertions(+), 19 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 0ffecf3..ef7e699 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,25 +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.*; 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; @@ -29,6 +47,7 @@ import java.io.*; import java.math.BigDecimal; import java.net.InetAddress; +import java.net.URLDecoder; import java.net.UnknownHostException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; @@ -41,11 +60,11 @@ */ @Component public class PayMoneyUtil { - private String aliAppid = "2021004103650328";//支付宝appid + private String aliAppid = "2021004105665036";//支付宝appid - private String appPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCSsBy+F6k1CTL4b0qQssuhf6x2aeqSn2eBmv0mJALK9iqRgA9EG0buYVnV/tsNGYvKCgX56onb+Cv+f9/TShZzp0FVGemIcgPhrjK0WW2RJBMq9EmPzc2x+7SkygKO1H6S3CwWhYdc7TCNL9OnFAHSEa+FfGNWXg0jM0mSXI7/me8icbWZd5mdiLTV+OWx5ONAE0GfVPhUPnb9faunE6gvZCamZnS+H6ACzzidO7ksVkZq5PBsI3Jew2oAcAJSktsljMZNqDrVknzUbvKBXSw80zZD66i5twx8+8els5VLo6qu9PD80l+K430r2eMqxzXm9mRXZSPSxoOm5c+0cNiHAgMBAAECggEAR+EIlJWfkp+JXHecgD88zUx0xCmuil6WJ8o81h27SJ1LyrSHxoXfQhxuGxChYk/sUfqLZyVonGOFm1Yp5a1eRxnkR8FE0FmeUU49Bmbz67VTty6xhUgBzX9by4w5qKezxl8hM4AHDqAjtGuFOU/yfG+yJKUJQF8h7OfK22+DmveglMt+W8buCf+IJahMyxYLWnA5eG8X1KjOC5PnpQEEBBB3g8fJpdbcoUteGGKzGhkSMKXuM//m2T8bU1sNZytnV+rDblg4E9IZIJwhory7WBxDzykEGpbM+RwJ6E6bAp6MXMUKbed1Uf/40d8C5yItWhjUh1a+ZDS0XbsMP+C/IQKBgQDmYhUr5wcqNQHqpKZWd0l/UZyR+Ykjk7WNvWFQIoMZmCWCGcepyQHAdXpk29evgTqcF9v9dlGDc7waFc93L2uxEYOaSk5UK8Sf6yoXHDocKwauY5DDvAuyy2b9QQDNqisi/MN872RaefBILz/DYN2ZbTtp8i/udSaRl01h6EXQfwKBgQCi/5+eIEcQZTa4zhq5CXKKVbcU2Y8uVsM1tgLaxOwQFr0Xd0ckQiJdkN7qhjgeSuOz0BOXo1xovzN4ZIKISB5sZDadgQCZi7O1YeKc8ElLPnV/WfKBGAxSBpURyMUOYH1mno5QG+QiGmTgH0/OhmqWfp+dVWHNwlx0EwMOpCBz+QKBgBRuVlpSXrxLfyQD/gxk/8uevTfk3VieXNd5GAw3Q1EdwRXMm3xfKxyaToRrSrFx0HTPWN8dgxUZSnE1xfRX7EEDwJwKQvAMAZ/9BvqNskmVNz537fqtzovIphWHkj6q/LBZoiyOPmQXtEtyhUEacgyNN1up8r4+/XCj7mTkaGyZAoGBAIx+GG6LE7WmB8yymYX0Bq4Fw5BNFYSzc/7PqxY1teMINmQLg15VQpmzTPCIT8aMdkd+ieSiAfynEQ4sU/ZzcwWqOwj3MDUonPUyMcljs0kPxObH+KYcvEHXOpXhnzgNIwlYkQGriK98YIZtdrRkV2rwKVPLTEm1xUqnOHNeNDrBAoGASnewOvqzZQVnzbGYur7nbEBQaMKWP2IYKozr57+EHQ40QFyTzFUx+jhxnQ2TIoXQEbozNp11eWGm9TZenHxUbOZmAmPKGq5DQzBgwj/V9QPNPpulCEkgjEqIn0gdCNaEilZXTpdsLPxmZ/J9IxGJt+y/5OYhbIwfSS9gbvVEook=";//支付宝开发者应用私钥 + private String appPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCi5i9nW/hGLJ3A06cZxTQdviFC7THpdSihoTYGLr9q006hu0V26ecBMY/o4w5bvIX0Ok/yofmZsVcCJpAPvbXL/uqVrIjnRRxXiaeBFThlxoBUTdunvbUSDYfzlEhJr5NvUKI6H6lz2niXlQGx4qy8Hau4ccWit9kM8jwUvsBVQoFgJA+xrjMvooA7YLopQtpOD+UJr5thApTSf1xrnr1W12yolTLEH15JmNV372cqXrYUuqnY0QsaPtxeqJUGAOcGdVLllQ7easEznP8DFBvDdHATcmp2SHNQDUEWN6MCVPbMgY06NQVqAXxqjTAYSVh+6TRu6bofPmpYC3TZB003AgMBAAECggEBAJAcR2+PA3NBYUYHeFrqBRMS8uX8ZR19kjZ7IgoSLTFaQsP9opRylPSPXhrPVBKAE5leRQAHn4MCSlESwHvMfxo7KFjFTFAc6dffZZpipYQUOc9bGampwJh58/3e/pyBgVMG6J23CPf/HJQtNFSkjd/V9+ayb/9l2dUEL3bC0fAZ/dbx8HsxdLw8wn3fLlWLj68hOMqa2deCZe3JdSVsPbeWqkh56FFsMLug0Nd+Ar4TgRl9/jnhXF0JWiD0LmPUYLhboY7EfUBzN4w1iYbDi1P+3zvoOYsiVKAXox9GMhQ2VzOO2UcSTuizSza2e98mGpabl/GpKmCz+RDFjtkX6eECgYEA2MyCij65eO3aGIm3FUe93DULRBYTfX8qJQSJq2WOWA3mmQlEW6L3O2B5/lG2h+8WmN6iLEs9eHpgycGYp7vAqgrANEn16ACVcuyx0scFtrZfZ+kmHMzFfiUWxJjVYk/6YngsGVBLdw6ueM42C8TTP67X9tU5TdVGoGWuqEj4W98CgYEAwFqwprXOch5Pqk/RPbb49r0Ou03K/UbciWnWWKzUhFFNS8MdlQPoDvQZbMwHLeWsa2VhaKITK3x5biLQb3U+0GLOn6lTvEyrEUH+ucREyLgVYTRAvwBPtnvlrzpyxPk2HnslQjju8WrvvLLBMKWUjlTrTOzhaHT21gz3pHMiOakCgYEAhLmfaXdBITGshb054sNLDtdCkGpbgEcrzAHdLps769iGxkYQHXHFngpQZUwtTUcoNGqIKknd1jZFrv7gsD+XkgKG7PwimehRlkwmCX5ilxtLiVgJRzRt6+5U5AMVD90a0tHzXYP0z2yjj73fBJF5KtGl0a10KZxaYrQdm1UhB00CgYBZZgzx/k9rtHC8LAqIj1CYhHejT92G53c6Gkl3vyOqN4sgKhfGmSEySfrDGPRBPZxr8ZtbIPCd5mUdberH0osWGMYFaJI1UsCy7aQwvGpniz7MhZeN7dweaOjwDs8mgtjHQ96mL4XGCDhR0BZ/wIURvZ/6iaGdhbbu9unlsWj3uQKBgQCmZYdsbbZkd3ev6f8rwyvMz+DrCQyYpY44cegBYuJgrZiQnL2fJioeN7ixX0UM48SfwsZEIrzshP/LGAwnc2MdjxKUl4jLN8SEe0NAjXOnz9Zaw740+aOmLpXcLWdP4uM2gIhWsvW1tEkQZCXmm7c9s/RsU8Pmzv+YL3+fSijOzA==";//支付宝开发者应用私钥 - private String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwRiMpvwg288WxCwJTBxeqQcFlkZR1p+hZn3/GshrYgRKhGu34IfnRbEnb70YJBq0N1AmdJRU4tYMS1qqFcvKdXnUrdPz+yx4F/uWv+Vz7ftzAEZ1JJh1s9IhJ1ayE4NNWBczj12cIrinUcIHNoITmPFSpcizk9jGnzZZDK4u2oZQEontseu6QyLoc4bBXgy3J1Cux7Q3kO0m3unr0j14PSOAY6kMmgPOyAyuP5Vl655OFJz1x4YDiXs6c+fHLzEZh+Bmm4kCedE7PeJ69xpxSo+i0qia9mhiR4L3LmX7yAzDffHfSQHdxzN0UR34ZF9ChZi/tGOeGABbC35tzGiWWQIDAQAB";//支付宝应用公钥 + private String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAouYvZ1v4RiydwNOnGcU0Hb4hQu0x6XUooaE2Bi6/atNOobtFdunnATGP6OMOW7yF9DpP8qH5mbFXAiaQD721y/7qlayI50UcV4mngRU4ZcaAVE3bp721Eg2H85RISa+Tb1CiOh+pc9p4l5UBseKsvB2ruHHForfZDPI8FL7AVUKBYCQPsa4zL6KAO2C6KULaTg/lCa+bYQKU0n9ca569VtdsqJUyxB9eSZjVd+9nKl62FLqp2NELGj7cXqiVBgDnBnVS5ZUO3mrBM5z/AxQbw3RwE3JqdkhzUA1BFjejAlT2zIGNOjUFagF8ao0wGElYfuk0bum6Hz5qWAt02QdNNwIDAQAB";//支付宝应用公钥 private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥 @@ -57,7 +76,7 @@ private String key = "";//微信商户号 - private String callbackPath = "";//支付回调网关地址 + private String callbackPath = "8.137.22.229:56666/account";//支付回调网关地址 private String app_cert_path = "C:/cert/alipay/user/app_cert_path.crt";//应用公钥证书路径 @@ -138,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 { @@ -145,6 +204,7 @@ AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); Map<String, String> map = new HashMap<>(); map.put("orderString", response.getBody()); + map.put("returnId",passbackParams); System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。 return ResultUtil.success(map); } catch (AlipayApiException e) { @@ -255,19 +315,20 @@ * @return * @throws Exception */ - public ResultUtil queryALIOrder(String out_trade_no) throws Exception{ - AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8", alipay_public_key,"RSA2"); + public AlipayTradeQueryResponse queryALIOrder(String out_trade_no) throws Exception{ + AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8",alipay_public_key,"RSA2"); AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); request.setBizContent("{" + - "\"out_trade_no\":" + out_trade_no + - " }"); + " \"out_trade_no\":\"" + out_trade_no + "\"" + + "}"); AlipayTradeQueryResponse response = alipayClient.execute(request); - if(response.isSuccess()){ - String tradeStatus = response.getTradeStatus();//交易状态:WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款) - return ResultUtil.success(tradeStatus); - } else { - return ResultUtil.error(response.getMsg()); - } + return response; +// if(response.isSuccess()){ +// String tradeStatus = response.getTradeStatus();//交易状态:WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款) +// return ResultUtil.success(response); +// } else { +// return ResultUtil.error(response.getMsg()); +// } } @@ -341,6 +402,10 @@ if("SUCCESS".equals(result_code)){ String type = map1.get("trade_type"); String prepay_id = map1.get("prepay_id"); + + + + switch (type){ case "JSAPI": //重新进行签名后返回给前端 @@ -387,7 +452,8 @@ } - + @Resource + private RechargeRecordsMapper rereMapper; /** @@ -412,6 +478,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")); @@ -423,10 +492,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; +// +// +// +// +// } /** * 微信扫码收款 @@ -1108,10 +1287,18 @@ } - public static void main(String[] ages){ +// public static void main(String[] ages){ // PayMoneyUtil payMoneyUtil = new PayMoneyUtil(); -// payMoneyUtil.weixinpay("测试", "123", "12.5", ""); - } +// 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