구글 인 앱 결제 검증 과정 try/catch로 예외 처리
This commit is contained in:
		@@ -210,30 +210,35 @@ class ChargeService(
 | 
			
		||||
            ?: throw SodaException("로그인 정보를 확인해주세요.")
 | 
			
		||||
 | 
			
		||||
        if (charge.payment!!.paymentGateway == PaymentGateway.GOOGLE_IAP) {
 | 
			
		||||
            androidPublisher.purchases().products()
 | 
			
		||||
                .consume("kr.co.vividnext.sodalive", request.productId, request.purchaseToken)
 | 
			
		||||
                .execute()
 | 
			
		||||
            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
 | 
			
		||||
            ) {
 | 
			
		||||
                charge.payment?.receiptId = response.purchaseToken
 | 
			
		||||
                charge.payment?.method = "구글(인 앱 결제)"
 | 
			
		||||
                charge.payment?.status = PaymentStatus.COMPLETE
 | 
			
		||||
                member.charge(charge.chargeCan, charge.rewardCan, "aos")
 | 
			
		||||
                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
 | 
			
		||||
                ) {
 | 
			
		||||
                    charge.payment?.receiptId = response.purchaseToken
 | 
			
		||||
                    charge.payment?.method = "구글(인 앱 결제)"
 | 
			
		||||
                    charge.payment?.status = PaymentStatus.COMPLETE
 | 
			
		||||
                    member.charge(charge.chargeCan, charge.rewardCan, "aos")
 | 
			
		||||
 | 
			
		||||
                applicationEventPublisher.publishEvent(
 | 
			
		||||
                    ChargeSpringEvent(
 | 
			
		||||
                        chargeId = charge.id!!,
 | 
			
		||||
                        memberId = member.id!!
 | 
			
		||||
                    applicationEventPublisher.publishEvent(
 | 
			
		||||
                        ChargeSpringEvent(
 | 
			
		||||
                            chargeId = charge.id!!,
 | 
			
		||||
                            memberId = member.id!!
 | 
			
		||||
                        )
 | 
			
		||||
                    )
 | 
			
		||||
                )
 | 
			
		||||
            } else {
 | 
			
		||||
                } else {
 | 
			
		||||
                    throw SodaException("결제정보에 오류가 있습니다.")
 | 
			
		||||
                }
 | 
			
		||||
            } catch (e: Exception) {
 | 
			
		||||
                e.printStackTrace()
 | 
			
		||||
                throw SodaException("결제정보에 오류가 있습니다.")
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user