From ead80429565d60f2f991ea1e724e2f39b3649e1a Mon Sep 17 00:00:00 2001 From: hyeonjeong Park Date: Wed, 30 Aug 2023 10:40:45 +0900 Subject: [PATCH 1/4] =?UTF-8?q?YEL-148=20[fix]=20yml=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 76 -------------------------------------- 1 file changed, 76 deletions(-) delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index ae81427d..00000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,76 +0,0 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. -# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle - -name: πŸ“Š YELL:O Test - -on: - push: - branches: [ "develop", "staging" ] - pull_request: - branches: [ "develop", "staging" ] - -permissions: - checks: write - pull-requests: write - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: πŸ‘‰ JDK 17 zulu 버전을 μ„ΈνŒ…ν•©λ‹ˆλ‹€. - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'zulu' - cache: gradle - - - name: 🐘 Gradle에 κΆŒν•œμ„ λΆ€μ—¬ν•©λ‹ˆλ‹€. - run: chmod +x gradlew - shell: bash - - ## μ‹œν¬λ¦Ώ ν‚€ μ„€μ • - - name: πŸ” application.yml λ“± ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„ΈνŒ…ν•©λ‹ˆλ‹€. - run: | - cd ./src/main/resources - touch ./application.yml - echo "$APPLICATION" > ./application.yml - env: - APPLICATION: ${{ secrets.APPLICATION_TEST }} - shell: bash - - - name: πŸ“Š Gradle둜 ν…ŒμŠ€νŠΈ μ‹€ν–‰ - run: ./gradlew test - - - name: πŸ’¬ ν…ŒμŠ€νŠΈ κ²°κ³Όλ₯Ό μ½”λ©˜νŠΈλ‘œ λ“±λ‘ν•©λ‹ˆλ‹€. - uses: EnricoMi/publish-unit-test-result-action@v2 - if: always() - with: - files: '**/build/test-results/test/TEST-*.xml' - - - name: ν…ŒμŠ€νŠΈ μ‹€νŒ¨ μ‹œ, μ‹€νŒ¨ν•œ μ½”λ“œ 라인에 Check μ½”λ©˜νŠΈλ₯Ό λ“±λ‘ν•©λ‹ˆλ‹€ - uses: mikepenz/action-junit-report@v3 - if: always() - with: - report_paths: '**/build/test-results/test/TEST-*.xml' - token: ${{ github.token }} - - - name: πŸ’‘ 배포 μƒνƒœλ₯Ό Slack을 톡해 μ „μ†‘ν•©λ‹ˆλ‹€. - uses: rtCamp/action-slack-notify@v2 - env: - SLACK_CHANNEL: general - SLACK_COLOR: ${{ job.status }} - SLACK_ICON: https://github.com/rtCamp.png?size=48 - SLACK_MESSAGE: ν…ŒμŠ€νŠΈμ— ${{ job.status }} ν–ˆμŠ΅λ‹ˆλ‹€. - SLACK_TITLE: πŸ“Š YELL:O ν…ŒμŠ€νŠΈ κ²°κ³Ό πŸ“Š - SLACK_USERNAME: Notification-Bot - SLACK_WEBHOOK: ${{ secrets.SLACK_URL }} - if: always() From 5499000133d3f535db79e0fdb4e10e7ca3a56623 Mon Sep 17 00:00:00 2001 From: hyeonjeong Park Date: Wed, 30 Aug 2023 11:53:39 +0900 Subject: [PATCH 2/4] YEL-148 [fix] deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 859a0958..c98e92b3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -3,7 +3,7 @@ name: πŸš€ YELL:O Deploy on: push: branches: - - staging + - main permissions: contents: read From 0b396844050b14713d18d8b5e8617022939bc294 Mon Sep 17 00:00:00 2001 From: hyeonjeong Park Date: Sun, 3 Sep 2023 02:14:30 +0900 Subject: [PATCH 3/4] YEL-148 [fix] Update deploy-test.yml --- .github/workflows/deploy-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-test.yml b/.github/workflows/deploy-test.yml index e7125c35..7ed8debc 100644 --- a/.github/workflows/deploy-test.yml +++ b/.github/workflows/deploy-test.yml @@ -2,7 +2,7 @@ name: πŸš€ YELL:O Deploy for staging server on: push: - branches: [ "develop" ] + branches: [ "staging" ] permissions: contents: read From 280663c0a0d893c17dc56633e6f2231f0f794140 Mon Sep 17 00:00:00 2001 From: hyeonjeongs Date: Sun, 10 Sep 2023 19:59:55 +0900 Subject: [PATCH 4/4] =?UTF-8?q?YEL-154=20[feat]=20json=20parse=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/apple/AppleNotificationPayloadVO.java | 10 ++++++++ .../dto/apple/ApplePayloadDataVO.java | 4 ++++ .../purchase/service/PurchaseManagerImpl.java | 23 ++++++++++--------- .../common/factory/DecodeTokenFactory.java | 7 ++++-- .../common/factory/TokenFactoryImpl.java | 4 +++- 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/yello/server/domain/purchase/dto/apple/AppleNotificationPayloadVO.java b/src/main/java/com/yello/server/domain/purchase/dto/apple/AppleNotificationPayloadVO.java index a1238024..0670e169 100644 --- a/src/main/java/com/yello/server/domain/purchase/dto/apple/AppleNotificationPayloadVO.java +++ b/src/main/java/com/yello/server/domain/purchase/dto/apple/AppleNotificationPayloadVO.java @@ -11,4 +11,14 @@ public record AppleNotificationPayloadVO( ) { + public static AppleNotificationPayloadVO of(String notificationType, String subType, + ApplePayloadDataVO data, String notificationUUID) { + return AppleNotificationPayloadVO.builder() + .notificationType(notificationType) + .subType(subType) + .data(data) + .notificationUUID(notificationUUID) + .build(); + } + } diff --git a/src/main/java/com/yello/server/domain/purchase/dto/apple/ApplePayloadDataVO.java b/src/main/java/com/yello/server/domain/purchase/dto/apple/ApplePayloadDataVO.java index 56236b79..5c1396ea 100644 --- a/src/main/java/com/yello/server/domain/purchase/dto/apple/ApplePayloadDataVO.java +++ b/src/main/java/com/yello/server/domain/purchase/dto/apple/ApplePayloadDataVO.java @@ -1,8 +1,12 @@ package com.yello.server.domain.purchase.dto.apple; +import lombok.Builder; + +@Builder public record ApplePayloadDataVO( String appAppleId, String bundleId, + String bundleVersion, String environment, String signedTransactionInfo, String signedRenewalInfo, diff --git a/src/main/java/com/yello/server/domain/purchase/service/PurchaseManagerImpl.java b/src/main/java/com/yello/server/domain/purchase/service/PurchaseManagerImpl.java index b691f793..f150a079 100644 --- a/src/main/java/com/yello/server/domain/purchase/service/PurchaseManagerImpl.java +++ b/src/main/java/com/yello/server/domain/purchase/service/PurchaseManagerImpl.java @@ -4,9 +4,9 @@ import static com.yello.server.global.common.ErrorCode.GOOGLE_SUBSCRIPTIONS_SUBSCRIPTION_EXCEPTION; import static com.yello.server.global.common.ErrorCode.NOT_FOUND_TRANSACTION_EXCEPTION; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.yello.server.domain.purchase.dto.apple.AppleNotificationPayloadVO; +import com.yello.server.domain.purchase.dto.apple.ApplePayloadDataVO; import com.yello.server.domain.purchase.dto.apple.TransactionInfoResponse; import com.yello.server.domain.purchase.entity.Gateway; import com.yello.server.domain.purchase.entity.ProductType; @@ -67,17 +67,18 @@ public void handleAppleTransactionError(ResponseEntity @Override public AppleNotificationPayloadVO decodeApplePayload(String signedPayload) { - String jsonPayload = DecodeTokenFactory.decodePayload(signedPayload); - + Map jsonPayload = DecodeTokenFactory.decodePayload(signedPayload); ObjectMapper objectMapper = new ObjectMapper(); - try { - AppleNotificationPayloadVO payloadVO = - objectMapper.readValue(jsonPayload, AppleNotificationPayloadVO.class); - System.out.println(payloadVO + " μž…λ‹ˆλ‹€μ•„μ•„μ•„μ•„μ•„"); - return payloadVO; - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } + + String notificationType = jsonPayload.get("notificationType").toString(); + String subType = jsonPayload.get("subType").toString(); + Map data = (Map) jsonPayload.get("data"); + String notificationUUID = jsonPayload.get("notificationUUID").toString(); + + ApplePayloadDataVO payloadVO = objectMapper.convertValue(data, ApplePayloadDataVO.class); + + return AppleNotificationPayloadVO.of(notificationType, subType, payloadVO, + notificationUUID); } @Override diff --git a/src/main/java/com/yello/server/global/common/factory/DecodeTokenFactory.java b/src/main/java/com/yello/server/global/common/factory/DecodeTokenFactory.java index e01ba8c9..92ecd0dc 100644 --- a/src/main/java/com/yello/server/global/common/factory/DecodeTokenFactory.java +++ b/src/main/java/com/yello/server/global/common/factory/DecodeTokenFactory.java @@ -15,10 +15,13 @@ public static Map decodeToken(String jwtToken) { return jsonArray; } - public static String decodePayload(String payload) { + public static Map decodePayload(String payload) { final String decodePayload = new String(java.util.Base64.getUrlDecoder().decode(payload)); - return decodePayload; + BasicJsonParser jsonParser = new BasicJsonParser(); + Map jsonArray = jsonParser.parseMap(decodePayload); + + return jsonArray; } } diff --git a/src/main/java/com/yello/server/global/common/factory/TokenFactoryImpl.java b/src/main/java/com/yello/server/global/common/factory/TokenFactoryImpl.java index b5b6d7ba..7c4f480d 100644 --- a/src/main/java/com/yello/server/global/common/factory/TokenFactoryImpl.java +++ b/src/main/java/com/yello/server/global/common/factory/TokenFactoryImpl.java @@ -35,7 +35,7 @@ public class TokenFactoryImpl implements TokenFactory { @Override public String generateAppleToken() { setKey(); - return Jwts.builder() + String compact = Jwts.builder() .setHeaderParam("kid", kid) .setIssuer(iss) .setIssuedAt(new Date(System.currentTimeMillis())) @@ -48,6 +48,8 @@ public String generateAppleToken() { .generatePrivate(new PKCS8EncodedKeySpec(Base64.decodeBase64(sig))) ) .compact(); + System.out.println(compact + " sdsdfsdsdfss"); + return compact; } @SneakyThrows