无法在 android 中显示应用内购买产品数据
Unable to display in app purchase product data in android
到目前为止,我可以收到 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 ":"无效","标题":null,"描述":null,"priceMicros":null,"价格":null,"货币":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 轨道。
我的 InApp 产品在 Google Play 管理中心显示活跃。
离子-v
6.0.1
科尔多瓦-v
9.0.0 (cordova-lib@9.0.1)
"cc.fovea.cordova.purchase": "^10.1.1",
所以我不确定如何注册 Android 产品以使其处于活动状态而不是非活动状态并检索产品信息。
如有任何帮助,我们将不胜感激。
您可以在 Google Play 管理中心(新版)中找到 Android 结算代码,在获利设置 > 许可下,以“MIIBxxxxxxxxxxxxxx”开头。
您还需要 运行 命令 ionic cordova plugin 添加 cc.fovea.cordova.purchase --variable BILLING_KEY="MIIBxxxxxxxxxx (your own billing key)" in terminal.
到目前为止,我可以收到 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 ":"无效","标题":null,"描述":null,"priceMicros":null,"价格":null,"货币":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 轨道。
我的 InApp 产品在 Google Play 管理中心显示活跃。
离子-v 6.0.1
科尔多瓦-v 9.0.0 (cordova-lib@9.0.1)
"cc.fovea.cordova.purchase": "^10.1.1",
所以我不确定如何注册 Android 产品以使其处于活动状态而不是非活动状态并检索产品信息。
如有任何帮助,我们将不胜感激。
您可以在 Google Play 管理中心(新版)中找到 Android 结算代码,在获利设置 > 许可下,以“MIIBxxxxxxxxxxxxxx”开头。
您还需要 运行 命令 ionic cordova plugin 添加 cc.fovea.cordova.purchase --variable BILLING_KEY="MIIBxxxxxxxxxx (your own billing key)" in terminal.