From 6b1610ae016f9aca8867367450838b15a492db23 Mon Sep 17 00:00:00 2001 From: Krzysztof Koziol Date: Wed, 29 Apr 2020 17:17:27 +0200 Subject: [PATCH] Improve error handling between mobile app and and user app --- .../api/appstore/subscription/SubscriptionController.kt | 7 +++++++ .../yaak/domain/appstore/AppStoreSubscriptionService.kt | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/com/dietmap/yaak/api/appstore/subscription/SubscriptionController.kt b/src/main/kotlin/com/dietmap/yaak/api/appstore/subscription/SubscriptionController.kt index efabb11..0247501 100644 --- a/src/main/kotlin/com/dietmap/yaak/api/appstore/subscription/SubscriptionController.kt +++ b/src/main/kotlin/com/dietmap/yaak/api/appstore/subscription/SubscriptionController.kt @@ -1,6 +1,7 @@ package com.dietmap.yaak.api.appstore.subscription import com.dietmap.yaak.domain.appstore.AppStoreSubscriptionService +import com.dietmap.yaak.domain.checkArgument import com.dietmap.yaak.domain.userapp.UserAppSubscriptionOrder import mu.KotlinLogging import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty @@ -26,6 +27,8 @@ class SubscriptionController(private val subscriptionService: AppStoreSubscripti val subscriptionOrder = subscriptionService.handleInitialPurchase(subscriptionPurchaseRequest) + checkArgument(subscriptionOrder != null) { "Could not process SubscriptionPurchaseRequest $subscriptionPurchaseRequest in user app" } + logger.debug { "handleInitialPurchase: $subscriptionOrder" } return ResponseEntity.ok(subscriptionOrder !!) @@ -37,6 +40,8 @@ class SubscriptionController(private val subscriptionService: AppStoreSubscripti val subscriptionOrder = subscriptionService.handleAutoRenewal(subscriptionRenewRequest) + checkArgument(subscriptionOrder != null) { "Could not process SubscriptionRenewRequest $subscriptionRenewRequest in user app" } + logger.debug { "handleAutoRenewal: $subscriptionOrder" } return ResponseEntity.ok(subscriptionOrder !!) @@ -52,6 +57,8 @@ class SubscriptionController(private val subscriptionService: AppStoreSubscripti try { val subscriptionOrder = subscriptionService.handleSubscriptionNotification(statusUpdateNotification) + checkArgument(subscriptionOrder != null) { "Could not process StatusUpdateNotification ${statusUpdateNotification.notificationType} in user app" } + logger.debug { "handleStatusUpdateNotification: $subscriptionOrder" } } catch (ex : Exception) { diff --git a/src/main/kotlin/com/dietmap/yaak/domain/appstore/AppStoreSubscriptionService.kt b/src/main/kotlin/com/dietmap/yaak/domain/appstore/AppStoreSubscriptionService.kt index cdf87a7..2bc1420 100644 --- a/src/main/kotlin/com/dietmap/yaak/domain/appstore/AppStoreSubscriptionService.kt +++ b/src/main/kotlin/com/dietmap/yaak/domain/appstore/AppStoreSubscriptionService.kt @@ -36,6 +36,7 @@ class AppStoreSubscriptionService(val userAppClient: UserAppClient, val appStore originalTransactionId = latestReceiptInfo.originalTransactionId, appMarketplace = AppMarketplace.APP_STORE, expiryTimeMillis = latestReceiptInfo.expiresDateMs, + discountCode = subscriptionPurchaseRequest.discountCode, appStoreReceipt = subscriptionPurchaseRequest.receipt ) @@ -66,6 +67,7 @@ class AppStoreSubscriptionService(val userAppClient: UserAppClient, val appStore expiryTimeMillis = latestReceiptInfo.expiresDateMs, countryCode = null, currencyCode = null, + discountCode = subscriptionRenewRequest.discountCode, appStoreReceipt = subscriptionRenewRequest.receipt ) @@ -104,9 +106,6 @@ class AppStoreSubscriptionService(val userAppClient: UserAppClient, val appStore AppStoreNotificationType.DID_CHANGE_RENEWAL_PREF -> { // auto_renewal_product_id - product customer will auto renew at - // TODO clarify this notification - // Ignore? - // latest_receipt_info.original_transaction_id } @@ -162,10 +161,11 @@ class AppStoreSubscriptionService(val userAppClient: UserAppClient, val appStore expiryTimeMillis = latestReceiptInfo.expiresDateMs, countryCode = null, currencyCode = null, + discountCode = null, appStoreReceipt = statusUpdateNotification.latestReceipt ) - logger.debug("Sending UserAppSubscriptionNotification: $notification") + logger.debug {"Sending UserAppSubscriptionNotification: $notification" } return userAppClient.sendSubscriptionNotification(notification)