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