From 533558ecfbb188f43cbb151e5245abff1b1aa818 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期日, 12 五月 2024 13:57:01 +0800
Subject: [PATCH] 1

---
 rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java                                    |   43 ++++++++++
 common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateOrderConsultOneRequest.java  |    3 
 rest/src/main/java/cn/stylefeng/rest/ijpay/entity/IosDto.java                                                  |    9 ++
 rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/HttpUtilIOS.java                                            |   76 +++++++++++++++++++
 rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CounsellingInfoController.java                    |    2 
 rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/IosPalUtils.java                                            |  101 +++++++++++++++++++++++++
 roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/RongCloudImServer.java |    2 
 7 files changed, 235 insertions(+), 1 deletions(-)

diff --git a/common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateOrderConsultOneRequest.java b/common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateOrderConsultOneRequest.java
index 8296b2f..6751df7 100644
--- a/common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateOrderConsultOneRequest.java
+++ b/common-buiness/src/main/java/cn/stylefeng/guns/modular/business/dto/request/CreateOrderConsultOneRequest.java
@@ -5,12 +5,15 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
+
 @Data
 @ApiModel(value = "1v1咨询性格分析师下单-请求参数")
 public class CreateOrderConsultOneRequest {
 
     @ApiModelProperty(value = "用户ID")
     @ChineseDescription("用户ID")
+    @NotBlank(message = "登录后再试")
     private Long userId;
 
     @ApiModelProperty(value = "心理测试结果ID")
diff --git a/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java b/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java
index 2115487..50747b1 100644
--- a/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java
+++ b/rest/src/main/java/cn/stylefeng/rest/ijpay/controller/AliPayController.java
@@ -13,7 +13,9 @@
 import cn.stylefeng.guns.modular.business.service.IOrderMentalTestService;
 import cn.stylefeng.guns.utils.GeneralUtil;
 import cn.stylefeng.rest.ijpay.entity.AliPayBean;
+import cn.stylefeng.rest.ijpay.entity.IosDto;
 import cn.stylefeng.rest.ijpay.entity.request.AliAppPayRequest;
+import cn.stylefeng.rest.ijpay.iosUtil.IosPalUtils;
 import cn.stylefeng.rest.modular.order.service.MentalTestOrderBizService;
 import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
 import cn.stylefeng.roses.kernel.rule.enums.OrderStatusFlagEnum;
@@ -162,6 +164,47 @@
 
 
 
+
+	@ApiOperation(value = "ios支付")
+	@PostMapping(value = "/ios")
+	@ResponseBody
+	public ResponseData ios(@RequestBody IosDto iosDto) {
+//		Boolean success = IosPalUtils.isSuccess(iosDto.getTransactionReceipt());
+//		if (!success){
+//			return new ErrorResponseData("支付失败");
+//		}
+		String tradeNo = iosDto.getOrderNo();
+		String totalAmount = iosDto.getMoney();
+		// 获取订单号
+		// 订单编号判断订单类型
+		if (iosDto.getOrderNo().startsWith(OrderTypeEnum.MENTAL_TEST.getCode())) {
+			// 心理测试订单
+			orderMentalTestService.paySuccess(iosDto.getOrderNo(), tradeNo, totalAmount, PayTypeEnum.ALIPAY.getCode());
+		} else if (iosDto.getOrderNo().startsWith(OrderTypeEnum.CONSULT_ONE.getCode())) {
+			// 心理咨询1V1订单
+			mentalTestOrderBizService.paySuccessOrderConsultOne(iosDto.getOrderNo(), tradeNo, totalAmount, PayTypeEnum.ALIPAY.getCode());
+		} else if (iosDto.getOrderNo().startsWith(OrderTypeEnum.COURSE_ORDER.getCode())) {
+			//课程订单
+			OrderPayRequest orderPayRequest = new OrderPayRequest();
+			orderPayRequest.setOrderNo(iosDto.getOrderNo());
+			orderPayRequest.setTransactionNo(tradeNo);
+			orderPayRequest.setPayType("2");
+			orderPayRequest.setOrderType(1);
+			courseOrderService.payCourseOrder(orderPayRequest);
+		} else if (iosDto.getOrderNo().startsWith(OrderTypeEnum.COUNSELLING_ORDER.getCode())) {
+			//咨询订单
+			OrderPayRequest orderPayRequest = new OrderPayRequest();
+			orderPayRequest.setOrderNo(iosDto.getOrderNo());
+			orderPayRequest.setTransactionNo(tradeNo);
+			orderPayRequest.setPayType("2");
+			orderPayRequest.setOrderType(2);
+			counsellingOrderService.payCounsellingOrder(orderPayRequest);
+		}
+		return new SuccessResponseData("支付成功");
+	}
+
+
+
 	@PostMapping(value = RuleConstants.NOT_LOGIN + "/freePay")
 	@ResponseBody
 	public String freePay(HttpServletRequest request) {
diff --git a/rest/src/main/java/cn/stylefeng/rest/ijpay/entity/IosDto.java b/rest/src/main/java/cn/stylefeng/rest/ijpay/entity/IosDto.java
new file mode 100644
index 0000000..b247e05
--- /dev/null
+++ b/rest/src/main/java/cn/stylefeng/rest/ijpay/entity/IosDto.java
@@ -0,0 +1,9 @@
+package cn.stylefeng.rest.ijpay.entity;
+
+import lombok.Data;
+
+@Data
+public class IosDto {
+    String orderNo;
+    String money;
+}
diff --git a/rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/HttpUtilIOS.java b/rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/HttpUtilIOS.java
new file mode 100644
index 0000000..3e089fa
--- /dev/null
+++ b/rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/HttpUtilIOS.java
@@ -0,0 +1,76 @@
+package cn.stylefeng.rest.ijpay.iosUtil;
+
+import net.sf.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.URL;
+import java.net.URLConnection;
+
+public class HttpUtilIOS {
+	/**  
+     * 向指定 URL 发送POST方法的请求  
+     *   
+     * @param url  
+     *            发送请求的 URL  
+     * @param param  
+     *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。  
+     * @return 所代表远程资源的响应结果  
+     */    
+    public static  synchronized String sendPosturl(String url, JSONObject param) {   
+          
+           
+        StringBuilder sb = new StringBuilder();    
+        PrintWriter out = null;    
+        BufferedReader in = null;    
+        try {    
+            URL realUrl = new URL(url);    
+            // 打开和URL之间的连接    
+            URLConnection conn = realUrl.openConnection();    
+            // 设置通用的请求属性    
+            conn.setRequestProperty("accept", "*/*"); 
+            conn.setRequestProperty("connection", "Keep-Alive");    
+            conn.setRequestProperty("user-agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36");    
+            // 发送POST请求必须设置如下两行    
+            conn.setDoOutput(true);    
+            conn.setDoInput(true);   
+            // 获取URLConnection对象对应的输出流    
+            out = new PrintWriter(conn.getOutputStream());    
+            // 发送请求参数    
+            out.print(param);    
+            // flush输出流的缓冲    
+            out.flush();    
+            // 定义BufferedReader输入流来读取URL的响应    
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));    
+            String line;    
+            sb = new StringBuilder();   
+              
+            while ((line = in.readLine()) != null)   
+            {  
+                sb.append(line);    
+            }    
+        } catch (Exception e) {    
+           // System.out.println("发送 POST 请求出现异常!"+e);    
+            e.printStackTrace();    
+        }    
+        //使用finally块来关闭输出流、输入流    
+        finally{    
+            try{    
+                if(out!=null){    
+                    out.close();    
+                }    
+                if(in!=null){    
+                    in.close();    
+                }    
+            }    
+            catch(IOException ex){    
+                ex.printStackTrace();    
+            }    
+        }    
+        System.out.print(sb.toString());
+        return sb.toString();    
+    }     
+	
+}
diff --git a/rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/IosPalUtils.java b/rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/IosPalUtils.java
new file mode 100644
index 0000000..8ee47cb
--- /dev/null
+++ b/rest/src/main/java/cn/stylefeng/rest/ijpay/iosUtil/IosPalUtils.java
@@ -0,0 +1,101 @@
+package cn.stylefeng.rest.ijpay.iosUtil;
+
+import net.sf.json.JSONObject;
+/**
+ * 苹果支付
+ */
+public  class IosPalUtils {
+
+    /*public static String buyAppVerify(String receipt, String environment) {
+        String url = null;
+        if(environment.equals("0")) {
+            url = "https://buy.itunes.apple.com/verifyReceipt";  // 生产环境
+        }
+        if (environment.equals("1")) {
+            url = "https://sandbox.itunes.apple.com/verifyReceipt";  // 沙盒测试
+        }
+        try {
+            SSLContext sc = SSLContext.getInstance("SSL");
+            sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },new java.security.SecureRandom());
+            URL console = new URL(url);
+            HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
+            conn.setSSLSocketFactory(sc.getSocketFactory());
+            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
+            conn.setRequestMethod("POST");
+            conn.setRequestProperty("Content-type", "application/json");
+            conn.setDoInput(true);
+            conn.setDoOutput(true);
+            BufferedOutputStream hurlBufOus = new BufferedOutputStream(
+                    conn.getOutputStream());
+            String newReceipt = receipt.replace(" ", "+");
+            String str = String.format("{\"receipt-data\":\"" + newReceipt + "\"}");
+            hurlBufOus.write(str.getBytes());
+            hurlBufOus.flush();
+
+            InputStream is = conn.getInputStream();
+            BufferedReader reader = new BufferedReader(
+                    new InputStreamReader(is));
+            String line = null;
+            StringBuffer sb = new StringBuffer();
+            while ((line = reader.readLine()) != null) {
+                sb.append(line);
+            }
+            return sb.toString();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
+        return null;
+    }*/
+
+    /**
+     * @param key  支付Id第三方返回的orderId
+     */
+    public  static Boolean isSuccess(String key) {
+        try {
+            System.out.println("!!!!!!!!!!!"+key+"!!!!!!!!!!!");
+            Boolean ok=false;
+            if (key!=null) {
+                key = key.replace(" ", "+");
+                System.out.println("!!!!!!!!!!!"+key+"!!!!!!!!!!!");
+                JSONObject data = JSONObject.fromObject("{\"receipt-data\":\"" + key + "\"}");
+                String score = HttpUtilIOS.sendPosturl("https://buy.itunes.apple.com/verifyReceipt", data);
+                // 将String 转化为json
+                JSONObject json = JSONObject.fromObject(score);
+                System.out.print("!!!!!!!!!!!"+json+"!!!!!!!!!!!");
+
+                if (!json.getString("status").equals("0")) {
+                    JSONObject data1 = JSONObject.fromObject("{\"receipt-data\":\"" + key + "\"}");
+                    String score1 = HttpUtilIOS.sendPosturl("https://sandbox.itunes.apple.com/verifyReceipt", data1);
+                    // 将String 转化为json
+                    JSONObject json1 = JSONObject.fromObject(score1);
+                    if (json1.getString("status").equals("0")) {
+                        String receipt = json1.getString("receipt");
+                        JSONObject jsons = JSONObject.fromObject(receipt);
+                        String m3 = jsons.getString("in_app");
+                        String m4 = m3.replace("[", "");
+                        String m5 = m4.replace("]", "");
+                        if(m5!=null){
+                            ok=true;
+                        }
+                    }
+                }else {
+                    if (json.getString("status").equals("0")) {
+                        String receipt = json.getString("receipt");
+                        JSONObject jsons = JSONObject.fromObject(receipt);
+                        String m3 = jsons.getString("in_app");
+                        String m4 = m3.replace("[", "");
+                        String m5 = m4.replace("]", "");
+                        if(m5!=null){
+                            ok=true;
+                        }
+                    }
+                }
+            }
+            return ok;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return  null;
+    }
+
+}
diff --git a/rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CounsellingInfoController.java b/rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CounsellingInfoController.java
index 309c5b3..7366928 100644
--- a/rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CounsellingInfoController.java
+++ b/rest/src/main/java/cn/stylefeng/rest/modular/user/controller/CounsellingInfoController.java
@@ -814,7 +814,7 @@
     public ResponseData<CounsellingOrderResponseDTO> getCounsellingOrderInfoById(Long counsellingOrderId){
         CounsellingOrder counsellingOrder = this.counsellingOrderService.getById(counsellingOrderId);
         CounsellingOrderResponseDTO counsellingOrderResponseDTO = BeanUtil.copyProperties(counsellingOrder,CounsellingOrderResponseDTO.class);
-        CounsellingInfo counsellingInfo = this.counsellingInfoService.getById(counsellingOrderResponseDTO.getCounsellingInfoId());
+        CounsellingInfo counsellingInfo = this.counsellingInfoService.getById(counsellingOrder.getCounsellingInfoId());
         Customer customer = this.customerService.getById(counsellingInfo.getUserId());
         counsellingOrderResponseDTO.setCounsellingName(customer.getNickName());
         return new SuccessResponseData<>(counsellingOrderResponseDTO);
diff --git a/roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/RongCloudImServer.java b/roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/RongCloudImServer.java
index 2f1437c..c8decfa 100644
--- a/roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/RongCloudImServer.java
+++ b/roses/kernel-d-im/im-sdk-rongcloud/src/main/java/cn/stylefeng/roses/kernel/im/rongcloud/RongCloudImServer.java
@@ -61,6 +61,7 @@
                 .setPortrait(portrait);
         TokenResult result = getRongCloud().user.register(userModel);
 
+
         // {"token":"UNFruJFNKX77FTKA0fO92Xm4tDCdiuJG@fnk7.cn.rongnav.com;fnk7.cn.rongcfg.com","userId":"1","reqBody":"userId=1&name=%E7%B3%BB%E7%BB%9F%E6%8F%90%E7%A4%BA&portraitUri=http%3A%2F%2Fwww.rongcloud.cn%2Fimages%2Flogo.png","code":200,"requestId":"e3e851ac0cdb47a4ad456f9c8dd1e88a"}
         log.info("融云IM getToken:  " + result.toString());
         return result;
@@ -96,6 +97,7 @@
         UserModel userModel = new UserModel().setId(id);
 
         CheckOnlineResult result = getRongCloud().user.onlineStatus.check(userModel);
+
         log.info("融云IM checkOnline:  " + result.toString());
 
         assertEquals("200", result.getCode().toString());

--
Gitblit v1.7.1