From d72055c7d3f3e419e689eba301fbb7131a2b9714 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sat, 23 Mar 2024 00:20:02 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B5=AC=EA=B8=80=20=EC=9D=B8=20=EC=95=B1=20?= =?UTF-8?q?=EA=B2=B0=EC=A0=9C=20=EC=B2=98=EB=A6=AC=EA=B3=BC=EC=A0=95=20?= =?UTF-8?q?=EC=B6=95=EC=86=8C=20-=20=EA=B8=B0=EC=A1=B4=EC=97=90=EB=8A=94?= =?UTF-8?q?=20=EC=B6=A9=EC=A0=84=EA=B3=BC=20=EA=B2=80=EC=A6=9D=20API?= =?UTF-8?q?=EA=B0=80=20=EB=B6=84=EB=A6=AC=EB=90=98=EC=96=B4=20=EC=9E=88?= =?UTF-8?q?=EC=97=88=EC=A7=80=EB=A7=8C=20PG=EC=99=80=20=EB=8B=A4=EB=A5=B4?= =?UTF-8?q?=EA=B2=8C=20chargeId=EA=B0=80=20=ED=95=84=EC=9A=94=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=95=84=20=EC=B6=A9=EC=A0=84=20API?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EA=B5=AC=EA=B8=80=EC=84=9C=EB=B2=84?= =?UTF-8?q?=EC=97=90=20=EA=B2=80=EC=A6=9D=EC=9D=84=20=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/can/charge/ChargeController.kt | 6 ---- .../sodalive/can/charge/ChargeData.kt | 4 +-- .../sodalive/can/charge/ChargeService.kt | 29 +++++-------------- 3 files changed, 10 insertions(+), 29 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeController.kt index 27b6cea..6880bef 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeController.kt @@ -61,10 +61,4 @@ class ChargeController(private val service: ChargeService) { ApiResponse.ok(service.googleCharge(member, request)) } - - @PostMapping("/google/verify") - fun googleVerify( - @RequestBody request: GoogleVerifyRequest, - @AuthenticationPrincipal user: User - ) = ApiResponse.ok(service.googleVerify(user, request)) } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeData.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeData.kt index a494333..4ac82a1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeData.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeData.kt @@ -39,7 +39,7 @@ data class GoogleChargeRequest( val chargeCan: Int, val price: Double, val currencyCode: String, + val productId: String, + val purchaseToken: String, val paymentGateway: PaymentGateway ) - -data class GoogleVerifyRequest(val productId: String, val purchaseToken: String, val chargeId: Long) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeService.kt index cb22b78..7b93788 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/can/charge/ChargeService.kt @@ -187,7 +187,7 @@ class ChargeService( } @Transactional - fun googleCharge(member: Member, request: GoogleChargeRequest): ChargeResponse { + fun googleCharge(member: Member, request: GoogleChargeRequest) { val charge = Charge(request.chargeCan, 0) charge.title = request.title charge.member = member @@ -195,38 +195,25 @@ class ChargeService( val payment = Payment(paymentGateway = request.paymentGateway) payment.locale = request.currencyCode payment.price = request.price + payment.receiptId = request.purchaseToken + payment.method = "구글(인 앱 결제)" charge.payment = payment chargeRepository.save(charge) - return ChargeResponse(chargeId = charge.id!!) - } - - @Transactional - fun googleVerify(user: User, request: GoogleVerifyRequest) { - val charge = chargeRepository.findByIdOrNull(request.chargeId) - ?: throw SodaException("결제정보에 오류가 있습니다.") - val member = memberRepository.findByEmail(user.username) - ?: throw SodaException("로그인 정보를 확인해주세요.") - - if (charge.payment!!.paymentGateway == PaymentGateway.GOOGLE_IAP) { + if (request.paymentGateway == PaymentGateway.GOOGLE_IAP) { try { - androidPublisher.purchases().products() - .consume("kr.co.vividnext.sodalive", request.productId, request.purchaseToken) - .execute() - val response = androidPublisher.purchases().products() .get("kr.co.vividnext.sodalive", request.productId, request.purchaseToken) .execute() ?: throw SodaException("결제정보에 오류가 있습니다.") + if ( response.purchaseState == 0 && response.consumptionState == 1 && - charge.payment?.status == PaymentStatus.REQUEST + payment.status == PaymentStatus.REQUEST ) { - charge.payment?.receiptId = response.purchaseToken - charge.payment?.method = "구글(인 앱 결제)" - charge.payment?.status = PaymentStatus.COMPLETE - member.charge(charge.chargeCan, charge.rewardCan, "aos") + payment.status = PaymentStatus.COMPLETE + member.charge(request.chargeCan, 0, "aos") applicationEventPublisher.publishEvent( ChargeSpringEvent( -- 2.40.1