From c1dd4faf0ec3771e7159dfd1187e37b949acdb69 Mon Sep 17 00:00:00 2001 From: ziin Date: Fri, 12 Dec 2025 20:37:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(apple):=20=E6=96=B0=E5=A2=9E=E8=8B=B9?= =?UTF-8?q?=E6=9E=9C=E8=AE=A2=E9=98=85=E9=80=9A=E7=9F=A5=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=B9=B6=E8=A1=A5=E5=85=85=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AppleReceiptController 新增 /apple/notification 端点,用于接收苹果服务器通知 - 调整路径前缀为 /apple,开放 /apple/receipt 与 /apple/notification 免登录 --- .../keyborad/config/SaTokenConfigure.java | 4 +++- .../controller/AppleReceiptController.java | 22 +++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/yolo/keyborad/config/SaTokenConfigure.java b/src/main/java/com/yolo/keyborad/config/SaTokenConfigure.java index de67f7c..c79bcd8 100644 --- a/src/main/java/com/yolo/keyborad/config/SaTokenConfigure.java +++ b/src/main/java/com/yolo/keyborad/config/SaTokenConfigure.java @@ -98,7 +98,9 @@ public class SaTokenConfigure implements WebMvcConfigurer { "/products/detail", "/products/inApp/list", "/products/subscription/list", - "/purchase/handle" + "/purchase/handle", + "/apple/notification", + "/apple/receipt" }; } diff --git a/src/main/java/com/yolo/keyborad/controller/AppleReceiptController.java b/src/main/java/com/yolo/keyborad/controller/AppleReceiptController.java index 6dd3e50..e964350 100644 --- a/src/main/java/com/yolo/keyborad/controller/AppleReceiptController.java +++ b/src/main/java/com/yolo/keyborad/controller/AppleReceiptController.java @@ -8,15 +8,18 @@ import com.yolo.keyborad.exception.BusinessException; import com.yolo.keyborad.model.dto.AppleReceiptValidationResult; import com.yolo.keyborad.service.ApplePurchaseService; import com.yolo.keyborad.service.AppleReceiptService; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import lombok.extern.slf4j.Slf4j; import java.util.Map; @RestController -@RequestMapping("/api/apple") +@RequestMapping("/apple") +@Slf4j public class AppleReceiptController { private final AppleReceiptService appleReceiptService; @@ -28,11 +31,11 @@ public class AppleReceiptController { this.applePurchaseService = applePurchaseService; } -// @PostMapping("/validate-receipt") -// public AppleReceiptValidationResult validateReceipt(@RequestBody Map body) { -// String receipt = body.get("receipt"); -// return appleReceiptService.validateReceipt(receipt); -// } + @PostMapping("/receipt") + public AppleReceiptValidationResult validateReceipt(@RequestBody Map body) { + String receipt = body.get("receipt"); + return appleReceiptService.validateReceipt(receipt); + } @PostMapping("/validate-receipt") public BaseResponse handlePurchase(@RequestBody Map body) { @@ -46,6 +49,11 @@ public class AppleReceiptController { return ResultUtils.success(Boolean.TRUE); } - + @PostMapping("/notification") + public BaseResponse receiveNotification(@RequestBody Map body, HttpServletRequest request) { + log.info(request.getQueryString()); + log.info("Apple server notification: {}", body); + return ResultUtils.success(Boolean.TRUE); + } }