diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-08-21 08:53:00 +0200 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2025-08-21 08:53:00 +0200 |
| commit | 1cdea8d276a0eb62452696e811b9f327fc472a83 (patch) | |
| tree | aa56d3c0861e32f4cbb5f03ffba5dddfd1b69bc7 /android/lib | |
| parent | 5cd267d7fc9f629b9bf6f4e72e1460ab5f543912 (diff) | |
| parent | 61f1660bdd956032b2b6c50f5e7ff0a89f458fac (diff) | |
| download | mullvadvpn-1cdea8d276a0eb62452696e811b9f327fc472a83.tar.xz mullvadvpn-1cdea8d276a0eb62452696e811b9f327fc472a83.zip | |
Merge branch 'investigate-purchases-not-being-credited-droid-2086'
Diffstat (limited to 'android/lib')
| -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()) } } |
