diff --git a/src/main/java/com/ai/da/common/enums/ProductEnum.java b/src/main/java/com/ai/da/common/enums/ProductEnum.java index 11237ffe..4a859b9c 100644 --- a/src/main/java/com/ai/da/common/enums/ProductEnum.java +++ b/src/main/java/com/ai/da/common/enums/ProductEnum.java @@ -7,7 +7,7 @@ import lombok.Getter; @AllArgsConstructor public enum ProductEnum { // 积分购买 - CreditsProduct("AiDA credits purchase", 6L), + CreditsProduct("AiDA credits purchase", 1L), // 年度订阅 AnnualSubscription("AiDA Annual Subscription", 5000L), // 月度订阅 diff --git a/src/main/java/com/ai/da/controller/AliPayController.java b/src/main/java/com/ai/da/controller/AliPayController.java index 90452b37..abde0710 100644 --- a/src/main/java/com/ai/da/controller/AliPayController.java +++ b/src/main/java/com/ai/da/controller/AliPayController.java @@ -1,6 +1,7 @@ package com.ai.da.controller; import com.ai.da.common.response.Response; +import com.ai.da.model.dto.ProductPurchaseDTO; import com.ai.da.service.AliPayService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; import java.util.Map; @CrossOrigin @@ -22,12 +24,12 @@ public class AliPayController { private AliPayService aliPayService; @ApiOperation("统一收单下单并支付页面接口的调用") - @PostMapping("/trade/page/pay/{amount}") - public Response tradePagePay(@PathVariable Integer amount, @RequestParam String returnUrl, HttpServletRequest request){ + @PostMapping("/trade/page/pay") + public Response tradePagePay(@Valid @RequestBody ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request){ log.info("统一收单下单并支付页面接口的调用"); //支付宝开放平台接受 request 请求对象后 // 会为开发者生成一个html 形式的 form表单,包含自动提交的脚本 - String formStr = aliPayService.tradeCreate(amount, returnUrl, request); + String formStr = aliPayService.tradeCreate(productPurchaseDTO, request); //我们将form表单字符串返回给前端程序,之后前端将会调用自动提交脚本,进行表单的提交 //此时,表单会自动提交到action属性所指向的支付宝开放平台中,从而为用户展示一个支付页面 return Response.success(formStr); diff --git a/src/main/java/com/ai/da/controller/AlipayHKController.java b/src/main/java/com/ai/da/controller/AlipayHKController.java index 734a9d62..1cfdcf06 100644 --- a/src/main/java/com/ai/da/controller/AlipayHKController.java +++ b/src/main/java/com/ai/da/controller/AlipayHKController.java @@ -1,6 +1,7 @@ package com.ai.da.controller; import com.ai.da.common.response.Response; +import com.ai.da.model.dto.ProductPurchaseDTO; import com.ai.da.service.AlipayHKService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; @CrossOrigin @RestController @@ -21,9 +23,9 @@ public class AlipayHKController { private AlipayHKService alipayHKService; @ApiOperation(value = "创建订单") - @PostMapping(value = "/createOrder/{wallet}/{amount}") - public Response createOrder(@PathVariable Integer amount, @PathVariable String wallet, HttpServletRequest request) { - String order = alipayHKService.createOrder(amount, wallet, request); + @PostMapping(value = "/createOrder") + public Response createOrder(@Valid @RequestBody ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request) { + String order = alipayHKService.createOrder(productPurchaseDTO, request); return Response.success(order); } diff --git a/src/main/java/com/ai/da/controller/ConvenientInquiryController.java b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java index ecc8fdd1..564819fa 100644 --- a/src/main/java/com/ai/da/controller/ConvenientInquiryController.java +++ b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java @@ -11,9 +11,9 @@ import com.ai.da.model.dto.UserDesignStatisticDTO; import com.ai.da.model.vo.QuestionnaireFeedbackVO; import com.ai.da.model.vo.QuestionnaireVO; import com.ai.da.model.vo.QueryUserConditionsVO; +import com.ai.da.service.AccountService; import com.ai.da.service.ConvenientInquiryService; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.netty.util.internal.StringUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -36,13 +36,19 @@ public class ConvenientInquiryController { private DesignMapper designMapper; @Resource private ConvenientInquiryService convenientInquiryService; + @Resource + private AccountService accountService; @ApiOperation("获取当前所有试用用户") @PostMapping("/getTrial") public Response> getTrial(@Valid @RequestBody QueryUserConditionsVO queryUserConditionsVO) { Long accountId = UserContext.getUserHolder().getId(); - if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L) || accountId.equals(6L) || accountId.equals(4L) || accountId.equals(73L)) { + String userEmail = accountService.getById(accountId).getUserEmail(); + if (accountId.equals(31L) || accountId.equals(87L) || accountId.equals(83L) + || accountId.equals(6L) || accountId.equals(4L) || accountId.equals(73L) + || userEmail.equals("joho8228@hotmail.com") + ) { return Response.success(convenientInquiryService.getTrial(queryUserConditionsVO)); } else { return Response.fail("Sorry, you don't have permission"); diff --git a/src/main/java/com/ai/da/controller/PayPalCheckoutController.java b/src/main/java/com/ai/da/controller/PayPalCheckoutController.java index 87648940..8e3eda9a 100644 --- a/src/main/java/com/ai/da/controller/PayPalCheckoutController.java +++ b/src/main/java/com/ai/da/controller/PayPalCheckoutController.java @@ -1,6 +1,7 @@ package com.ai.da.controller; import com.ai.da.common.response.Response; +import com.ai.da.model.dto.ProductPurchaseDTO; import com.ai.da.service.PayPalCheckoutService; import com.paypal.http.HttpResponse; import com.paypal.http.exceptions.SerializeException; @@ -14,6 +15,7 @@ import javax.annotation.Resource; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; import java.io.IOException; import java.util.HashMap; @@ -26,9 +28,9 @@ public class PayPalCheckoutController { private PayPalCheckoutService payPalCheckoutService; @ApiOperation(value = "创建订单") - @PostMapping(value = "/trade/{amount}") - public Response> createOrder(@PathVariable Integer amount, @RequestParam String returnUrl, HttpServletRequest request) throws SerializeException { - HashMap approvalUrl = payPalCheckoutService.createOrder(amount, returnUrl, request); + @PostMapping(value = "/trade") + public Response> createOrder(@Valid @RequestBody ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request) throws SerializeException { + HashMap approvalUrl = payPalCheckoutService.createOrder(productPurchaseDTO, request); return Response.success(approvalUrl); } diff --git a/src/main/java/com/ai/da/model/dto/ProductPurchaseDTO.java b/src/main/java/com/ai/da/model/dto/ProductPurchaseDTO.java index 0e386e8a..371439f9 100644 --- a/src/main/java/com/ai/da/model/dto/ProductPurchaseDTO.java +++ b/src/main/java/com/ai/da/model/dto/ProductPurchaseDTO.java @@ -27,4 +27,7 @@ public class ProductPurchaseDTO { @ApiModelProperty("是否自动续订 one_time || recurring") private Boolean autoRenewal; + + @ApiModelProperty("使用Alipay-HK时需要选择 ALIPAYHK || ALIPAYCN") + private String wallet; } diff --git a/src/main/java/com/ai/da/service/AliPayService.java b/src/main/java/com/ai/da/service/AliPayService.java index 300505bc..450a14bb 100644 --- a/src/main/java/com/ai/da/service/AliPayService.java +++ b/src/main/java/com/ai/da/service/AliPayService.java @@ -1,10 +1,12 @@ package com.ai.da.service; +import com.ai.da.model.dto.ProductPurchaseDTO; + import javax.servlet.http.HttpServletRequest; import java.util.Map; public interface AliPayService { - String tradeCreate(Integer amount,String returnUrl, HttpServletRequest request); + String tradeCreate(ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request); String tradeNotify(Map params); diff --git a/src/main/java/com/ai/da/service/AlipayHKService.java b/src/main/java/com/ai/da/service/AlipayHKService.java index 51272bb1..a8492c0b 100644 --- a/src/main/java/com/ai/da/service/AlipayHKService.java +++ b/src/main/java/com/ai/da/service/AlipayHKService.java @@ -1,12 +1,13 @@ package com.ai.da.service; import com.ai.da.model.dto.AlipayHKCallbackDTO; +import com.ai.da.model.dto.ProductPurchaseDTO; import javax.servlet.http.HttpServletRequest; public interface AlipayHKService { - String createOrder(Integer amount, String wallet, HttpServletRequest request); + String createOrder(ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request); String callback(String paramString); diff --git a/src/main/java/com/ai/da/service/PayPalCheckoutService.java b/src/main/java/com/ai/da/service/PayPalCheckoutService.java index ccf60e92..e6256827 100644 --- a/src/main/java/com/ai/da/service/PayPalCheckoutService.java +++ b/src/main/java/com/ai/da/service/PayPalCheckoutService.java @@ -1,5 +1,6 @@ package com.ai.da.service; +import com.ai.da.model.dto.ProductPurchaseDTO; import com.paypal.http.exceptions.SerializeException; import com.paypal.orders.Order; @@ -8,11 +9,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.HashMap; -import java.util.Map; public interface PayPalCheckoutService { - HashMap createOrder(Integer amount,String returnUrl, HttpServletRequest request) throws SerializeException; + HashMap createOrder(ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request) throws SerializeException; // String callback(@SuppressWarnings("rawtypes") Map map); diff --git a/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java b/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java index a8bdf410..2d14a37b 100644 --- a/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java @@ -7,6 +7,7 @@ import com.ai.da.common.enums.OrderStatusEnum; import com.ai.da.common.enums.PayTypeEnum; import com.ai.da.mapper.primary.entity.OrderInfo; import com.ai.da.mapper.primary.entity.RefundInfo; +import com.ai.da.model.dto.ProductPurchaseDTO; import com.ai.da.service.*; import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; @@ -55,12 +56,12 @@ public class AliPayServiceImpl implements AliPayService { @Transactional(rollbackFor = Exception.class) @Override - public String tradeCreate(Integer amount, String returnUrl, HttpServletRequest request) { + public String tradeCreate(ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request) { try { //生成订单 log.info("生成订单"); - OrderInfo orderInfo = orderInfoService.createOrderByProductId(amount, PayTypeEnum.ALIPAY.getType(), request); + OrderInfo orderInfo = orderInfoService.createOrderByProductId(productPurchaseDTO.getQuantity(), PayTypeEnum.ALIPAY.getType(), request); //调用支付宝接口 AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); @@ -69,7 +70,7 @@ public class AliPayServiceImpl implements AliPayService { alipayRequest.setNotifyUrl(config.getProperty("alipay.notify-url")); //支付完成后,我们想让页面跳转回aida的页面,配置returnUrl // alipayRequest.setReturnUrl(config.getProperty("alipay.return-url")); - alipayRequest.setReturnUrl(returnUrl); + alipayRequest.setReturnUrl(productPurchaseDTO.getReturnUrl()); //组装当前业务方法的请求参数 JSONObject bizContent = new JSONObject(); diff --git a/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java b/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java index fd01eae3..a8230e8c 100644 --- a/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java @@ -11,6 +11,7 @@ import com.ai.da.mapper.primary.AccountMapper; import com.ai.da.mapper.primary.entity.OrderInfo; import com.ai.da.model.dto.AlipayHKCallbackDTO; import com.ai.da.model.dto.AlipayHKRequestDTO; +import com.ai.da.model.dto.ProductPurchaseDTO; import com.ai.da.service.*; import com.alibaba.fastjson.JSONObject; @@ -65,23 +66,23 @@ public class AlipayHKServiceImpl implements AlipayHKService { * 创建订单 */ @Override - public String createOrder(Integer amount, String wallet , HttpServletRequest request){ + public String createOrder(ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request){ try{ HashMap param = new HashMap<>(); String orderRef = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); param.put("order_ref", orderRef); - param.put("amount", Float.parseFloat(CreditsEventsEnum.PRICE.getValue()) * amount); + param.put("amount", Float.parseFloat(CreditsEventsEnum.PRICE.getValue()) * productPurchaseDTO.getQuantity()); param.put("subject", "AiDA Credits Purchase"); // ALIPAYHK 或者 ALIPAYCN - param.put("wallet", wallet); + param.put("wallet", productPurchaseDTO.getWallet()); param.put("segment_id", segmentId); // param.put("payment_solution", "WAP"); param.put("payment_solution", "PC2MOBILE"); log.info("alipay-hk 创建订单,参数信息: {}", param); // 生成订单 log.info("创建订单"); - OrderInfo orderInfo = orderInfoService.createOrderByProductId(amount, PayTypeEnum.ALIPAY_HK.getType(), request); + OrderInfo orderInfo = orderInfoService.createOrderByProductId(productPurchaseDTO.getQuantity(), PayTypeEnum.ALIPAY_HK.getType(), request); /*// 加密 AlipayHKRequestDTO alipayHKRequestDTO = alipayHKEncryptionUtil.AESCBCWithRSA(param, AlipayHKConstant.CREATE_ORDER); // 请求Alipay服务端 diff --git a/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java b/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java index 63d47097..22d4cd47 100644 --- a/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java @@ -9,6 +9,7 @@ import com.ai.da.common.utils.paypalRequest.AuthenticationRequest; import com.ai.da.common.utils.paypalRequest.WebhookVerifyRequest; import com.ai.da.mapper.primary.entity.OrderInfo; import com.ai.da.mapper.primary.entity.RefundInfo; +import com.ai.da.model.dto.ProductPurchaseDTO; import com.ai.da.service.*; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; @@ -84,14 +85,14 @@ public class PayPalCheckoutServiceImpl implements PayPalCheckoutService { */ @Override @Transactional(rollbackFor = Exception.class) - public HashMap createOrder(Integer amount, String returnUrl, HttpServletRequest request) throws SerializeException { + public HashMap createOrder(ProductPurchaseDTO productPurchaseDTO, HttpServletRequest request) throws SerializeException { // 生成订单 log.info("生成订单"); - OrderInfo orderInfo = orderInfoService.createOrderByProductId(amount, PayTypeEnum.PAYPAL.getType(), request); + OrderInfo orderInfo = orderInfoService.createOrderByProductId(productPurchaseDTO.getQuantity(), PayTypeEnum.PAYPAL.getType(), request); OrdersCreateRequest paypalRequest = new OrdersCreateRequest(); paypalRequest.header("prefer", "return=representation"); - paypalRequest.requestBody(buildRequestBody(String.valueOf(orderInfo.getTotalFee()), returnUrl)); + paypalRequest.requestBody(buildRequestBody(String.valueOf(orderInfo.getTotalFee()), productPurchaseDTO.getReturnUrl())); HttpResponse response = null; try { response = payPalClient.client(mode, clientId, clientSecret).execute(paypalRequest);