summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2025-08-19 15:23:19 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2025-08-21 08:43:39 +0200
commit9fc7b1aff13c0aaa40b105402dbc992d91eff307 (patch)
tree66f74c5c47fcf7c38024afe5ba93e7b37010a073
parentf0732645a4fd249a753361b7029d5aee1abc3c9e (diff)
downloadmullvadvpn-9fc7b1aff13c0aaa40b105402dbc992d91eff307.tar.xz
mullvadvpn-9fc7b1aff13c0aaa40b105402dbc992d91eff307.zip
Add logging to verify play purchase
-rw-r--r--android/lib/billing/src/main/kotlin/net/mullvad/mullvadvpn/lib/billing/BillingPaymentRepository.kt35
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()) }
}