diff options
Diffstat (limited to 'android')
| -rw-r--r-- | android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingPaymentRepository.kt | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingPaymentRepository.kt b/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingPaymentRepository.kt index e7ab084232..756aad02aa 100644 --- a/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingPaymentRepository.kt +++ b/android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingPaymentRepository.kt @@ -25,6 +25,7 @@ import net.mullvad.mullvadvpn.lib.billing.model.PurchaseEvent import net.mullvad.mullvadvpn.lib.model.PlayPurchase import net.mullvad.mullvadvpn.lib.model.PlayPurchaseInitError import net.mullvad.mullvadvpn.lib.model.PlayPurchasePaymentToken +import net.mullvad.mullvadvpn.lib.model.PlayPurchaseVerifyError import net.mullvad.mullvadvpn.lib.payment.PaymentRepository import net.mullvad.mullvadvpn.lib.payment.ProductIds import net.mullvad.mullvadvpn.lib.payment.model.PaymentAvailability @@ -164,14 +165,32 @@ class BillingPaymentRepository( } } - private suspend fun verifyPurchase(purchase: Purchase) = - playPurchaseRepository - .verifyPlayPurchase( - PlayPurchase( - productId = purchase.products.first(), - purchaseToken = PlayPurchasePaymentToken(purchase.purchaseToken), + private suspend fun verifyPurchase( + purchase: Purchase + ): Either<PlayPurchaseVerifyError, ProductId> = + either { + ensure(purchase.products.isNotEmpty()) { + Logger.e("Purchase has no products") + PlayPurchaseVerifyError.OtherError + } + ensure(purchase.purchaseToken.isNotEmpty()) { + Logger.e("Purchase has no purchase token") + PlayPurchaseVerifyError.OtherError + } + playPurchaseRepository + .verifyPlayPurchase( + PlayPurchase( + productId = purchase.products.first(), + purchaseToken = PlayPurchasePaymentToken(purchase.purchaseToken), + ) + ) + .also { Logger.d("Purchase verification result $it") } + .bind() + } + .onLeft { + Logger.e( + "Failed to verify purchase token ending with ${purchase.purchaseToken.takeLast(2)}" ) - ) - .also { Logger.d("Purchase verification result $it") } + } .map { ProductId(purchase.products.first()) } } |
