无法在android中的应用购买产品数据中显示

Posted

技术标签:

【中文标题】无法在android中的应用购买产品数据中显示【英文标题】:Unable to display in app purchase product data in android 【发布时间】:2020-12-23 20:01:01 【问题描述】:

到目前为止,我可以收到 ios 设备的产品信息,但不能收到 android 设备。

这是我在组件模块中的代码:

  registerProduct() 
    this.inAppPurchase.verbosity = this.inAppPurchase.DEBUG;
    this.inAppPurchase.register(
      id: 'android.prod',
      type: this.inAppPurchase.NON_CONSUMABLE
    );
    this.registerHandlersForPurchase('android.prod');
    this.inAppPurchase.refresh();
  

  registerHandlersForPurchase(productId) 
    const self = this.inAppPurchase;
    this.inAppPurchase.when(productId).updated((product) => 
      if (product.loaded && product.valid && product.state === self.APPROVED && product.transaction != null) 
        product.finish();
      
    );
    this.inAppPurchase.when(productId).registered((product: IAPProduct) => 
      // alert(` owned $product.owned`);
    );
    this.inAppPurchase.when(productId).owned((product: IAPProduct) => 
      // alert(` owned $product.owned`);
      product.finish();
    );
    this.inAppPurchase.when(productId).approved((product: IAPProduct) => 
      // alert('approved');
      product.finish();
    );
    this.inAppPurchase.when(productId).refunded((product: IAPProduct) => 
      // alert('refunded');
    );
    this.inAppPurchase.when(productId).expired((product: IAPProduct) => 
      // alert('expired');
    );
  

这是控制台日志

[store.js] DEBUG: state: android.prod -> registered
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2012 [store.js] DEBUG: store.trigger -> triggering action refreshed
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2781 InAppBilling[js]: setup ok
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2781 InAppBilling[js]: load ["android.prod"]
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2781 InAppBilling[js]: listener: "type":"ready","data":
/pages-profile-profile-module-es2015.js:178 this.currentUser Ice Berg
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2012 [store.js] DEBUG: plugin -> ready
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2781 InAppBilling[js]: getAvailableProducts()
unpkg.com/ionicons@4.5.10-0/dist/ionicons/svg/ios-chevron-forward.svg:1 Failed to load resource: the server responded with a status of 404 ()
/pages-profile-profile-module-es2015.js:210 ionViewDidEnter
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2012 [store.js] DEBUG: plugin -> loaded - []
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2012 [store.js] DEBUG: state: android.prod -> invalid
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2012 [store.js] DEBUG: iabGetPurchases()
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2781 InAppBilling[js]: getPurchases()
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2781 InAppBilling[js]: listener: "type":"setPurchases","data":"purchases":[]
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2012 [store.js] DEBUG: iabSetPurchases: []
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2012 [store.js] DEBUG: inappbilling.getPurchases() -> Success
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2012 [store.js] DEBUG:                             -> object
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2012 [store.js] DEBUG:                             -> []
/plugins/cc.fovea.cordova.purchase/www/store-android.js:2012 [store.js] DEBUG: iabUpdatePurchases: []

iOS 中的不同之处在于这是有效的: [store.js] 调试:状态:android.prod -> 有效

当我导航到这里的页面是代码:

  setupProducts() 

    this.androidProduct = this.inAppPurchase.get('android.prod');
    console.log('product reg', JSON.stringify(this.androidProduct));
  

product reg "id":"android.prod","alias":"android.prod","type":"non consumable","group":"","state":"invalid", "title":null,"description":null,"priceMicros":null,"price":null,"currency":null,"countryCode":null,"loaded":true,"canPurchase":false,"owned ":false,"introPrice":null,"introPriceMicros":null,"introPricePeriod":null,"introPriceNumberOfPeriods":null,"introPricePeriodUnit":null,"introPriceSubscriptionPeriod":null,"introPricePaymentMode":null,"ineligibleForIntroPrice": null,"discounts":[],"downloading":false,"downloaded":false,"additionalData":null,"transaction":null,"valid":false

我在搜索解决方案时读到的一件事是 BILLING_KEY...但 Google Play 控制台中没有 billing_key。我已将我的产品添加到 Google Play,并将我的 .apk 上传到封闭测试 Beta Track。

我的 InApp 产品在 Google Play 控制台中显示为 Active。

离子 -v 6.0.1

科尔多瓦 -v 9.0.0 (cordova-lib@9.0.1)

"cc.fovea.cordova.purchase": "^10.1.1",

所以我不确定如何注册 Android 产品以使其处于活动状态而不是处于非活动状态并检索产品信息。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您可以在 Google Play 控制台(新)中的获利设置 > 许可下找到 Android 计费密钥,以“MIIBxxxxxxxxxxxxxx”开头。

您还需要在终端中运行命令 ionic cordova plugin add cc.fovea.cordova.purchase --variable BILLING_KEY="MIIBxxxxxxxxxx (your own billing key)"。

【讨论】:

以上是关于无法在android中的应用购买产品数据中显示的主要内容,如果未能解决你的问题,请参考以下文章

应用商店审核中的 IAP 错误,无法重现

应用内购买 - 可以获取产品信息但无法连接到 iTunes 进行购买

无法在应用购买中从 iTunes Connect 获取产品标识符?

Android应用内商品价格存储/显示

swift 4 中的应用内购买无效的产品标识符

无法在 IOS 连接的 iTunes 中提交应用内购买的产品