From 976aa28fd3a010ca3fcf2c76ff5f4867ebe96ed0 Mon Sep 17 00:00:00 2001 From: hyeonjeongs Date: Sun, 22 Oct 2023 14:06:34 +0900 Subject: [PATCH] YEL-177 [hotfix] apple pay column fix --- .../server/domain/purchase/entity/Purchase.java | 2 +- .../purchase/service/PurchaseManagerImpl.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/yello/server/domain/purchase/entity/Purchase.java b/src/main/java/com/yello/server/domain/purchase/entity/Purchase.java index a324793d..014ef910 100644 --- a/src/main/java/com/yello/server/domain/purchase/entity/Purchase.java +++ b/src/main/java/com/yello/server/domain/purchase/entity/Purchase.java @@ -66,7 +66,7 @@ public class Purchase extends AuditingTimeEntity { @Convert(converter = PurchaseStateConverter.class) private PurchaseState state; - @Column + @Column(length = 15000) private String rawData; @Column(nullable = false) 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 e642a65e..4a6168e3 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 @@ -29,6 +29,7 @@ import com.yello.server.global.common.util.ConstantUtil; import com.yello.server.infrastructure.slack.dto.response.SlackAppleNotificationResponse; import java.util.Map; +import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; @@ -112,35 +113,47 @@ public Purchase decodeAppleNotificationData(String signedTransactionInfo) { public void changeSubscriptionStatus(AppleNotificationPayloadVO payloadVO) { ApplePurchaseVO purchaseData = getPurchaseData(payloadVO); + Purchase purchase = + purchaseRepository.findByTransactionId(purchaseData.transactionId()) + .orElseThrow(() -> new PurchaseNotFoundException(NOT_FOUND_TRANSACTION_EXCEPTION)); User user = purchaseData.purchase().getUser(); if (payloadVO.subtype().equals(ConstantUtil.APPLE_SUBTYPE_AUTO_RENEW_DISABLED) && !user.getSubscribe().equals(Subscribe.NORMAL)) { user.setSubscribe(Subscribe.CANCELED); + purchase.setPurchaseState(PurchaseState.CANCELED); } if (payloadVO.subtype().equals(ConstantUtil.APPLE_SUBTYPE_VOLUNTARY)) { user.setSubscribe(Subscribe.NORMAL); + purchase.setPurchaseState(PurchaseState.PAUSED); } } @Override public void refundAppleInApp(AppleNotificationPayloadVO payloadVO) { ApplePurchaseVO purchaseData = getPurchaseData(payloadVO); + Purchase purchase = + purchaseRepository.findByTransactionId(purchaseData.transactionId()) + .orElseThrow(() -> new PurchaseNotFoundException(NOT_FOUND_TRANSACTION_EXCEPTION)); User user = purchaseData.purchase().getUser(); switch (purchaseData.purchase().getProductType()) { case YELLO_PLUS -> { user.setSubscribe(Subscribe.NORMAL); + purchase.setPurchaseState(PurchaseState.INACTIVE); } case ONE_TICKET -> { validateTicketCount(REFUND_ONE_TICKET, user); + purchase.setPurchaseState(PurchaseState.INACTIVE); } case TWO_TICKET -> { validateTicketCount(REFUND_TWO_TICKET, user); + purchase.setPurchaseState(PurchaseState.INACTIVE); } case FIVE_TICKET -> { validateTicketCount(REFUND_FIVE_TICKET, user); + purchase.setPurchaseState(PurchaseState.INACTIVE); } } } @@ -171,6 +184,9 @@ public void reSubscribeApple(AppleNotificationPayloadVO payloadVO) { createSubscribe(purchase.getUser(), Gateway.APPLE, appleJwtDecode.transactionId(), null, PurchaseState.ACTIVE, appleJwtDecode.toString()); + purchase.setPurchaseState(PurchaseState.INACTIVE); + reSubscribePurchase.setPurchaseState(PurchaseState.ACTIVE); + purchaseRepository.save(reSubscribePurchase); }