From c560f1a14ae1fc468d90e50e6a32d805295875da Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 01 九月 2025 15:35:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0
---
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java | 1292 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 1,114 insertions(+), 178 deletions(-)
diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
index ad3be09..35dff86 100644
--- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
+++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/OperatorController.java
@@ -6,33 +6,52 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.*;
-import com.alipay.api.request.AlipayMerchantIndirectAuthorderCreateRequest;
-import com.alipay.api.request.AlipayMerchantIndirectAuthorderQuerystatusRequest;
import com.alipay.api.request.AntMerchantExpandIndirectImageUploadRequest;
-import com.alipay.api.response.AlipayMerchantIndirectAuthorderCreateResponse;
-import com.alipay.api.response.AlipayMerchantIndirectAuthorderQuerystatusResponse;
+import com.alipay.api.request.AntMerchantExpandIndirectZftCreateRequest;
import com.alipay.api.response.AntMerchantExpandIndirectImageUploadResponse;
+import com.alipay.api.response.AntMerchantExpandIndirectZftCreateResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.dsh.course.feignClient.account.model.Coach;
import com.dsh.guns.core.base.controller.BaseController;
import com.dsh.guns.core.common.constant.factory.PageFactory;
import com.dsh.guns.core.util.SinataUtil;
import com.dsh.guns.modular.system.controller.util.MD5;
+import com.dsh.guns.modular.system.controller.util.MD5AndKL;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.service.*;
+import com.dsh.guns.modular.system.util.HttpRequestUtil;
+import com.dsh.guns.modular.system.util.PayMoneyUtil;
import com.dsh.guns.modular.system.util.ResultUtil;
-import org.apache.poi.ss.formula.functions.T;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.binarywang.wxpay.v3.WechatPayUploadHttpPost;
+import com.wechat.pay.java.service.profitsharing.ProfitsharingService;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.http.client.methods.HttpPost;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
+import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.NoSuchPaddingException;
+import javax.security.cert.X509Certificate;
+import java.io.*;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -50,22 +69,37 @@
@Autowired
private TOperatorCityService operatorCityService;
@Autowired
+ private IOperatorAuthService operatorAuthService;
+ @Autowired
+ private IOperatorAuthWxService operatorAuthWxService;
+ @Autowired
private IOperatorUserService operatorUserService;
@Autowired
private IUserService userService;
@Autowired
private ICityService cityService;
@Autowired
- private IOperatorAuthService operatorAuthService;
+ private PayMoneyUtil payMoneyUtil;
+
+ @Autowired
+ private IStoreService storeService;
+ 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
+
/**
- * 根据运营商ID 获取运营商管理的省市
+ * 根据运营商id查询所有门店
*/
- @RequestMapping(value = "/getCityByOperatorId")
+ @RequestMapping("/getStores")
@ResponseBody
- public List<TOperatorCity> getCityByOperatorId(@RequestBody Integer operatorId) {
- return operatorCityService.list(new QueryWrapper<TOperatorCity>().eq("operatorId",operatorId));
+ public List<TStore> getStores(Integer id)
+ {
+// payMoneyUtil.getMessage();
+ return storeService.list(new QueryWrapper<TStore>()
+ .eq("operatorId",id)
+ .ne("state",3));
}
/**
@@ -91,6 +125,14 @@
List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
model.addAttribute("provinceList",list);
return PREFIX + "Operator_add.html";
+ }
+ @RequestMapping("/bindWx/{id}")
+ public String bindWx(Model model,@PathVariable("id") Integer id) {
+ TOperator operator = operatorService.getById(id);
+ model.addAttribute("id",id);
+ model.addAttribute("merchantNumber",operator.getMerchantNumber());
+ model.addAttribute("merchantNumberAli",operator.getMerchantNumberAli());
+ return PREFIX + "Operator_wx.html";
}
/**
* 跳转运营商编辑页面
@@ -142,61 +184,454 @@
List<Map<String,Object>> list = operatorService.listAll(page,userName,phone,type);
page.setRecords(list);
return super.packForBT(page);
+
}
+ private ProfitsharingService profitsharingService;
/**
- * 跳转运营商商户去认证页面
+ * 手动填入微信商户号
+ */
+ @RequestMapping(value = "/merchantNumberWx")
+ @ResponseBody
+ public Object listAll(Integer id, String merchantNumber,String merchantNumberAli) throws Exception {
+ TOperator byId = operatorService.getById(id);
+ byId.setMerchantNumber(merchantNumber);
+ byId.setMerchantNumberAli(merchantNumberAli);
+ operatorService.updateById(byId);
+ return SUCCESS_TIP;
+ }
+
+ /**
+ * 支付宝跳转运营商商户去认证页面
*/
@RequestMapping("/proportionAuth/{id}")
public String proportionAuth(Model model,@PathVariable("id") Integer id) {
model.addAttribute("id",id);
TOperator data = operatorService.getById(id);
+ User byId = userService.getById(data.getUserId());
+ model.addAttribute("user",byId);
List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
- model.addAttribute("provinceList",list);
+ model.addAttribute("list",list);
model.addAttribute("data",data);
+ OperatorAuthAlipay info = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>().eq("operatorId", id));
+ model.addAttribute("item",info);
+
+ if (info==null){
+ OperatorAuthAlipay operatorAuth = new OperatorAuthAlipay();
+ model.addAttribute("item",operatorAuth);
+ model.addAttribute("bodyType",0);
+ model.addAttribute("code",null);
+ model.addAttribute("reasons",null);
+ // 0不显示二维码
+ model.addAttribute("type",0);
+ }else{
+ model.addAttribute("bodyType",info.getBodyType());
+ model.addAttribute("accountType",info.getAccountType());
+ model.addAttribute("useType",info.getUseType());
+ model.addAttribute("cardType",info.getCardType());
+ model.addAttribute("reasons",info.getRefuseReason());
+// TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, info.getCityCode()));
+// List<TCity> district = cityService.list(new QueryWrapper<TCity>().eq("parent_id", one.getId()));
+// model.addAttribute("district",district);
+// if (info.getOrderStatus().equals("AUDIT_PASS")||info.getOrderStatus().equals("LEGAL_CONFIRM")||info.getOrderStatus().equals("CONTACT_CONFIRM")){
+// // 通过才展示二维码
+// model.addAttribute("type",1);
+// }else{
+// model.addAttribute("type",0);
+// }
+// model.addAttribute("code",info.getQrCode());
+// model.addAttribute("item",info);
+// model.addAttribute("bodyType",info.getBodyType());
+// if (info.getRefuseReason()!=null && (!info.getRefuseReason().equals(""))){
+// model.addAttribute("reasons",info.getRefuseReason());
+// }else{
+// model.addAttribute("reasons",null);
+// }
+
+
+ }
return PREFIX + "OperatorUser_proportionAuth.html";
+ }
+ /**
+ * 微信跳转运营商商户去认证页面
+ */
+ @RequestMapping("/proportionAuthWx/{id}")
+ public String proportionAuthWx(Model model,@PathVariable("id") Integer id) {
+ model.addAttribute("id",id);
+ TOperator data = operatorService.getById(id);
+ User byId = userService.getById(data.getUserId());
+ model.addAttribute("user",byId);
+ List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ model.addAttribute("list",list);
+ model.addAttribute("data",data);
+ OperatorAuthAlipay info = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>().eq("operatorId", id));
+ model.addAttribute("item",info);
+
+ if (info==null){
+ OperatorAuthAlipay operatorAuth = new OperatorAuthAlipay();
+ model.addAttribute("item",operatorAuth);
+ model.addAttribute("bodyType",0);
+ model.addAttribute("code",null);
+ model.addAttribute("reasons",null);
+ // 0不显示二维码
+ model.addAttribute("type",0);
+ }else{
+ model.addAttribute("bodyType",info.getBodyType());
+ model.addAttribute("accountType",info.getAccountType());
+ model.addAttribute("useType",info.getUseType());
+ model.addAttribute("cardType",info.getCardType());
+ model.addAttribute("reasons",info.getRefuseReason());
+// TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, info.getCityCode()));
+// List<TCity> district = cityService.list(new QueryWrapper<TCity>().eq("parent_id", one.getId()));
+// model.addAttribute("district",district);
+// if (info.getOrderStatus().equals("AUDIT_PASS")||info.getOrderStatus().equals("LEGAL_CONFIRM")||info.getOrderStatus().equals("CONTACT_CONFIRM")){
+// // 通过才展示二维码
+// model.addAttribute("type",1);
+// }else{
+// model.addAttribute("type",0);
+// }
+// model.addAttribute("code",info.getQrCode());
+// model.addAttribute("item",info);
+// model.addAttribute("bodyType",info.getBodyType());
+// if (info.getRefuseReason()!=null && (!info.getRefuseReason().equals(""))){
+// model.addAttribute("reasons",info.getRefuseReason());
+// }else{
+// model.addAttribute("reasons",null);
+// }
+
+
+ }
+ return PREFIX + "OperatorUser_proportionAuthWX.html";
+ }
+ /**
+ * 支付宝跳转运营商商户去认证页面 详情页面
+ */
+ @RequestMapping("/proportionAuth1/{id}")
+ public String proportionAuth1(Model model,@PathVariable("id") Integer id) {
+ model.addAttribute("id",id);
+ TOperator data = operatorService.getById(id);
+ User byId = userService.getById(data.getUserId());
+ model.addAttribute("user",byId);
+ OperatorUser operatorId = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
+ .eq("operatorId", data.getId()));
+
+ model.addAttribute("data",data);
+ String state="";
+ switch (operatorId.getAlipayAudit()){
+ case 0:
+ state="未认证";
+ break;
+ case 1:
+ state="待审核";
+ break;
+ case 2:
+ state="已通过";
+ break;
+ case 3:
+ state="已拒绝";
+ break;
+ }
+ model.addAttribute("state",state);
+ OperatorAuthAlipay info = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>()
+ .eq("operatorId", id));
+ model.addAttribute("item",info);
+ List<TCity> list1 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ model.addAttribute("list1",list1);
+ if (StringUtils.hasLength(info.getProvince())){
+ // 获取银行开户省
+ List<TCity> list4 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ // 获取银行开户市
+ TCity city = cityService.getOne(new QueryWrapper<TCity>().eq("code", info.getProvinceCode()));
+ List<TCity> list5 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, city.getId()));
+ model.addAttribute("list4",list4);
+ model.addAttribute("list5",list5);
+ }else{
+ List<TCity> list6 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ model.addAttribute("list4",list6);
+ List<TCity> list5 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 1));
+ model.addAttribute("list5",list5);
+ }
+ model.addAttribute("bodyType",info.getBodyType());
+ model.addAttribute("accountType",info.getAccountType());
+ model.addAttribute("useType",info.getUseType());
+ model.addAttribute("cardType",info.getCardType());
+ model.addAttribute("reasons",info.getRefuseReason());
+
+
+
+// TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, info.getCityCode()));
+// List<TCity> district = cityService.list(new QueryWrapper<TCity>().eq("parent_id", one.getId()));
+// model.addAttribute("district",district);
+// if (info.getOrderStatus().equals("AUDIT_PASS")||info.getOrderStatus().equals("LEGAL_CONFIRM")||info.getOrderStatus().equals("CONTACT_CONFIRM")){
+// // 通过才展示二维码
+// model.addAttribute("type",1);
+// }else{
+// model.addAttribute("type",0);
+// }
+// model.addAttribute("code",info.getQrCode());
+// model.addAttribute("item",info);
+// model.addAttribute("bodyType",info.getBodyType());
+// if (info.getRefuseReason()!=null && (!info.getRefuseReason().equals(""))){
+// model.addAttribute("reasons",info.getRefuseReason());
+// }else{
+// model.addAttribute("reasons",null);
+// }
+
+ return PREFIX + "OperatorUser_proportionAuth_info.html";
+ }
+ /**
+ * 微信跳转运营商商户去认证页面 详情页面
+ */
+ @RequestMapping("/proportionAuth1Wx/{id}")
+ public String proportionAuth1Wx(Model model,@PathVariable("id") Integer id) {
+ model.addAttribute("id",id);
+ TOperator data = operatorService.getById(id);
+ User byId = userService.getById(data.getUserId());
+ model.addAttribute("user",byId);
+ OperatorUser operatorId = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
+ .eq("operatorId", data.getId()));
+ model.addAttribute("data",data);
+ OperatorAuth info = operatorAuthWxService.getOne(new QueryWrapper<OperatorAuth>()
+ .eq("operatorId", id));
+ model.addAttribute("item",info);
+ List<TCity> list1 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ model.addAttribute("list1",list1);
+ if (StringUtils.hasLength(info.getProvince())){
+ // 获取银行开户省
+ List<TCity> list4 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ // 获取银行开户市
+ TCity city = cityService.getOne(new QueryWrapper<TCity>().eq("code", info.getProvinceCode()));
+ List<TCity> list5 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, city.getId()));
+ model.addAttribute("list4",list4);
+ model.addAttribute("list5",list5);
+ }else{
+ List<TCity> list6 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0));
+ model.addAttribute("list4",list6);
+ List<TCity> list5 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 1));
+ model.addAttribute("list5",list5);
+ }
+ model.addAttribute("bodyType",info.getBodyType());
+ model.addAttribute("accountType",info.getAccountType());
+ model.addAttribute("useType",info.getAccountType());
+ model.addAttribute("cardType","");
+ model.addAttribute("reasons",info.getRefuseReason());
+ // 【申请状态】 枚举值:
+ //CHECKING:资料校验中
+ //ACCOUNT_NEED_VERIFY:待账户验证
+ //AUDITING:审核中
+ //REJECTED:已驳回
+ //NEED_SIGN:待签约
+ //FINISH:完成
+ //FROZEN:已冻结
+ //CANCELED:已作废
+ switch (info.getApplymentState()){
+ case "CHECKING":
+ model.addAttribute("applymentState","资料校验中");
+ break;
+ case "ACCOUNT_NEED_VERIFY":
+ model.addAttribute("applymentState","待账户验证");
+ break;
+ case "AUDITING":
+ model.addAttribute("applymentState","审核中");
+ break;
+ case "REJECTED":
+ model.addAttribute("applymentState","已驳回");
+ break;
+ case "NEED_SIGN":
+ model.addAttribute("applymentState","待签约");
+ break;
+ case "FINISH":
+ model.addAttribute("applymentState","完成");
+ break;
+ case "FROZEN":
+ model.addAttribute("applymentState","已冻结");
+ break;
+ case "CANCELED":
+ model.addAttribute("applymentState","已作废");
+ break;
+ }
+ if (info.getSignState()!=null){
+ switch (info.getApplymentState()){
+ case "CHECKING":
+ model.addAttribute("applymentState","资料校验中");
+ break;
+ case "ACCOUNT_NEED_VERIFY":
+ model.addAttribute("applymentState","待账户验证");
+ break;
+ case "AUDITING":
+ model.addAttribute("applymentState","审核中");
+ break;
+ case "REJECTED":
+ model.addAttribute("applymentState","已驳回");
+ break;
+ case "NEED_SIGN":
+ model.addAttribute("applymentState","待签约");
+ break;
+ case "FINISH":
+ model.addAttribute("applymentState","完成");
+ break;
+ case "FROZEN":
+ model.addAttribute("applymentState","已冻结");
+ break;
+ case "CANCELED":
+ model.addAttribute("applymentState","已作废");
+ break;
+ }
+ }
+
+ model.addAttribute("state",info.getApplymentState());
+ if (info.getSignState() == null){
+ model.addAttribute("signState",0);
+
+ }else{
+ model.addAttribute("signState",info.getSignState());
+
+ }
+ // todo 查询申请单状态
+ model.addAttribute("accountName",info.getSignState());
+ model.addAttribute("accountNo",info.getSignState());
+ model.addAttribute("payAmount",info.getSignState());
+ model.addAttribute("destinationAccountNumber",info.getSignState());
+ model.addAttribute("destinationAccountName",info.getSignState());
+ model.addAttribute("destinationAccountBank",info.getSignState());
+ model.addAttribute("city",info.getSignState());
+ model.addAttribute("remark",info.getSignState());
+ model.addAttribute("deadline",info.getSignState());
+ model.addAttribute("signState",info.getSignState());
+
+// TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, info.getCityCode()));
+// List<TCity> district = cityService.list(new QueryWrapper<TCity>().eq("parent_id", one.getId()));
+// model.addAttribute("district",district);
+// if (info.getOrderStatus().equals("AUDIT_PASS")||info.getOrderStatus().equals("LEGAL_CONFIRM")||info.getOrderStatus().equals("CONTACT_CONFIRM")){
+// // 通过才展示二维码
+// model.addAttribute("type",1);
+// }else{
+// model.addAttribute("type",0);
+// }
+// model.addAttribute("code",info.getQrCode());
+// model.addAttribute("item",info);
+// model.addAttribute("bodyType",info.getBodyType());
+// if (info.getRefuseReason()!=null && (!info.getRefuseReason().equals(""))){
+// model.addAttribute("reasons",info.getRefuseReason());
+// }else{
+// model.addAttribute("reasons",null);
+// }
+
+ return PREFIX + "OperatorUser_proportionAuth_infoWX.html";
+ }
+ /**
+ * 根据所选市 获取区
+ */
+ @RequestMapping(value = "/getDistrict")
+ @ResponseBody
+ public Object onChange(String cityCode) {
+ try {
+ TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, cityCode));
+ List<TCity> parent_id = cityService.list(new QueryWrapper<TCity>().eq("parent_id", one.getId()));
+ return parent_id;
+ }catch (Exception e){
+ e.printStackTrace();
+ return ERROR;
+ }
+ }
+ // public static void main(String[] args) {
+// // 调用支付宝接口 通过银行卡号获取银行信息
+// String url = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&" +
+// "cardNo=6217003800041315031&cardBinCheck=true";
+// HashMap<String, String> hashMap = new HashMap<>();
+// String result = HttpRequestUtil.postRequest(url,hashMap);
+// System.err.println(result);
+// JSONObject json = JSONObject.parseObject(result);
+// String bank = json.getString("bank");
+// String cardType = json.getString("cardType");
+// System.err.println(bank);
+// System.err.println(cardType);
+//
+// }
+ public static String rsaEncryptOAEP(String message, X509Certificate certificate)
+ throws IllegalBlockSizeException, IOException {
+ try {
+ Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-1AndMGF1Padding");
+ cipher.init(Cipher.ENCRYPT_MODE, certificate.getPublicKey());
+ byte[] data = message.getBytes("utf-8");
+ byte[] cipherdata = cipher.doFinal(data);
+ return Base64.getEncoder().encodeToString(cipherdata);
+ } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
+ throw new RuntimeException("当前Java环境不支持RSA v1.5/OAEP", e);
+ } catch (InvalidKeyException e) {
+ throw new IllegalArgumentException("无效的证书", e);
+ } catch (IllegalBlockSizeException | BadPaddingException e) {
+ throw new IllegalBlockSizeException("加密原串的长度不能超过214字节");
+ }
}
/**
- * 商户认证提交
+ * 微信商户认证提交
*/
- @RequestMapping(value = "/auth")
+ @RequestMapping(value = "/wxAuth")
@ResponseBody
- public Object auth(String beneficiaryEnd,String businessEnd,String legalEnd, String name,String phone,String number,Integer operatorId,String bodyType,Integer type,String businessName,String businessNumber,
- String legalRepresentative,String registerAddress,String businessTerm,String businessPicture,
- String legalPerson,String legalNumber,String legalPhone,String legalEmail,String legalTerm,
- String legalAddress,String legalFront,String legalBack,Integer accountType,String bank,
- String accountName,String province,String provinceCode,String city,String cityCode,
- String bankName,String bankNumber,String isBeneficiary,String beneficiary,String beneficiaryPhone,
- String beneficiaryNumber,String beneficiaryAddress,String beneficiaryTerm,String beneficiaryFront,String beneficiaryBack,
- String remark) {
- UUID uuid = UUID.randomUUID();
- String numericUUID = uuid.toString().replaceAll("-", "");
+ public Object wxAuth(Integer operatorId,String bodyType,String businessName,String businessNumber,String companyAddress,
+ String aliasName,
+ String license,String legalPhone,
+ String legalEmail,
+ String legalPerson,String legalAddress,
+ String IDCardTime,String IDCardEnd,String tradeTime,String endTime,
+ String leagleNumber,String legalFront,String legalBack,
+ String bankCard,String bankCardTwo,Integer useType,String bank,String bankName,
+ String accountName,String provinceCode,String province,String cityCode,String city,
+ String isBenefits,
+ String benefitsName,
+ String benefitsFront,
+ String benefitsBack,
+ String benefitsNumber,
+ String benefitsStartTime,
+ String benefitsEndTime,
+ String benefitsAddress
+ ) {
+ OperatorAuth operatorId1 = operatorAuthWxService.getOne(new QueryWrapper<OperatorAuth>()
+ .eq("operatorId", operatorId));
+ TOperator byId = operatorService.getById(operatorId);
+ Integer userId1 = byId.getUserId();
+ OperatorUser userId2 = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
+ .eq("userId", userId1));
+ userId2.setWechatAudit(1);
+ // 2是企业 4个体
+ if (bodyType.equals("2")){
+ userId2.setWechatType(2);
+ }else{
+ userId2.setWechatType(4);
+ }
+ operatorUserService.updateById(userId2);
+ if (null == endTime || "".equals(endTime)){
+ endTime = "长期";
+ }
+ if (null == IDCardEnd || "".equals(IDCardEnd)){
+ IDCardEnd = "长期";
+ }
OperatorAuth operatorAuth = new OperatorAuth();
- operatorAuth.setName(name);
- operatorAuth.setPhone(phone);
- operatorAuth.setNumber(number);
- operatorAuth.setBusinessEnd(businessEnd);
- operatorAuth.setLegalEnd(legalEnd);
- operatorAuth.setBeneficiaryEnd(beneficiaryEnd);
+
+
operatorAuth.setOperatorId(operatorId);
operatorAuth.setBodyType(bodyType);
- operatorAuth.setType(type);
+ operatorAuth.setAliasName(aliasName);
operatorAuth.setBusinessName(businessName);
+ operatorAuth.setAccountType(useType);
operatorAuth.setBusinessNumber(businessNumber);
- operatorAuth.setLegalRepresentative(legalRepresentative);
- operatorAuth.setRegisterAddress(registerAddress);
- operatorAuth.setBusinessTerm(businessTerm);
- operatorAuth.setOutBizNo(numericUUID);
- operatorAuth.setBusinessPicture(businessPicture);
+ operatorAuth.setLegalRepresentative(legalPerson);
+ operatorAuth.setRegisterAddress(companyAddress);
+ operatorAuth.setBusinessTerm(tradeTime);
+ operatorAuth.setBusinessEnd(endTime);
operatorAuth.setLegalPerson(legalPerson);
- operatorAuth.setLeagleNumber(legalNumber);
- operatorAuth.setLegalPhone(legalPhone);
+ operatorAuth.setLeagleNumber(leagleNumber);
+ operatorAuth.setLegalTerm(IDCardTime);
+ operatorAuth.setLegalEnd(IDCardEnd);
operatorAuth.setLegalEmail(legalEmail);
- operatorAuth.setLegalTerm(legalTerm);
operatorAuth.setLegalAddress(legalAddress);
+ operatorAuth.setBusinessPicture(license);
operatorAuth.setLegalFront(legalFront);
operatorAuth.setLegalBack(legalBack);
- operatorAuth.setAccountType(accountType);
+ if (!StringUtils.hasLength(license))operatorAuth.setBusinessPicture(null);
+ if (!StringUtils.hasLength(legalFront))operatorAuth.setLegalFront(null);
+ if (!StringUtils.hasLength(legalBack))operatorAuth.setLegalBack(null);
operatorAuth.setBank(bank);
operatorAuth.setAccountName(accountName);
operatorAuth.setProvince(province);
@@ -204,129 +639,450 @@
operatorAuth.setCity(city);
operatorAuth.setCityCode(cityCode);
operatorAuth.setBankName(bankName);
- operatorAuth.setBankNumber(bankNumber);
+ operatorAuth.setBankNumber(bankCard);
operatorAuth.setAuditState(0);
- operatorAuth.setIsBeneficiary(isBeneficiary);
- operatorAuth.setBeneficiary(beneficiary);
- operatorAuth.setBeneficiaryNumber(beneficiaryNumber);
- operatorAuth.setBeneficiaryAddress(beneficiaryAddress);
- operatorAuth.setBeneficiaryTerm(beneficiaryTerm);
- operatorAuth.setBeneficiaryFront(beneficiaryFront);
- operatorAuth.setBeneficiaryBack(beneficiaryBack);
+ operatorAuth.setName(legalPerson);
+ operatorAuth.setLegalPhone(legalPhone);
+ operatorAuth.setPhone(legalPhone);
+ operatorAuth.setNumber(leagleNumber);
+ operatorAuth.setBankCardTwo(bankCardTwo);
+ operatorAuth.setIsBenefits(isBenefits);
+
+ if (isBenefits.equals("true")){
+ operatorAuth.setBenefitsName(legalPerson);
+ operatorAuth.setBenefitsFront(legalFront);
+ operatorAuth.setBenefitsBack(legalBack);
+ operatorAuth.setBenefitsNumber(leagleNumber);
+ operatorAuth.setBenefitsStartTime(IDCardTime);
+ operatorAuth.setBenefitsEndTime(IDCardEnd);
+ operatorAuth.setBenefitsAddress(legalAddress);
+ benefitsName = legalPerson;
+ benefitsFront = legalFront;
+ benefitsBack =legalBack;
+ benefitsNumber =leagleNumber;
+ benefitsStartTime =IDCardTime;
+ benefitsEndTime =IDCardEnd;
+ benefitsAddress = legalAddress;
+ }
+ LocalDateTime currentDateTime = LocalDateTime.now();
+ // 格式化日期和时间信息
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+ String formattedDateTime = currentDateTime.format(formatter);
+ // 生成随机数,填充剩余位数
+ Random random = new Random();
+ StringBuilder randomPart = new StringBuilder();
+ for (int i = 0; i < 3; i++) {
+ // 大写字母
+ randomPart.append((char) (random.nextInt(26) + 'A'));
+ }
+ // 组合业务申请编号 若申请单被驳回,可填写相同的“业务申请编号”,即可覆盖修改原申请单信息 。
+ String orderNumber = formattedDateTime + randomPart;
+ if (operatorId1 == null){
+ operatorAuth.setOutBizNo(orderNumber);
+ operatorAuth.setAuditState(1);
+ operatorAuth.setApplymentState("CHECKING");
+ operatorAuthWxService.save(operatorAuth);
+ }else{
+ operatorAuth.setId(operatorId1.getId());
+ operatorAuth.setBenefitsFront(operatorId1.getLegalFront());
+ operatorAuth.setBenefitsBack(operatorId1.getLegalBack());
+ BeanUtils.copyProperties(operatorAuth,operatorId1);
+ operatorId1.setAuditState(1);
+ operatorId1.setApplymentState("CHECKING");
+ operatorAuthWxService.updateById(operatorId1);
+ }
+ String param="{"+
+ "\"out_request_no\" :"+ "\""+orderNumber+"\""+","+
+ " \"organization_type\" :"+"\""+bodyType+"\""+","+
+ " \"finance_institution\" : false,\n" +
+ " \"business_license_info\" : {\n" +
+ // 主体为“个体工商户/企业”时,不填。
+// "cert_type:" + "CERTIFICATE_TYPE_2388,"+
+ " \"business_license_copy\" :"+ "\""+license+"\""+","+
+ " \"business_license_number\" : "+"\""+businessNumber+"\""+","+
+ " \"merchant_name\" : "+ "\""+businessName+"\""+","+
+ " \"legal_person\" : "+ "\""+legalPerson+"\""+","+
+ "\"company_address\" :"+ "\""+companyAddress+"\""+","+
+ " \"business_time\" : \"[\\\\\\\""+tradeTime+"\\\\\\\",\\\\\\\""+endTime+"\\\\\\\"]\"\n" +
+ " },\n" +
+// "finance_institution_info:" +" {"+
+// "finance_type:" + "BANK_AGENT,"+
+// "finance_license_pics:" +"["+
+// "example_finance_license_pics"+
+// "]},"+
+// "id_holder_type:" + "LEGAL,"+
+ " \"id_doc_type\" : \"IDENTIFICATION_TYPE_MAINLAND_IDCARD\",\n" +
+// "authorize_letter_copy:" + "47ZC6GC-vnrbEny_Ie_An5-tCpqxucuxi-vByf3Gjm7KEIUv0OF4wFNIO4kqg05InE4d2I6_H7I4,"+
+ " \"id_card_info\" : {\n" +
+ " \"id_card_copy\" : "+ "\""+legalFront+"\""+","+
+ " \"id_card_national\" : "+ "\""+legalBack+"\""+","+
+ " \"id_card_name\" : "+ "\""+legalPerson+"\""+","+
+ " \"id_card_number\" : "+ "\""+leagleNumber+"\""+","+
+ " \"id_card_address\" : "+ "\""+legalAddress+"\""+","+
+ " \"id_card_valid_time_begin\" : "+ "\""+IDCardTime+"\""+","+
+ " \"id_card_valid_time\" : "+ "\""+IDCardEnd+"\""+","+
+// "id_doc_info:" +
+// "{id_doc_name:" + "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ,"+
+// "id_doc_number:" + "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ,"+
+// "id_doc_copy:" + "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4,"+
+// "id_doc_copy_back:" + "47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4,"+
+// "id_doc_address:" + "jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ,"+
+// "doc_period_begin:" + "2019-06-06,"+
+// "doc_period_end:" + "2020-01-02},"+
+
+ " \"owner\" : true,\n" +
+ " \"account_info\" : {\n" +
+ " \"bank_account_type\" : "+ "\""+useType+"\""+","+
+ " \"account_bank\" : "+ "\""+bank+"\""+","+
+ " \"account_name\" : "+ "\""+accountName+"\""+","+
+ " \"bank_address_code\" :"+ "\""+cityCode+"\""+","+
+ " \"bank_branch_id\" : "+ "\""+bankCardTwo+"\""+","+
+ " \"bank_name\" : "+ "\""+bankName+"\""+","+
+ " \"account_number\" : "+ "\""+bankCard+"\""+","+
+ " \"contact_info\" : {\n" +
+ " \"contact_type\" : \"65\",\n" +
+ " \"contact_name\" :"+ "\""+legalPerson+"\""+","+
+ " \"contact_id_doc_type\" : \"IDENTIFICATION_TYPE_MAINLAND_IDCARD\",\n" +
+ " \"contact_id_card_number\" : "+ "\""+leagleNumber+"\""+","+
+ " \"contact_id_doc_copy\" : "+ "\""+legalFront+"\""+","+
+ " \"contact_id_doc_copy_back\" :"+ "\""+legalBack+"\""+","+
+// "contact_id_doc_period_begin:"+ "2019-06-06,"+
+// "contact_id_doc_period_end:" + "2026-06-06,"+
+// "business_authorization_letter:" + "47ZC6GC-vnrbEny_Ie_An5-tCpqxucuxi-vByf3Gjm7KEIUv0OF4wFNIO4kqg05InE4d2I6_H7I4,"+
+ " \"mobile_phone\" : "+ "\""+legalPhone+"\""+","+
+ " \"contact_email\" : "+ "\""+legalEmail+"\""+
+ " },\n" +
+ " \"sales_scene_info\" : {\n" +
+ " \"store_name\" : \"爱烧烤\",\n" +
+ " \"store_url\" : \"http://www.qq.com\",\n" +
+ " \"store_qr_code\" : \"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\",\n" +
+ " \"mini_program_sub_appid\" : \"wxa123344545577\"\n" +
+ " },\n" +
+ " \"settlement_info\" : {\n" ;
+ if (Integer.parseInt(bodyType) == 4){
+ param = param+" \"settlement_id\" : 802,\n" +
+ " \"qualification_type\" : \"休闲娱乐/旅游服务\"\n" +" },\n" ;
+ }else{
+ param = param+" \"settlement_id\" : 800,\n" +
+ " \"qualification_type\" : \"休闲娱乐/旅游服务\"\n" +" },\n" ;
+ }
+ param+= " \"merchant_shortname\" : "+ "\""+aliasName+"\""+
+
+// "qualifications:" + "[\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\",\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\"],"+
+// "business_addition_pics:" + "[\"jTpGmxUX3FBWVQ5NJTZvlKX_gdU4cRz7z5NxpnFuAxhBTEO_PvWkfSCJ3zVIn001D8daLC-ehEuo0BJqRTvDujqhThn4ReFxikqJ5YW6zFQ\",\"47ZC6GC-vnrbEny__Ie_An5-tCpqxucuxi-vByf3Gjm7KE53JXvGy9tqZm2XAUf-4KGprrKhpVBDIUv0OF4wFNIO4kqg05InE4d2I6_H7I4\"],"+
+// "business_addition_desc:" + "特殊情况,说明原因,"+
+// "ubo_info_list:"+ "[{"+
+ "\"ubo_info_list\" : [\n" +
+ " {\n" +
+ " \"ubo_id_doc_type\" : \"IDENTIFICATION_TYPE_MAINLAND_IDCARD\",\n" +
+ " \"ubo_id_doc_copy\" : "+ "\""+benefitsFront+"\""+
+ " \"ubo_id_doc_copy_back\" : "+ "\""+benefitsBack+"\""+
+ " \"ubo_id_doc_name\" : "+ "\""+benefitsName+"\""+
+ " \"ubo_id_doc_number\" : "+ "\""+benefitsNumber+"\""+
+ " \"ubo_id_doc_address\" : "+ "\""+benefitsAddress+"\""+
+ " \"ubo_id_doc_period_begin\" : "+ "\""+benefitsStartTime+"\""+
+ " \"ubo_id_doc_period_end\" : "+ "\""+benefitsEndTime+"\""+
+ " }\n" +
+ " ]"+
+ " }\n"+
+ " }\n"+
+ " }\n";
+
+
+ // 使用 Jackson 解析 JSON
+ ObjectMapper objectMapper = new ObjectMapper();
+ try {
+ // 将 JSON 字符串解析为 Map
+ Map<String, Object> map = objectMapper.readValue(param, Map.class);
+
+ // 输出 Map 中的内容
+ for (Map.Entry<String, Object> entry : map.entrySet()) {
+ System.out.println(entry.getKey() + ": " + entry.getValue());
+ }
+ System.err.println(map);
+ String s = HttpRequestUtil.postRequest1("https://api.mch.weixin.qq.com/v3/ecommerce/applyments/", map);
+ System.err.println("返回结果:"+s);
+ JSONObject jsonObject = JSON.parseObject(s);
+ String string = jsonObject.getString("out_request_no");
+ // 获取业务申请编号 后续用该字段查询申请状态
+ operatorAuth.setOrderNo(string);
+ System.err.println(jsonObject);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ System.err.println(param);
+
+ return SUCCESS_TIP;
+ }
+
+ /**
+ * 支付宝商户认证提交
+ */
+ @RequestMapping(value = "/auth")
+ @ResponseBody
+ public Object auth(Integer operatorId,String bodyType,String businessName,String aliasName,String businessNumber,
+ String license,String name,String phone,String shopProvinceCode,String shopProvince,String shopCityCode,
+ String shopCity, String shopDistrictCode,String shopDistrict,String registerAddress,String legalPerson,
+ String leagleNumber,String legalFront,String legalBack,String accountType,String alipayAccount,
+ String bankCard,String useType,String cardType,String bankName,String bankNameTwo,
+ String accountName,String provinceCode,String province,String cityCode,String city,String zfbAccount,
+ String iqImage) {
+ UUID uuid = UUID.randomUUID();
+ // 通过运营商id查询
+ TOperator byId = operatorService.getById(operatorId);
+ Integer userId1 = byId.getUserId();
+ OperatorUser userId2 = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
+ .eq("userId", userId1));
+ userId2.setAlipayAudit(1);
+ // 01是企业
+ if (bodyType.equals("01")){
+ userId2.setAlipayType(2);
+ }else{
+ userId2.setAlipayType(1);
+ }
+ operatorUserService.saveOrUpdate(userId2);
+ OperatorAuthAlipay data = operatorAuthService.getOne(new QueryWrapper<OperatorAuthAlipay>().eq("operatorId", operatorId));
+ // 调用支付宝接口 通过银行卡号获取银行信息
+ String url = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&" +
+ "cardNo="+bankCard+"&cardBinCheck=true";
+ HashMap<String, String> hashMap = new HashMap<>();
+ String result = HttpRequestUtil.postRequest(url,hashMap);
+ System.err.println(result);
+ JSONObject json2 = JSONObject.parseObject(result);
+ String bank = json2.getString("bank");
+ String cardType1 = json2.getString("cardType");
+ // 根据银行卡号查询所属银行
+ String group=bank;
+// if(StringUtils.hasLength(bankName)){
+// Pattern pattern = Pattern.compile(".*[\\u4e00-\\u9fa5]+"); // 只保留汉字部分
+// Matcher matcher = pattern.matcher(bankName);
+// group = matcher.group();
+// if (matcher.find()) {
+// System.out.println("银行名称简写为:" + matcher.group());
+// } else {
+// System.out.println("无法获取到银行名称简写!");
+// return 5007;
+// }
+// }
+
+ OperatorAuthAlipay operatorAuth = new OperatorAuthAlipay();
+ if (data!=null){
+ operatorAuth.setId(data.getId());
+ if(legalFront==null || legalFront.equals("")){
+ legalFront = data.getLegalFront();
+ operatorAuth.setLegalFront(data.getLegalFront());
+ }
+ if(legalBack==null || legalBack.equals("")){
+ legalBack = data.getLegalBack();
+ operatorAuth.setLegalBack(data.getLegalBack());
+ }
+ if(iqImage==null || iqImage.equals("")){
+ iqImage = data.getIqImage();
+ operatorAuth.setIqImage(data.getIqImage());
+ }
+
+ if(license==null || license.equals("")){
+ license = data.getCertImage();
+ operatorAuth.setCertImage(data.getCertImage());
+ }
+ }else{
+ operatorAuth.setLegalFront(legalFront);
+ operatorAuth.setLegalBack(legalBack);
+ operatorAuth.setIqImage(iqImage);
+ operatorAuth.setCertImage(license);
+ if(license==null || license.equals("")){
+ // 未上传营业执照
+ return 5001;
+ }
+ if(legalFront==null || legalFront.equals("")){
+ // 未上传法人身份证正面照
+ return 5002;
+ }
+ if(legalBack==null || legalBack.equals("")){
+ // 未上传法人身份证背面照
+ return 5003;
+ }
+ }
+ String numericUUID = uuid.toString().replaceAll("-", "");
+ operatorAuth.setOutBizNo(numericUUID);
+ operatorAuth.setOperatorId(operatorId);
+ operatorAuth.setRegisterAddress(registerAddress);
+ operatorAuth.setAliasName(aliasName);
+ operatorAuth.setBodyType(bodyType);
+ operatorAuth.setName(name);
+ operatorAuth.setPhone(phone);
+ operatorAuth.setBusinessName(businessName);
+ operatorAuth.setBusinessNumber(businessNumber);
+ operatorAuth.setCertImage(license);
+ operatorAuth.setLegalPerson(legalPerson);
+ operatorAuth.setLegalFront(legalFront);
+ operatorAuth.setLegalBack(legalBack);
+ operatorAuth.setLeagleNumber(leagleNumber);
+ operatorAuth.setAccountType(accountType);
+ operatorAuth.setBankName(bankName);
+ operatorAuth.setAccountName(accountName);
+ operatorAuth.setBankCard(bankCard);
+ operatorAuth.setProvince(province);
+ operatorAuth.setProvinceCode(provinceCode);
+ operatorAuth.setCity(city);
+ operatorAuth.setCityCode(cityCode);
+ operatorAuth.setShopCity(shopCity);
+ operatorAuth.setShopProvince(shopProvince);
+ operatorAuth.setShopProvinceCode(shopProvinceCode);
+ operatorAuth.setShopCityCode(shopCityCode);
+ if(StringUtils.hasLength(province)&& province.equals("请选择省")){
+ operatorAuth.setProvince(null);
+ }
+ if(StringUtils.hasLength(city)&& province.equals("请选择市")){
+ operatorAuth.setCity(null);
+ }
+ operatorAuth.setProvince(province);
+ operatorAuth.setProvinceCode(provinceCode);
+ operatorAuth.setShopDistrict(shopDistrict);
+ operatorAuth.setShopDistrictCode(shopDistrictCode);
+ operatorAuth.setAlipayAccount(alipayAccount);
+ operatorAuth.setUseType(useType);
+ operatorAuth.setCardType(cardType);
+ operatorAuth.setBankNameTwo(bankNameTwo);
+ operatorAuth.setAuditState(0);
operatorAuth.setRefuseReason("");
- operatorAuth.setRemark(remark);
-
-
+ operatorAuth.setZfbAccount(zfbAccount);
// 将图片上传至阿里存储
// 营业执照
- String string = uploadImg(businessPicture).toString();
+ String string = uploadImg(license).toString();
// 法人身份证正面照
- legalFront = uploadImg(legalFront).toString();
+ legalFront = uploadImg(legalFront).toString();
// 法人身份证背面照
- legalBack = uploadImg(legalBack).toString();
-
- if (bodyType.equals("ENTERPRISE")){
- // 受益人身份证正面照
- beneficiaryFront=uploadImg(beneficiaryFront).toString();
- // 受益人身份证背面照
- beneficiaryBack=uploadImg(beneficiaryBack).toString();
- }
-
-
- //第二步:提交申请单
- AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","2021004123692417",
- "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDe188UHA8lR8CjG6KeKIYjYw6UfpJOl7nyklpiZKfbJ1q70D+LEdEZbWrzZ2eSwqeD+7B/ZV8Hyum9vrU6FPbgc6q/vy73ji0o1AhQP0GPPtcnNaAP9IppwchTSEjvODKMHSotB64LSBuFLgtAGSAJ6nHPXlEcyV5Y4Dev/E1JD3b9N2uTXilW5zZ2o1IxwXBIxuU0Tw7wHXUjcaXbpGuQUGIq54fzsbqP4TjSVoa8S41FhbtP9n61NulUtGFRfyHxpo/kj4cx3o6P4s+PBo/T2DlaMkpI6cRx0rfjL1ZkXrDJLYcCokUKxiJ/trrGjdYFUz6r2TGe1kAnjehkW+TTAgMBAAECggEAWMKtAN2MStUhrdY8F7Mcesvh6tPfgt58elpBFh/xnCE4ysZQCRy3pOEoUHtHjfVqs+90hcni6D+yipmDpfbjvtNTl7yXAJPo+PI7vXr0qhHlsQBzGOfWmflNyZ5pLp+7woN7YSRF9shp7cpBQO7BDDIN0wNGW6j5o3zrsXVVc1uu5ndD0kxV6XM3P43EY8mMdRXT9UmF0WTomLQ7JxhlY23fgYmS7USZUKkN9BkKAbwnxdskDnFT94infup4kbWoPr5DFeMESPdsE+tNbbUGCKzqYzgoTpf5jOKThyt1/HQWCuYLbui3GDJ704eEPypFDgl8Mh+y8UOBiuKfjB4xgQKBgQD+v0cO6rU7ce7R3y+4LgZoEGfEfjvWGH+BEowDk0UFIWxfPlwgTGl5/OZHO7Y55QQzNsxxl8jUIXxVicyhYoKI0+uOeJ7bKmi08hb6BAQ1eTRaukRtMBbCo/FvBbE14vt2dnpidvCPv/KC0sQG1J+vUxUzSt94URvxNVBcRbsXCQKBgQDf8F1QZ4pUYP9KSCmUWbzpotAr+m84Q7Oqf4zc70p8rU8nGQSnNrQQWddqwF/UEiNniDj+n0FVwiEMslRWSqPYixyqI3dHuVxhi/4wdoIewCHq3MkcqHksl9y67Bhl8HXMGmg79IxiCsqj7oEF8aGJjAyEZm3d2roz0QNPQCaX+wKBgQCazX+Px/7jpcN7k4W7BXTtLfLwy8juvCpXM/8TeR27FWl2oz12fxilgZIp/VYp7kpUGNu5t4PZrJOSo09PTr6GCUmeZRwbkLTaKDbgLSqlmAbBj2lfdJaQJvHjBnF+jnVCspKCXUaoA/uJlix6/iAfeXxrk/cidR9mv4Aa4mDjiQKBgG2+SKyfoT3KrzFC/gVymM7SeDwlJZ4oJ4M1sN2Q8yr4b+LUMuCTQVkF/jiVgCDYprsVGgFGIGmbkkC7n/MN7w+u1ORYLxtaLnird21ellPlinmjq3c85O1CmuyLyUUju0bD5jMDnExrx3Tg7B/yk1xp4rR70fm4OCoukvWilYdDAoGBAK3Y77tqbno+D6W95fb8xb4xUUd1tEWgSY6CgjaqTRzbJ38cGuo92gBjKhDGLwaztcCw4yKPhEOum7nBGKKyxFfs8Z4vsG+m19JSdBfHf3PLModZwnjrRpatAnjTUW0DbPz+sfAwMgLnTCpElcSRQwjmioVAucCyd2FlMmqP5xB4","json","GBK",
- "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCzq4BIE4gMdEXxIAAUbiMpSytkzp+LVLVsBtji87rFGfWUcnrr3NKftaw0WtRu+36d1nDVOWW4CmgsOPyj1GOFoTcJOR/BqyIriwyLxpuMS8qgOqGJZXi+W4Nw2AJL6iMVwY2eI8F1G10gACK2I9TNJRzHh3tMTA6ItysbGoekRDtn6Xrkh5V6cyHQjLw0Q6MJK/68XT6/LWzarDEEYrSnIevOydMY32ptAgm5fp/h08M2khCmI6CuMWKmc87dPpd2krGVTALqprAQvB74AIqO+5DE0fN4LoitOYXAtWDCEF4kHN0hQUygIEGCwtMgEVzkf92VLlCX35YtDhWd1yQIDAQAB","RSA2");
- AlipayMerchantIndirectAuthorderCreateRequest request = new AlipayMerchantIndirectAuthorderCreateRequest();
+ legalBack = uploadImg(legalBack).toString();
+ operatorAuthService.saveOrUpdate(operatorAuth);
+ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",
+ aliAppid,
+ appPrivateKey,
+ "json","GBK",
+ alipay_public_key,
+ "RSA2");
+ AntMerchantExpandIndirectZftCreateRequest request = new AntMerchantExpandIndirectZftCreateRequest();
String param = "{" +
- " \"out_biz_no\":\""+uuid+"\"," +
- " \"contact_person_info\":{" +
- " \"contact_name\":\""+name+"\"," +
- " \"contact_phone_no\":\""+phone+"\"," +
- " \"contact_card_no\":\""+number+"\"," +
- " \"contact_cert_type\":\"RESIDENT\"" +
- " }," +
- " \"auth_identity_info\":{" +
- " \"identity_type\":\""+bodyType+"\"," +
- " \"is_financial_org\":false," +
- " \"certificate_type\":\"BUSINESS_CERT\"," +
- " \"certificate_info\":{" +
- " \"cert_no\":\""+businessNumber+"\"," +
- " \"cert_image\":\""+string+"\"," +
- " \"merchant_name\":\""+businessName+"\"," +
- " \"legal_person_name\":\""+legalRepresentative+"\"," +
- " \"register_address\":\""+registerAddress+"\"," +
- " \"effect_time\":\""+businessTerm+"\"," +
- " \"expire_time\":\""+businessEnd+"\"" +
- " }," +
- " }," +
- " \"legal_person_info\":{" +
- " \"card_type\":\"RESIDENT\"," +
- " \"person_name\":\""+legalRepresentative+"\"," +
- " \"card_no\":\""+legalNumber+"\"," +
- " \"effect_time\":\""+legalTerm+"\"," +
- " \"expire_time\":\""+legalEnd+"\"," +
- " \"card_front_img\":\""+legalFront+"\"," +
- " \"card_back_img\":\""+legalBack+"\"," +
- " \"is_benefit_person\":"+isBeneficiary+"" +
- " },";
- String bene = " \"benefit_person_info\":{" +
- " \"person_name\":\""+beneficiary+"\"," +
- " \"card_no\":\""+beneficiaryNumber+"\"," +
- " \"card_type\":\"RESIDENT\"," +
- " \"effect_time\":\""+beneficiaryTerm+"\"," +
- " \"expire_time\":\""+beneficiaryEnd+"\"," +
- " \"card_front_img\":\""+beneficiaryFront+"\"," +
- " \"card_back_img\":\""+beneficiaryBack+"\"" +
- " },";
- if (bodyType.equals("ENTERPRISE")){
+ " \"external_id\":\""+numericUUID+"\"," +
+ " \"merchant_type\":\""+bodyType+"\"," +
+ " \"name\":\""+businessName+"\"," +
+ " \"alias_name\":\""+aliasName+"\"," +
+ " \"mcc\":\"B0068\"," +
+ " \"cert_no\":\""+businessNumber+"\"," +
+ " \"cert_type\":\"201\"," +
+ " \"cert_image\":\""+string+"\"," +
+ " \"legal_name\":\""+legalPerson+"\"," +
+ " \"legal_cert_no\":\""+leagleNumber+"\"," +
+ " \"legal_cert_front_image\":\""+legalFront+"\"," +
+ " \"legal_cert_back_image\":\""+legalBack+"\"," +
+ " \"contact_infos\":[" +
+ " {" +
+ " \"name\":\""+name+"\"," +
+ " \"mobile\":\""+phone+"\"," +
+ " }" +
+ " ],";
+ String biz_cards=" \"biz_cards\":[" +
+ " {" +
+ " \"account_holder_name\":\""+accountName+"\"," +
+ " \"account_no\":\""+bankCard+"\"," +
+ " \"account_inst_province\":\""+province+"\"," +
+ " \"account_inst_city\":\""+city+"\"," +
+ " \"account_branch_name\":\""+bankNameTwo+"\"," +
+ " \"usage_type\":\""+useType+"\"," +
+ " \"account_type\":\""+cardType+"\"," +
+ " \"account_inst_name\":\""+bankName+"\"," +
+ " \"account_inst_id\":\""+group+"\"," +
+ " }" +
+ " ]," ;
+ // 结算类型 支付宝账户 / 银行卡
+ String type ;
+ // 结算类型为支付宝 填写支付宝账号 结算类型为银行卡填写银行卡号
+ String account;
+ if (accountType.equals("bankCard")){
+ type = accountType;
+ account = bankCard;
+ }else{
+ type = accountType;
+ account = alipayAccount;
+ }
+ String res=
+ " \"service\":[" +
+ " \"app支付\"" +
+ " ]," +
+ " \"alipay_logon_id\":" +
+ " \""+zfbAccount+"\"" +
+ " ," +
+ " \"sites\":[" +
+ " {" +
+ " \"site_type\":\"02\"," +
+ " \"site_name\":\"玩湃生活\"," +
+ " \"tiny_app_id\":\"wx82f853a410b0c7c0\"" +
+ " }" +
+ " ]," +
+ " \"cert_name\":\""+businessName+"\","+
+ " \"binding_alipay_logon_id\":\""+zfbAccount+"\","+
+ " \"default_settle_rule\":{" +
+ " \"default_settle_type\":\""+type+"\"," +
+ " \"default_settle_target\":\""+account+"\"" +
+ " }" +
+ "}";
+ if (accountType.equals("bankCard")){
request.setBizContent(param
- + bene+
- "}");
+ + biz_cards+res);
}else{
request.setBizContent(param
- +
- "}");
+ +res);
}
-
- AlipayMerchantIndirectAuthorderCreateResponse response = null;
+ AntMerchantExpandIndirectZftCreateResponse response = null;
try {
response = alipayClient.execute(request);
} catch (AlipayApiException e) {
e.printStackTrace();
}
if(response.isSuccess()){
- System.out.println("上传认证单");
+ System.out.println("调用成功");
JSONObject json = JSONObject.parseObject(response.getBody());
- JSONObject json1 = json.getJSONObject("alipay_merchant_indirect_authorder_create_response");
- String order_no = json1.getString("order_no");
- String order_status = json1.getString("order_status");
-// // 申请单号
-// String orderNo = r.getString("order_no");
- /**
- * 状态 审核中(AUDITING)、待联系人确认(CONTACT_CONFIRM),
- * 待法人确认(LEGAL_CONFIRM)、审核通过(AUDIT_PASS)、
- * 审核失败(AUDIT_REJECT)、已冻结(AUDIT_FREEZE)、
- * 已撤回(CANCELED)、联系人处理中(CONTACT_PROCESSING)
- */
-// String orderStatus = r.getString("order_status");
+ JSONObject json1 = json.getJSONObject("ant_merchant_expand_indirect_zft_create_response");
+ String order_no = json1.getString("order_id");
+ System.err.println("订单号"+order_no);
operatorAuth.setOrderNo(order_no);
- operatorAuth.setOrderStatus(order_status);
- operatorAuthService.save(operatorAuth);
+ operatorAuth.setRefuseReason("");
+
+ operatorAuthService.saveOrUpdate(operatorAuth);
+ Integer userId = operatorService.getById(operatorId).getUserId();
+ OperatorUser user = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("userId", userId));
+ user.setAlipayAudit(1);
+ // 01是企业
+ if (bodyType.equals("01")){
+ user.setAlipayType(2);
+ }else{
+ user.setAlipayType(1);
+ }
+ operatorUserService.saveOrUpdate(user);
} else {
- System.out.println("调用失败");
+ Integer userId = operatorService.getById(operatorId).getUserId();
+ OperatorUser user = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("userId", userId));
+ user.setAlipayAudit(3);
+ operatorUserService.saveOrUpdate(user);
+ operatorAuth.setRefuseReason(response.getSubMsg());
+ if (response.getCode().equals("40004")){
+ String subMsg = response.getSubMsg();
+ return ResultUtil.error(subMsg);
+ }
}
- return SUCCESS_TIP;
+ return ResultUtil.success();
}
+
public static Object uploadImg(String img){
- String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCSsmylIHe0j0pRQrB9p5ljryk9Qg2Z/JgIh+gtZES1TDo35YVw24aRRt7pkY7oHIZqpMRmSsWND1t63LVuNlpq532LG0iEJVJS53GzpRoHDD3iD01GmUoNjkCL36NCrbY0hTDDw7GZnYuJ8194Sss7OEoi7Mghg/XUreX4awwpWngTepCF7zs0S4YJQWyGY4JI6ooGraW23siBVY5MUI9XXLL6UKIExUfKe7zRihs8SrTHNnXtDT6EKYYo8P6M90Xuk173QsK2Xguk1FQ5Blh2ts7UvZVjP+WoQwDvrnqruve5kzDD9gwnAYUvhY66mtlxeub9nf5LLTtCliXeUZpNAgMBAAECggEAaPShSM9e9d9jM5p8PZqw4yJKZhqhMqAHgmsCUZ+gjPn52U4s198oez5ydDgBP85Q2XIDVpB+oPrw34mTgUQAEuaG6wTdMDannMscjYQ9h/dZOyjph+5ajjJNugWKgEVazF7S0e1sXtTaJhvrHVyd5UPTvwMb+Oa59q1okQC91cNa2vJzXiC7dfqWXZW/otmmOpcIcCN8dVDG3YhAuc5ZiT78Ca8x9GHWfw7cw1FRewRZlp/YnD2fJeWEesfvGCV36zCksrJrZz5MFMdf1Qh6+tHxK+E5sPNGdbooviTRnNWrsgyS9NcXFSQItOZQHsbLVID/Bs0kxkYPzbsfX1vRXQKBgQDsBDNZxpmSZJZ/4HfCOfHytWAkH/GHE3GOYH4TdHKLXfxRCinU23OtdrU2Sy8tBZvaajDKkWvMkjWT2w+56+z+xTprTf2PL/LS9zWCc8LPKbif6NfnwaOE8pIBrvkBskGKwbIE2fFVT0B4hNsR80TbPxvvAfCKjUj67qrTXSal+wKBgQCfHiuq/gLuSD2fuplzCwu0Rm/wr56bUpxhq9WNGaPOybR6EPq/wTKp0ow+f9uSuTm2NZhi/TWTXHOizy9vcZChRpj03a7NYwUOw36zvW7SHuF0Uhsp8TrZTyCj1XdhdLyJ9JMyL2DTRpGtLUR01ZSrdXPax7/Xu+OHubijqRD2VwKBgFqCveKm7AwdMS43OhYtPKE0d3tDGNARX9IXJSJ23Nqfn3zApgwwYKtcQ+BfcucUKJHZeX6lyC56v7tFHkHRvWBy6JVwIlZAMCJBla7CkCn8OQZyOCJzuy7oC6BDptDEuKfq4kdEAW4S54mQgabfoT9nc2H0X3fy+NLqpm5KYeDzAoGAYerlIILUNuKJ2aOxDpS7jSLTfB/20MqTpZ9i+UPQBE8oGv4b8Kjpjowc9dEkxDPsCe8Nac08jQSVvJkXLdOLF1QkiHtrOMU4tY8kh2OJsRCD2Vs1kCf8+QGyql+Q6Y43AAZcFsQFJ78Dorh6qhNNO/45X2cQ7aeYK0vlDgHaiF0CgYA4k9Q1tc8sU67TgT9cmMM6hG7/Rf3cU3PIdYuojs1EIG+1BJ7TlEiNAHoPtphlGFFeDP3SVnf59RfYH+BbLiz1JX9p/KFKRRkoXtfd6bySVWHvj4x2WiVpKFvHxhxc3LRubx0ryLGR/tpUJzxp+9luanU/WgSRFKiEZJZqFjjDzw==";
- String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCzq4BIE4gMdEXxIAAUbiMpSytkzp+LVLVsBtji87rFGfWUcnrr3NKftaw0WtRu+36d1nDVOWW4CmgsOPyj1GOFoTcJOR/BqyIriwyLxpuMS8qgOqGJZXi+W4Nw2AJL6iMVwY2eI8F1G10gACK2I9TNJRzHh3tMTA6ItysbGoekRDtn6Xrkh5V6cyHQjLw0Q6MJK/68XT6/LWzarDEEYrSnIevOydMY32ptAgm5fp/h08M2khCmI6CuMWKmc87dPpd2krGVTALqprAQvB74AIqO+5DE0fN4LoitOYXAtWDCEF4kHN0hQUygIEGCwtMgEVzkf92VLlCX35YtDhWd1yQIDAQAB";
+ 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==";//支付宝开发者应用私钥
+ String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥
+ String aliAppid = "2021004105665036";//支付宝appid
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
- alipayConfig.setAppId("2021004123692417");
- alipayConfig.setPrivateKey(privateKey);
+ alipayConfig.setAppId(aliAppid);
+ alipayConfig.setPrivateKey(appPrivateKey);
alipayConfig.setFormat("json");
- alipayConfig.setAlipayPublicKey(alipayPublicKey);
+ alipayConfig.setAlipayPublicKey(alipay_public_key);
alipayConfig.setCharset("UTF8");
alipayConfig.setSignType("RSA2");
AlipayClient alipayClient = null;
@@ -363,26 +1119,176 @@
}
/**
+ * 查询进件申请单审核状态
+ */
+ public JSONObject queryState(String orderNo) {
+ String url = "https://api.mch.weixin.qq.com/v3/ecommerce/applyments/out-request-no/"+orderNo;
+ String req1 = HttpRequestUtil.getReq1(url, new HashMap<>());
+ System.err.println("查询申请单审核状态字符串"+req1);
+ JSONObject jsonObject = JSON.parseObject(req1);
+ System.err.println("查询申请单审核状态Json"+jsonObject);
+ String applymentState = jsonObject.getString("applyment_state");
+ String outBizNo = jsonObject.getString("out_request_no");
+ OperatorAuth operatorAuth = operatorAuthWxService.getOne(
+ new QueryWrapper<OperatorAuth>()
+ .eq("outBizNo", outBizNo));
+ OperatorUser operatorUser = operatorUserService.getOne(new QueryWrapper<OperatorUser>()
+ .eq("operatorId", operatorAuth.getOperatorId()));
+ // 审核状态
+ operatorAuth.setApplymentState(applymentState);
+ if (applymentState.equals("REJECTED") || applymentState.equals("FROZEN")){
+ operatorUser.setWechatAudit(3);
+ operatorAuth.setAuditState(2);
+ // 如果被拒 赋值拒绝原因
+ operatorAuth.setRefuseReason(jsonObject.getJSONObject("audit_detail").getString("reject_reason"));
+ }
+ if (applymentState.equals("NEED_SIGN")){
+ operatorAuth.setSignUrl(jsonObject.getString("sign_url"));
+ operatorAuth.setMerchantNumber(jsonObject.getString("sub_mchid"));
+ }
+ if (applymentState.equals("FINISH")){
+ operatorAuth.setMerchantNumber(jsonObject.getString("sub_mchid"));
+ operatorUser.setWechatAudit(2);
+ operatorAuth.setAuditState(1);
+ }
+ if (applymentState.equals("ACCOUNT_NEED_VERIFY")){
+ operatorAuth.setLegalValidationUrl(jsonObject.getString("legal_validation_url"));
+ }
+ return jsonObject;
+ /**
+ * {
+ * "applyment_state" : "FINISH",
+ * "applyment_state_desc" : "审核中",
+ * "sign_url" : "https://pay.weixin.qq.com/public/apply4ec_sign/s?applymentId=2000002126198476&sign=b207b673049a32c858f3aabd7d27c7ec",
+ * "sub_mchid" : "1542488631",
+ * "account_validation" : {
+ * "account_name" : "aOf7Gk2qT26kakkuTZpbFAn7Mb7xcar0LlQaYoi3+LnnWwgAsfaUUTg9+GmYJq6YCz+RiluWHeHFq1lt8n3eIkF0laVvqmAU80xIWGZgWJnRmnRuZxsg0HJZfnUac2JfqyuL8OoyM2YSuYDqdsyvcOlgUQgq8MPCR6pmvhBCmIeJvnVSm8J+L+yx912itUmTDxhdBlu1CFBIUefME9nYB70vCVTNAVXgURkf65mjHMBiE9Y+wrPZVmTIIz3C3PtPVMZYDEvBT4rDdICA3ZYXshYqeOSslSjSMf+MhhC4oaujiISFzq3AE+as7mAEDJly+DgRuVs74msmKUH8pl+3oA==",
+ * "account_no" : "aOf7Gk2qT26kakkuTZpbFAn7Mb7xcar0LlQaYoi3+LnnWwgAsfaUUTg9+GmYJq6YCz+RiluWHeHFq1lt8n3eIkF0laVvqmAU80xIWGZgWJnRmnRuZxsg0HJZfnUac2JfqyuL8OoyM2YSuYDqdsyvcOlgUQgq8MPCR6pmvhBCmIeJvnVSm8J+L+yx912itUmTDxhdBlu1CFBIUefME9nYB70vCVTNAVXgURkf65mjHMBiE9Y+wrPZVmTIIz3C3PtPVMZYDEvBT4rDdICA3ZYXshYqeOSslSjSMf+MhhC4oaujiISFzq3AE+as7mAEDJly+DgRuVs74msmKUH8pl+3oA==",
+ * "pay_amount" : 124,
+ * "destination_account_number" : "7222223333322332",
+ * "destination_account_name" : "财付通支付科技有限公司",
+ * "destination_account_bank" : "招商银行威盛大厦支行",
+ * "city" : "深圳",
+ * "remark" : "入驻账户验证",
+ * "deadline" : "2018-12-10 17:09:01"
+ * },
+ * "audit_detail" : [
+ * {
+ * "param_name" : "id_card_copy",
+ * "reject_reason" : "身份证背面识别失败,请上传更清晰的身份证图片。"
+ * }
+ * ],
+ * "legal_validation_url" : "https://pay.weixin.qq.com/public/apply4ec_sign/s?applymentId=2000002126198476&sign=b207b673049a32c858f3aabd7d27c7ec",
+ * "out_request_no" : "APPLYMENT_00000000001",
+ * "applyment_id" : 2000002124775691,
+ * "sign_state" : "SIGNED"
+ * }
+ */
+ }
+
+ /**
* 分账比例提交
*/
@RequestMapping(value = "/proportion")
@ResponseBody
- public Object auth(String alipayProportion,String wechatProportion,Integer operatorIdOne ) {
- OperatorUser id = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("id", operatorIdOne));
+ 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);
operatorUserService.updateById(id);
return SUCCESS_TIP;
}
+
+
+// public static void main(String[] args) throws URISyntaxException {
+// String filePath = "https://we-park-life.oss-cn-beijing.aliyuncs.com/img/a5e24fc4b13b4ea48bb2455ad8662a5d.jpg"; // 替换成你的OSS图片链接
+// String string = UUID.randomUUID().toString();
+// try {
+// URL url = new URL(filePath);
+// InputStream inputStream = url.openStream();
+// // 这里可以根据需求处理 inputStream,比如保存到本地文件
+// // 例如保存到本地文件
+// saveInputStreamToFile(inputStream, "D:\\tempImg\\"+string+".jpg");
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
+// URI uri = new URI("https://api.mch.weixin.qq.com/v3/merchant/media/upload");
+// File file = new File("D:\\tempImg\\"+string+".jpg");
+// try (FileInputStream ins1 = new FileInputStream(file)) {
+// String sha256 = DigestUtils.sha256Hex(ins1);
+// try (InputStream ins2 = new FileInputStream(file)) {
+// HttpPost request = new WechatPayUploadHttpPost.Builder(uri)
+// .withImage(file.getName(), sha256, ins2)
+// .build();
+//// CloseableHttpResponse response1 = httpClient.execute(request);
+// }
+// } catch (IOException e) {
+// throw new RuntimeException(e);
+// }
+// }
+ private static void saveInputStreamToFile(InputStream inputStream, String filePath) throws IOException {
+ OutputStream outputStream = new FileOutputStream(filePath);
+ byte[] buffer = new byte[1024];
+ int bytesRead;
+ while ((bytesRead = inputStream.read(buffer)) != -1) {
+ outputStream.write(buffer, 0, bytesRead);
+ }
+ outputStream.close();
+ inputStream.close();
+ }
+ /**
+ * 微信商户认证上传图片
+ */
+ @RequestMapping(value = "/wxUpload")
+ @ResponseBody
+ public Object wxUpload(String img) throws URISyntaxException, FileNotFoundException {
+ String filePath = "https://we-park-life.oss-cn-beijing.aliyuncs.com/img/a5e24fc4b13b4ea48bb2455ad8662a5d.jpg"; // 替换成你的OSS图片链接
+ String string = UUID.randomUUID().toString();
+ try {
+ URL url = new URL(filePath);
+ InputStream inputStream = url.openStream();
+ // 这里可以根据需求处理 inputStream,比如保存到本地文件
+ // 例如保存到本地文件
+
+
+ saveInputStreamToFile(inputStream, "D:\\tempImg\\"+string+".jpg");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ URI uri = new URI("https://api.mch.weixin.qq.com/v3/merchant/media/upload");
+ File file = new File("D:\\tempImg\\"+string+".jpg");
+ try (FileInputStream ins1 = new FileInputStream(file)) {
+ String sha256 = DigestUtils.sha256Hex(ins1);
+ try (InputStream ins2 = new FileInputStream(file)) {
+ HttpPost request = new WechatPayUploadHttpPost.Builder(uri)
+ .withImage(file.getName(), sha256, ins2)
+ .build();
+// CloseableHttpResponse response1 = httpClient.execute(request);
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return null;
+ }
+ // 辅助方法:将 InputStream 转换为 FileInputStream
+ private static FileInputStream convertInputStreamToFileInputStream(InputStream inputStream) throws IOException {
+ // 将 InputStream 转为临时文件,然后返回其 FileInputStream
+ File tempFile = File.createTempFile("temp", null);
+ org.apache.commons.io.IOUtils.copy(inputStream, new java.io.FileOutputStream(tempFile));
+ return new FileInputStream(tempFile);
+ }
+
/**
* 跳转运营商设置分账比例页面
*/
@RequestMapping("/proportion/{id}")
public String proportion(Model model,@PathVariable("id") Integer id) {
OperatorUser o = operatorUserService.getOne(new QueryWrapper<OperatorUser>().eq("operatorId", id));
- model.addAttribute("operatorIdOne",o.getId());
+ model.addAttribute("id",id);
model.addAttribute("alipayProportion",o.getAlipayProportion());
model.addAttribute("wechatProportion",o.getWechatProportion());
+ model.addAttribute("alipayNum",o.getAlipayNum());
+ model.addAttribute("wechatNum",o.getWechatNum());
return PREFIX + "OperatorUser_proportion.html";
}
/**
@@ -418,6 +1324,18 @@
@ResponseBody
public Object changeState(@RequestBody CoachChangeStateVO vo){
operatorService.changeState(vo);
+ List<Integer> ids = vo.getIds();
+ // 将运营商账号也冻结
+ List<TOperator> list = operatorService.list(new QueryWrapper<TOperator>()
+ .in("id",ids));
+ // 用户ids
+ List<Integer> collect = list.stream().map(TOperator::getUserId).collect(Collectors.toList());
+ for (Integer integer : collect) {
+ User user = new User();
+ user.setId(integer);
+ user.setStatus(vo.getState());
+ userService.updateById(user);
+ }
return ResultUtil.success();
}
/**
@@ -456,6 +1374,11 @@
operatorUser.setAlipayType(3);
operatorUser.setWechatType(3);
operatorUser.setOperatorId(data.getId());
+ // 添加运营商商户认证
+ operatorUser.setAlipayProportion("未设置");
+ operatorUser.setWechatProportion("未设置");
+ operatorUser.setWechatAudit(0);
+ operatorUser.setAlipayAudit(0);
operatorUserService.save(operatorUser);
user.setObjectId(data.getId());
userService.updateById(user);
@@ -501,6 +1424,7 @@
}
}
+
return ResultUtil.success("添加成功");
}
/**
@@ -530,48 +1454,60 @@
data.setState(1);
operatorService.updateById(data);
if (type != 1){
- if (SinataUtil.isNotEmpty(comArr)){
- JSONArray jsonArray = JSON.parseArray(comArr);
- int size = jsonArray.size();
- for (int i = 0; i < size; i++) {
- JSONObject jsonObject = jsonArray.getJSONObject(i);
- TOperatorCity province = new TOperatorCity();
- TOperatorCity city = new TOperatorCity();
- TOperatorCity one1 = operatorCityService.getOne(new QueryWrapper<TOperatorCity>()
- .eq("name", jsonObject.getString("province"))
- .eq("operatorId", data.getId()));
- // 省
- if (one1==null){
- province.setName(jsonObject.getString("province"));
- province.setCode(jsonObject.getInteger("provinceCode"));
- province.setPid(0);
- province.setType(jsonObject.getInteger("areaType"));
- province.setOperatorId(data.getId());
- city.setPid(province.getId());
- operatorCityService.save(province);
- // 市
- if (!jsonObject.getString("city").equals("")){
- city.setName(jsonObject.getString("city"));
- city.setCode(jsonObject.getInteger("cityCode"));
+ if (SinataUtil.isNotEmpty(comArr)){
+ JSONArray jsonArray = JSON.parseArray(comArr);
+ int size = jsonArray.size();
+ for (int i = 0; i < size; i++) {
+ JSONObject jsonObject = jsonArray.getJSONObject(i);
+ TOperatorCity province = new TOperatorCity();
+ TOperatorCity city = new TOperatorCity();
+ TOperatorCity one1 = operatorCityService.getOne(new QueryWrapper<TOperatorCity>()
+ .eq("name", jsonObject.getString("province"))
+ .eq("operatorId", data.getId()));
+ // 省
+ if (one1==null){
+ province.setName(jsonObject.getString("province"));
+ province.setCode(jsonObject.getInteger("provinceCode"));
+ province.setPid(0);
+ province.setType(jsonObject.getInteger("areaType"));
+ province.setOperatorId(data.getId());
city.setPid(province.getId());
- city.setType(jsonObject.getInteger("areaType"));
- city.setOperatorId(data.getId());
- operatorCityService.save(city);
- }
- }else{
- // 市
- if (!jsonObject.getString("city").equals("")){
- city.setName(jsonObject.getString("city"));
- city.setCode(jsonObject.getInteger("cityCode"));
- city.setPid(one1.getId());
- city.setType(jsonObject.getInteger("areaType"));
- city.setOperatorId(data.getId());
- operatorCityService.save(city);
+ operatorCityService.save(province);
+ // 市
+ if (!jsonObject.getString("city").equals("")){
+ city.setName(jsonObject.getString("city"));
+ city.setCode(jsonObject.getInteger("cityCode"));
+ city.setPid(province.getId());
+ city.setType(jsonObject.getInteger("areaType"));
+ city.setOperatorId(data.getId());
+ operatorCityService.save(city);
+ }
+ }else{
+ // 市
+ if (!jsonObject.getString("city").equals("")){
+ city.setName(jsonObject.getString("city"));
+ city.setCode(jsonObject.getInteger("cityCode"));
+ city.setPid(one1.getId());
+ city.setType(jsonObject.getInteger("areaType"));
+ city.setOperatorId(data.getId());
+ operatorCityService.save(city);
+ }
}
}
}
}
- }
return ResultUtil.success("添加成功");
}
+
+
+
+ /**
+ * 获取所有运营商
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/getOperatorListAll")
+ public Object getOperatorListAll(){
+ return operatorService.list(new QueryWrapper<TOperator>().eq("state", 1));
+ }
}
--
Gitblit v1.7.1