支付问题的FAQ
注意
该门户网站正在开发中。文档的完整版本请看这里.
Q: 如何修复"Application is not verified yet"错误?
A: 出现此错误的情况包括:
- 应用程序未通过RuStore控制台的审核;
- 开发者测试的apk与上传到RuStore控制台的apk不匹配。
二点需要按以下方式重新检查:
- 在
build.gradle
中指定的 applicationId 必须与您在 RuStore 控制台发布的 apk 文件的 applicationId 匹配。 - keystore 的签名必须与发布在 RuStore 控制台的应用程序签名匹配。确保使用的
buildType
(例如,debug)使用与发布的应用程序(例如,release)相同的签名。
了支付功能的运作,需要完全发布应用程序,仅通过审核是不够的。不久的将来,逻辑将被重新设计,以便测试支付功能仅需通过审核即可。
Q: 如何修复"之前创建的产品'...'的购买,数量为...,金额为...卢布,在另一个会话中支付"的错误?
A: 当尝试购买之前中断且未通过deletePurchase和confirmPurchase方法转入最终状态的产品时,会出现此错误。
这通常发生在流程被中断,且由于流程未正确结束,未在purchaseProduct中调用删除或消耗操作时。
对于这种情况,在应用启动或打开商店时,需要对"悬而未决"的购买进行取消或消耗处理。
以下是实现购买列表处理的示例。启动应用程序或打开商店屏幕时运行此代码:
val purchasesUseCase = billingClient.purchases
val purchases = purchasesUseCase.getPurchases().await().purchases.orEmpty()
purchases.forEach { purchase ->
val purchaseId = purchase.purchaseId
if (purchaseId != null) {
when (purchase.purchaseState) {
PurchaseState.CREATED, PurchaseState.INVOICE_CREATED -> {
purchasesUseCase.deletePurchase(purchaseId).await()
}
PurchaseState.PAID -> {
purchasesUseCase.confirmPurchase(purchaseId).await()
}
else -> Unit
}
}
}