@@ -25,10 +25,12 @@ import com.flipcash.services.billing.BillingClientState
2525import com.flipcash.services.billing.IapPaymentError
2626import com.flipcash.services.billing.IapPaymentEvent
2727import com.flipcash.services.billing.IapProduct
28+ import com.flipcash.services.billing.ProductPrice
2829import com.flipcash.services.internal.model.billing.IapMetadata
2930import com.flipcash.services.internal.model.billing.Receipt
3031import com.flipcash.services.repository.PurchaseRepository
3132import com.flipcash.services.user.UserManager
33+ import com.getcode.opencode.model.financial.CurrencyCode
3234import com.getcode.utils.TraceType
3335import com.getcode.utils.trace
3436import com.google.common.collect.ImmutableList
@@ -113,7 +115,7 @@ internal class GooglePlayBillingClient(
113115 override fun hasPaidFor (product : IapProduct ) =
114116 purchases[product.productId] == PurchaseState .PURCHASED
115117
116- override fun costOf (product : IapProduct ): String {
118+ override fun costOf (product : IapProduct ): ProductPrice ? {
117119 printLog(" checking cost of ${product.productId} in ${productDetails.entries} " )
118120 var details = productDetails[product.productId]
119121 if (details == null ) {
@@ -130,10 +132,15 @@ internal class GooglePlayBillingClient(
130132 )
131133 )
132134 }
133- return " "
135+ return null
134136 }
135137
136- return details.oneTimePurchaseOfferDetails?.formattedPrice ? : " "
138+ return details.oneTimePurchaseOfferDetails?.let {
139+ ProductPrice (
140+ amount = it.priceAmountMicros / 1_000_000.0 ,
141+ currency = it.priceCurrencyCode
142+ )
143+ }
137144 }
138145
139146 override suspend fun purchase (activity : Activity , product : IapProduct ) {
@@ -173,21 +180,26 @@ internal class GooglePlayBillingClient(
173180 printLog(" onPurchaseComplete for ${item.purchaseToken} " )
174181
175182 val details = productDetails[item.products.first()]
183+ val product = item.products.first()
184+ val receipt = Receipt (item.purchaseToken)
176185 val price = details?.oneTimePurchaseOfferDetails?.priceAmountMicros
177186 ?.let { priceMicros -> priceMicros / 1_000_000.0 } ? : 0.0
178- val currency = details?.oneTimePurchaseOfferDetails?.priceCurrencyCode ? : " USD"
187+ val currencyCode = CurrencyCode .tryValueOf(details?.oneTimePurchaseOfferDetails?.priceCurrencyCode) ? : CurrencyCode .USD
188+
189+ printLog(" product=$product , $receipt =$receipt , price=$price , currency=${currencyCode.name} " )
179190
180191 purchaseRepository.onPurchaseCompleted(
181192 owner = userManager.accountCluster?.authority?.keyPair!! ,
182- receipt = Receipt (item.purchaseToken) ,
193+ receipt = receipt ,
183194 metadata = IapMetadata (
184- product = item.products.first() ,
195+ product = product ,
185196 amount = price,
186- currency = currency
197+ currency = currencyCode
187198 )
188199 ).onSuccess {
189200 acknowledgeOrConsume(item)
190201 }.onFailure {
202+ it.printStackTrace()
191203 _eventFlow .emit(
192204 IapPaymentEvent .OnError (
193205 item.products.firstOrNull() ? : " NONE" ,
0 commit comments