首页 > 解决方案 > 如何控制取消订阅 Ionic In app Purchase

问题描述

在 InAppPurchase2 方面需要帮助

我的代码工作正常,但我有一个问题。当用户取消订阅时,我无法识别这一点,但是当重新启动应用程序时,此问题被识别并且应用程序再次运行。

更好地解释: 1 - 应用程序启动和加载商店和产品。OK 2 - 用户订单订阅,应用程序完成此操作,产品进入“拥有”状态。好的 3 - 用户在 Google Play 上取消订阅,但当我的应用调用 store.refresh() 时,产品仍保持“拥有”状态。问题 4 - 当应用程序重新启动产品返回“有效”状态时。

调试我可以看到 when.approved 在我调用 finish() 后仍在调用,直到应用重新启动。

有没有办法重新启动加载存储?

    configurarProdutos() {
        this.platform.ready().then(() => {      

          // Registra os produtos da loja
          this.store.register([
            {id: "mensal_basico",
            type: this.store.PAID_SUBSCRIPTION}
          ]);

          this.registrarEventos('mensal_basico')

          this.store.refresh();
        });    
      }

  registrarEventos(produto) {
    this.store.when(produto)
    .approved( (product: IAPProduct) => {
      product.finish()
    })
  }

标签: angularionic-frameworkin-app-purchaseandroid-inapp-purchase

解决方案


经过几个小时试图找到解决方案,我终于可以和你分享这个了。

代码一切正常,但获取签名信息并不容易。因此 InAppPurchase2 插件可与其他服务一起使用:Fovea.Billing。cust 较低,并且有一个很好的数字可以免费开始。我测试了很多并且喜欢这项服务。

好的,让我们看看我实施的解决方案。

  1. 在 Fovea.Billing 上创建并配置一个帐户。

    • android需要这个配置:文档
  2. 定义要验证的 url。

    • 这个 URL 可以在 Fovea 配置中找到。

示例:store.validator = " https://validator.fovea.cc/v1/validate?appName= &apiKey=";

  1. 要启用验证,请按照以下步骤执行 p.verify() 时会调用收据验证。一些演示代码省略了这一行,因此请确保 p.verify() 从已批准的事件中调用,然后 p.finish() 从已验证的事件中调用。

    store.when('product') .approved(p => p.verify()) .verified(p => p.finish());

之后就可以知道订阅的情况了。如果订阅过期,则不会触发已验证的事件。


推荐阅读