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(