Merge pull request '구글 인 앱 결제 처리과정 축소' (#150) from test into main
Reviewed-on: #150
This commit is contained in:
		| @@ -61,10 +61,4 @@ class ChargeController(private val service: ChargeService) { | |||||||
|  |  | ||||||
|         ApiResponse.ok(service.googleCharge(member, request)) |         ApiResponse.ok(service.googleCharge(member, request)) | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @PostMapping("/google/verify") |  | ||||||
|     fun googleVerify( |  | ||||||
|         @RequestBody request: GoogleVerifyRequest, |  | ||||||
|         @AuthenticationPrincipal user: User |  | ||||||
|     ) = ApiResponse.ok(service.googleVerify(user, request)) |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ data class GoogleChargeRequest( | |||||||
|     val chargeCan: Int, |     val chargeCan: Int, | ||||||
|     val price: Double, |     val price: Double, | ||||||
|     val currencyCode: String, |     val currencyCode: String, | ||||||
|  |     val productId: String, | ||||||
|  |     val purchaseToken: String, | ||||||
|     val paymentGateway: PaymentGateway |     val paymentGateway: PaymentGateway | ||||||
| ) | ) | ||||||
|  |  | ||||||
| data class GoogleVerifyRequest(val productId: String, val purchaseToken: String, val chargeId: Long) |  | ||||||
|   | |||||||
| @@ -187,7 +187,7 @@ class ChargeService( | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Transactional |     @Transactional | ||||||
|     fun googleCharge(member: Member, request: GoogleChargeRequest): ChargeResponse { |     fun googleCharge(member: Member, request: GoogleChargeRequest) { | ||||||
|         val charge = Charge(request.chargeCan, 0) |         val charge = Charge(request.chargeCan, 0) | ||||||
|         charge.title = request.title |         charge.title = request.title | ||||||
|         charge.member = member |         charge.member = member | ||||||
| @@ -195,38 +195,25 @@ class ChargeService( | |||||||
|         val payment = Payment(paymentGateway = request.paymentGateway) |         val payment = Payment(paymentGateway = request.paymentGateway) | ||||||
|         payment.locale = request.currencyCode |         payment.locale = request.currencyCode | ||||||
|         payment.price = request.price |         payment.price = request.price | ||||||
|  |         payment.receiptId = request.purchaseToken | ||||||
|  |         payment.method = "구글(인 앱 결제)" | ||||||
|  |  | ||||||
|         charge.payment = payment |         charge.payment = payment | ||||||
|         chargeRepository.save(charge) |         chargeRepository.save(charge) | ||||||
|  |  | ||||||
|         return ChargeResponse(chargeId = charge.id!!) |         if (request.paymentGateway == PaymentGateway.GOOGLE_IAP) { | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @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) { |  | ||||||
|             try { |             try { | ||||||
|                 androidPublisher.purchases().products() |  | ||||||
|                     .consume("kr.co.vividnext.sodalive", request.productId, request.purchaseToken) |  | ||||||
|                     .execute() |  | ||||||
|  |  | ||||||
|                 val response = androidPublisher.purchases().products() |                 val response = androidPublisher.purchases().products() | ||||||
|                     .get("kr.co.vividnext.sodalive", request.productId, request.purchaseToken) |                     .get("kr.co.vividnext.sodalive", request.productId, request.purchaseToken) | ||||||
|                     .execute() ?: throw SodaException("결제정보에 오류가 있습니다.") |                     .execute() ?: throw SodaException("결제정보에 오류가 있습니다.") | ||||||
|  |  | ||||||
|                 if ( |                 if ( | ||||||
|                     response.purchaseState == 0 && |                     response.purchaseState == 0 && | ||||||
|                     response.consumptionState == 1 && |                     response.consumptionState == 1 && | ||||||
|                     charge.payment?.status == PaymentStatus.REQUEST |                     payment.status == PaymentStatus.REQUEST | ||||||
|                 ) { |                 ) { | ||||||
|                     charge.payment?.receiptId = response.purchaseToken |                     payment.status = PaymentStatus.COMPLETE | ||||||
|                     charge.payment?.method = "구글(인 앱 결제)" |                     member.charge(request.chargeCan, 0, "aos") | ||||||
|                     charge.payment?.status = PaymentStatus.COMPLETE |  | ||||||
|                     member.charge(charge.chargeCan, charge.rewardCan, "aos") |  | ||||||
|  |  | ||||||
|                     applicationEventPublisher.publishEvent( |                     applicationEventPublisher.publishEvent( | ||||||
|                         ChargeSpringEvent( |                         ChargeSpringEvent( | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user