我现在正在使用新的播放结算库
基本上,我按照文档查询了要购买的商品
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(itemType);
mBillingClient.querySkuDetailsAsync(params.build(),
new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(int responseCode,
List<SkuDetails> skuDetailsList) {
listener.onSkuDetailsResponse(responseCode, skuDetailsList);
}
但是,responseCode为0且列表也为空。但我检查了BillingSetupFinished是否成功。提供给SkuDetailsParams.Builder的skuList不为空,skuList(sku_id)中的值也与Google Play控制台上指定的产品ID相同。
有谁知道原因?谢谢!
答案 0 :(得分:9)
听起来您的Google Play Console设置存在问题。
请检查:
设置完成后等待一段时间。
答案 1 :(得分:2)
我也遇到了同样的问题,但是通过执行以下操作,我得到了SkuDetails。
答案 2 :(得分:2)
我花了几个小时解决这个问题,问题是我的调试版本/ CI版本具有applicationIdSuffix
。因此,只有具有正确applicationID的生产版本才能检索产品。
答案 3 :(得分:1)
您不需要上传APK。
您应该会感到怀疑。即使在调试模式下测试BillingClient,它也应该可以正常工作。
确保产品或订阅处于活动状态。
花点时间。结算过程可能需要几个小时才能更新您的产品。
答案 4 :(得分:1)
如果应用程序中集成的产品是订阅,请确保设置 from rasa_core.events import ConversationPaused
class ActionTalkToAgent(Action):
def name(self):
return "action_talk_to_agent"
def run(self, dispatcher, tracker, domain):
if tracker.get_slot("lang") == "bn":
dispatcher.utter_template("utter_restart_bot_bn", tracker)
else:
dispatcher.utter_template("utter_restart_bot_en", tracker)
return [ConversationPaused()]
而不是SkuType.SUBS
SkuType.INAPP
GL
答案 5 :(得分:0)
核心问题是Google缓存了您的SKU详细信息,并且存在多层缓存。
您手机上的本地Google Play商店应用会缓存SKU详细信息,而Google的服务器端也会对其进行缓存。 ("There are only two hard things in Computer Science: cache invalidation and naming things.")
最终,如果您等待足够长的时间,缓存将过期,并且Google将开始显示正确的信息。但是谁有时间呢?
由于涉及时间因素,因此很难知道什么有帮助,什么无用,但这是对我有用的。
在内部测试或Alpha轨道上设置APK的版本。 (第一次执行此操作时,必须等待应用程序完成“待发布”。等待本身可以解决问题。)
至少设置一名测试人员,获得选择加入链接(这需要等待您的应用完成“待发布”),然后选择加入。
使用“设置”应用的“应用”部分,强制停止并删除Google Play商店应用的缓存。单击“存储”以访问“清除缓存”按钮。
通过内部测试轨道下载该应用程序的版本。使用android.util.Log
记录您的SKU详细信息,并使用Logcat验证您的SKU详细信息是否正确显示。
...但是不用担心,您不必每次都要进行测试。 Google Play商店缓存更新后,您应该可以使用Android Studio在调试版本中访问您的SKU。
如果在您的内部测试版本中不起作用
如果它可以在您的内部测试版本中使用,但不能在同一设备上的调试版本中使用
在这种情况下,Google Play商店缓存是正确的,但是您的调试版本与创建的内部测试版本有所不同。
applicationIdSuffix
是这里的常见罪魁祸首。答案 6 :(得分:0)
除了先前的答案外,当您在没有Internet连接的情况下执行搜索时,SkuDetailsList可能为空。因此,您也必须在代码中管理这种情况。
答案 7 :(得分:-1)
对于无法进行应用内购买的国家(古巴,中国等)的用户,也可能发生这种情况
在播放控制台的Pricing & distribution
部分中查看国家/地区状态
答案 8 :(得分:-1)
您的应用必须在Google Play商店中获得批准,这可能需要长达1周的时间