cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AliPayMsgConfig.java
New file @@ -0,0 +1,90 @@ package com.dsh.guns.modular.system.api; import cn.hutool.core.io.FileUtil; import com.alibaba.fastjson.JSONObject; import com.alipay.api.msg.AlipayMsgClient; import com.alipay.api.msg.MsgHandler; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.guns.modular.system.model.OperatorAuthAlipay; import com.dsh.guns.modular.system.model.OperatorUser; import com.dsh.guns.modular.system.service.IOperatorAuthService; import com.dsh.guns.modular.system.service.IOperatorUserService; import com.dsh.guns.modular.system.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; @Component @Configuration @EnableConfigurationProperties({AliPayProperties.class}) public class AliPayMsgConfig { @Autowired private IOperatorAuthService operatorAuthService; @Autowired private IOperatorUserService operatorUserService; @Autowired private IUserService userService; private AliPayProperties aliPay; public AliPayMsgConfig(AliPayProperties aliPay) { this.aliPay = aliPay; } @Bean public AlipayMsgClient alipayMsgClient() throws Exception { AlipayMsgClient alipayMsgClient = AlipayMsgClient.getInstance(aliPay.getAppId()); alipayMsgClient.setConnector("openchannel.alipay.com"); alipayMsgClient.setSecurityConfig(aliPay.getSignType(), aliPay.getAppPrivateKey(), aliPay.getAlipay_public_key()); alipayMsgClient.setCharset(aliPay.getChartSet()); alipayMsgClient.setMessageHandler(new MsgHandler() { /** * 客户端接收到消息后回调此方法 * @param msgApi 接收到的消息的消息api名 * @param msgId 接收到的消息的消息id * @param bizContent 接收到的消息的内容,json格式 */ @Override public void onMessage (String msgApi, String msgId, String bizContent) { System.err.println("消息对象"+msgApi); System.err.println("id"+msgId); System.err.println("内容"+bizContent); if (msgApi.equals("ant.merchant.expand.indirect.zft.passed")){ // 审核通过 JSONObject json = JSONObject.parseObject(bizContent); String smid = json.getString("smid"); String order_id = json.getString("order_id"); OperatorAuthAlipay orderNo = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>() .eq("orderNo", order_id)); if (orderNo!=null){ Integer operatorId = orderNo.getOperatorId(); OperatorUser operatorId1 = operatorUserService.getOne(new QueryWrapper<OperatorUser>() .eq("operatorId", operatorId)); if (operatorId1!=null){ operatorId1.setAlipayNum(smid); operatorId1.setAlipayAudit(2); } } }else if (msgApi.equals("ant.merchant.expand.indirect.zft.rejected")){ // 审核拒绝 JSONObject json = JSONObject.parseObject(bizContent); String reason = json.getString("reason"); String order_id = json.getString("order_id"); OperatorAuthAlipay orderNo = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>() .eq("orderNo", order_id)); if (orderNo!=null){ orderNo.setRefuseReason(reason); Integer operatorId = orderNo.getOperatorId(); OperatorUser operatorId1 = operatorUserService.getOne(new QueryWrapper<OperatorUser>() .eq("operatorId", operatorId)); if (operatorId1!=null){ operatorId1.setAlipayAudit(3); } } } } }); alipayMsgClient.connect(); return alipayMsgClient; } } cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/AliPayProperties.java
New file @@ -0,0 +1,38 @@ package com.dsh.guns.modular.system.api; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; @Data @ConfigurationProperties(prefix = "alipay") public class AliPayProperties { /** * 加签类型 */ private String signType = "RSA2"; /** * 应用id */ private String appId = "2021004105665036"; /** * 请求使用的编码格式,如utf-8,gbk,gb2312等 */ private String chartSet = "utf-8"; 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 alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥 /** * 应用公钥证书路径 */ private String appCertPublicKeyPath; /** * 支付宝公钥证书路径 */ private String aliPayCertPublicKeyPath; /** * 支付宝根证书路径 */ private String aliPayRootCertPath; } cloud-server-management/src/main/java/com/dsh/guns/modular/system/api/SaticScheduleTask.java
@@ -20,6 +20,7 @@ import com.dsh.guns.modular.system.service.IOperatorAuthService; import com.dsh.guns.modular.system.service.IOperatorUserService; import com.dsh.guns.modular.system.service.IUserService; import com.dsh.guns.modular.system.util.PayMoneyUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling; @@ -38,59 +39,62 @@ private IOperatorUserService operatorUserService; @Autowired private IUserService userService; @Autowired private PayMoneyUtil payMoneyUtil; 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 alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥 private String aliAppid = "2021004105665036";//支付宝appid // 一个小时执行一次 @Scheduled(fixedRate=600000) @Scheduled(fixedRate=60000) private void configureTasks() { List<OperatorAuthAlipay> list = operatorAuthService.list(new QueryWrapper<OperatorAuthAlipay>()); for (OperatorAuthAlipay operatorAuthAlipay : list) { System.err.println("执行定时任务时间: " + LocalDateTime.now()); AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "GBK", alipay_public_key, "RSA2"); AntMerchantExpandIndirectZftorderQueryRequest request = new AntMerchantExpandIndirectZftorderQueryRequest(); request.setBizContent("{" + " \"order_id\":\"" + operatorAuthAlipay.getOrderNo() + "\"," + " \"external_id\":\"" + operatorAuthAlipay.getOutBizNo() + "\"" + "}"); AntMerchantExpandIndirectZftorderQueryResponse response = null; try { response = alipayClient.execute(request); } catch (AlipayApiException e) { e.printStackTrace(); } if (response.isSuccess()) { System.out.println("调用成功"); JSONObject json = JSONObject.parseObject(response.getBody()); System.err.println(json); JSONObject sign = json.getJSONObject("ant_merchant_expand_indirect_zftorder_query_response"); JSONArray orders = sign.getJSONArray("orders"); JSONObject order = orders.getJSONObject(0); // 提取订单信息 String reason = order.getString("reason"); String smid = order.getString("smid"); String merchantName = order.getString("merchant_name"); String applyTime = order.getString("apply_time"); String externalId = order.getString("external_id"); String orderId = order.getString("order_id"); String applyType = order.getString("apply_type"); String status = order.getString("status"); // 打印订单信息 System.out.println("Reason: " + reason); System.out.println("Merchant Name: " + merchantName); System.out.println("Apply Time: " + applyTime); System.out.println("External ID: " + externalId); System.out.println("Order ID: " + orderId); System.out.println("Apply Type: " + applyType); System.out.println("Status: " + status); } else { System.out.println("调用失败"); } } // payMoneyUtil.getMessage(); // List<OperatorAuthAlipay> list = operatorAuthService.list(new QueryWrapper<OperatorAuthAlipay>()); // for (OperatorAuthAlipay operatorAuthAlipay : list) { // System.err.println("执行定时任务时间: " + LocalDateTime.now()); // AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", // aliAppid, // appPrivateKey, "json", "GBK", // alipay_public_key, // "RSA2"); // AntMerchantExpandIndirectZftorderQueryRequest request = new AntMerchantExpandIndirectZftorderQueryRequest(); // request.setBizContent("{" + // " \"order_id\":\"" + operatorAuthAlipay.getOrderNo() + "\"," + // " \"external_id\":\"" + operatorAuthAlipay.getOutBizNo() + "\"" + // "}"); // AntMerchantExpandIndirectZftorderQueryResponse response = null; // try { // response = alipayClient.execute(request); // } catch (AlipayApiException e) { // e.printStackTrace(); // } // if (response.isSuccess()) { // System.out.println("调用成功"); // JSONObject json = JSONObject.parseObject(response.getBody()); // System.err.println(json); // JSONObject sign = json.getJSONObject("ant_merchant_expand_indirect_zftorder_query_response"); // JSONArray orders = sign.getJSONArray("orders"); // JSONObject order = orders.getJSONObject(0); // // 提取订单信息 // String reason = order.getString("reason"); // String smid = order.getString("smid"); // String merchantName = order.getString("merchant_name"); // String applyTime = order.getString("apply_time"); // String externalId = order.getString("external_id"); // String orderId = order.getString("order_id"); // String applyType = order.getString("apply_type"); // String status = order.getString("status"); // // 打印订单信息 // System.out.println("Reason: " + reason); // System.out.println("Merchant Name: " + merchantName); // System.out.println("Apply Time: " + applyTime); // System.out.println("External ID: " + externalId); // System.out.println("Order ID: " + orderId); // System.out.println("Apply Type: " + applyType); // System.out.println("Status: " + status); // } else { // System.out.println("调用失败"); // } // } cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
@@ -507,6 +507,7 @@ String order_no = json1.getString("order_id"); System.err.println("订单号"+order_no); operatorAuth.setOrderNo(order_no); operatorAuth.setRefuseReason(""); operatorAuthService.saveOrUpdate(operatorAuth); Integer userId = operatorService.getById(operatorId).getUserId(); OperatorUser user = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("userId", userId)); @@ -517,6 +518,7 @@ }else{ user.setAlipayType(1); } operatorUserService.saveOrUpdate(user); } else { if (response.getCode().equals("40004")){ String subMsg = response.getSubMsg(); @@ -575,15 +577,10 @@ */ @RequestMapping(value = "/proportion") @ResponseBody public Object auth(Integer operatorIdOne ,String alipayProportion,String alipayNum,String wechatProportion, String wechatNum) { Integer id1 = operatorService.getOne(new QueryWrapper<TOperator>().eq("id", operatorIdOne)) .getUserId(); OperatorUser id = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("userId", id1)); public Object auth(Integer operatorIdOne ,String alipayProportion,String wechatProportion) { OperatorUser id = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("operatorId", operatorIdOne)); id.setAlipayProportion(alipayProportion); id.setWechatProportion(wechatProportion); id.setAlipayNum(alipayNum); id.setWechatNum(wechatNum); operatorUserService.updateById(id); return SUCCESS_TIP; } cloud-server-management/src/main/java/com/dsh/guns/modular/system/util/PayMoneyUtil.java
@@ -64,10 +64,15 @@ private IOperatorAuthService operatorAuthService; @Autowired private IOperatorUserService operatorUserService; /** * 处理直付通审核通过和拒绝消息 */ public void getMessage() { System.err.println("进入"); final AlipayMsgClient alipayMsgClient = AlipayMsgClient.getInstance(aliAppid); try { alipayMsgClient.setConnector(serverHost); cloud-server-management/src/main/webapp/WEB-INF/view/system/operator/OperatorUser_proportion.html
@@ -49,20 +49,14 @@ <input hidden id="id" value="${id}"> <div class="col-lg-6" style=""> <div class="form-group" > <label class="col-sm-3 control-label">*支付宝商户号:</label> <div class="col-sm-9"> <input style="width: 300px" class="form-control" id="alipayNum" value="${alipayNum}" placeholder="请输入" type="text"> </div> <label class="col-sm-3 control-label">*支付宝分账比例(%):</label> <div class="col-sm-9"> <input style="width: 300px" class="form-control" id="alipayProportion" value="${alipayProportion}" placeholder="请输入" type="number"> </div> </div> <div class="form-group" > <label class="col-sm-3 control-label">*微信商户号:</label> <div class="col-sm-9"> <input style="width: 300px" class="form-control" id="wechatNum" value="${wechatNum}" placeholder="请输入" type="text"> </div> <label class="col-sm-3 control-label">*微信分账比例(%):</label> <div class="col-sm-9"> <input style="width: 300px" class="form-control" id="wechatProportion" value="${wechatProportion}" placeholder="请输入" type="number"> cloud-server-management/src/main/webapp/static/modular/system/operatorUser/operatorUser.js
@@ -93,7 +93,6 @@ Feng.info("只能选择一个运营商商户设置分账比例!"); }else { if (this.check()) { var index = layer.open({ type: 2, title: "认证", @@ -109,23 +108,12 @@ TSite.commit = function(){ var alipayProportion = $("#alipayProportion").val(); var wechatProportion = $("#wechatProportion").val(); if($("#alipayNum").val()=='' ){ if($("#alipayProportion").val()=='' ){ Feng.info("请输入支付宝分账比例") return; } if($("#wechatNum").val()=='' ){ if($("#wechatProportion").val()=='' ){ Feng.info("请输入微信分账比例") return; } if (Number(alipayProportion)+Number(wechatProportion)!=100){ Feng.info("总比例应该是100%,当前比例:"+Number(Number(alipayProportion)+Number(wechatProportion))); return; } var ali = $("#alipayProportion").val() var wechat = $("#wechatProportion").val() if(Number(ali)+Number(wechat)!=100){ Feng.success("总比例需为100%!"); return; } //提交信息