«Один или несколько из предоставленных аргументов недействительны» при обновлении до более высокого уровня через RevenueAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 «Один или несколько из предоставленных аргументов недействительны» при обновлении до более высокого уровня через Revenue

Сообщение Anonymous »

My Android -приложение объединяет Revenuecat SDK V8.3.1 и предлагает несколько уровней подписки для пользователей. Ошибка в заголовке происходит для некоторых пользователей. Насколько я признал, среди тысяч пользователей два пользователя. (Это в производственной среде, а не что-то вроде проблемы с тестовым пользователем) Представленные аргументы недействительны. < /p>
< /blockquote>
Фактический код функции называется, когда пользователь пытается обновить их Подписка: < /p>
fun selectSubscriptionPlan(activity: Activity, product: StoreProduct) {
if (uiState.value.isPurchasing) return

viewModelScope.launch {
if (Purchases.sharedInstance.isAnonymous) {
// Block to purchase if the signing-in to RevenueCat has never succeeded even at this point.
_effect.emit(Effect.DisplayErrorMessage(activity.getString(R.string.message_anonymous_user)))
return@launch
}
FirebaseCrashlytics.getInstance().log("Activity: $activity")
FirebaseCrashlytics.getInstance().log("Product to purchase: $product")
try {
val params = PurchaseParams.Builder(activity, product)

// To ensure the uiState.value.activeSubscriptionProduct is up to date.
fetchCustomerInfo()

uiState.value.activeSubscriptionProduct?.let { currentSubscription ->
FirebaseCrashlytics.getInstance()
.log("Current subscription: $currentSubscription")
if (product != currentSubscription) {
val currentProductId = currentSubscription.id.split(":").first()
val newProductId = product.id.split(":").first()
val isCrossGrade = currentProductId == newProductId
val isUpgrade =
pricePerYear(product) > pricePerYear(currentSubscription)
val replacementMode = if (isCrossGrade) {
GoogleReplacementMode.WITHOUT_PRORATION
} else if (isUpgrade) {
GoogleReplacementMode.CHARGE_PRORATED_PRICE
} else {
GoogleReplacementMode.DEFERRED
}
params.googleReplacementMode(replacementMode)
params.oldProductId(currentProductId)

FirebaseCrashlytics.getInstance()
.log("Parameters: currentProductId=$currentProductId, newProductId=$newProductId, isCrossGrade=$isCrossGrade, isUpgrade=$isUpgrade, replacementMode=$replacementMode")
}
}
_uiState.value = uiState.value.copy(isPurchasing = true)
val result = Purchases.sharedInstance.awaitPurchase(params.build())
FirebaseCrashlytics.getInstance().log("Result: $result")
if (result.customerInfo.activeSubscriptions.contains(product.id)) {
_effect.emit(Effect.DisplaySuccessMessage(message = activity.getString(R.string.message_purchase_succeeded)))
updateSubscriptionStatus(isSubscribed = true)
fetchCustomerInfo()
}
} catch (e: PurchasesTransactionException) {
if (!e.userCancelled) {
_effect.emit(Effect.DisplayErrorMessage(e.message))
}
FirebaseCrashlytics.getInstance().recordException(e)
} finally {
_uiState.value = uiState.value.copy(isPurchasing = false)
}
}
}
< /code>
Я могу заметить, что журнал, который я вкладываю в Crashlytics, когда возникает ошибка, говорит о действительных идентификаторах производства, а режим замены также должен быть действительным. < /p>
Parameters: currentProductId=airfriend_pro, newProductId=airfriend_mega, isCrossGrade=false, isUpgrade=true, replacementMode=CHARGE_PRORATED_PRICE

Я также прошу пользователя 1) проверить их метод оплаты в их учетной записи Google, а также 2) регистрация/регистрация в учетную запись Google снова, но он говорит о проблеме Останки. Non-fatal Exception: com.revenuecat.purchases.PurchasesTransactionException: One or more of the arguments provided are invalid.
at com.revenuecat.purchases.CoroutinesExtensionsCommonKt$awaitPurchase$2$2.invoke(CoroutinesExtensionsCommon.kt:60)
at com.revenuecat.purchases.CoroutinesExtensionsCommonKt$awaitPurchase$2$2.invoke(CoroutinesExtensionsCommon.kt:55)
at com.revenuecat.purchases.ListenerConversionsCommonKt$purchaseCompletedCallback$1.onError(ListenerConversionsCommon.kt:22)
at com.revenuecat.purchases.PurchasesOrchestrator$dispatch$1.invoke(PurchasesOrchestrator.kt:944)
at com.revenuecat.purchases.PurchasesOrchestrator$dispatch$1.invoke(PurchasesOrchestrator.kt:943)
at com.revenuecat.purchases.PurchasesOrchestrator.dispatch$lambda$17(PurchasesOrchestrator.kt:845)
at androidx.appcompat.widget.TooltipCompatHandler$$ExternalSyntheticLambda0.run(R8$$SyntheticClass:9)
at android.os.Handler.handleCallback(Handler.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:9063)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:588)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)


Подробнее здесь: https://stackoverflow.com/questions/794 ... igher-tier
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»