首页 > 解决方案 > 无法使用 Purchase.Subscription:acknowledge 来确认订阅

问题描述

​目前我使用服务器接收 GCP Pub/Sub 消息,我想Purchase.Subscriptions:acknowledge在服务器收到通知时执行调用以确认尚未确认的订阅。

这是场景...
用户购买订阅 A,订阅期为 30 天,然后升级为 1 年期。在服务器端,将在 30 天订阅期即将到期时收到升级交易的通知。由于服务器通过使用检索信息,Purchase.Subscription:Get您可以看到此升级交易的确认状态为0,因此服务器调用Purchase.Subscription:Acknowledge确认此交易,但问题是它返回错误消息说“订阅购买不是由使用拥有” .

以下是错误消息的样子:​</p>

{
    "error": {
       "errors": [
          {
              "domain": "androidpublisher",
              "reason": "subscriptionNotOwnedByUser",
              "message": "The subscription purchase not is owned by the user."
          }
       ],
       "code": 400,
       "message": "The subscription purchase not is owned by the user."
    }
}

有没有人有同样的问题?

另一个信息是,在 Android 应用程序中,我DEFERRED在 BillingFlowParams 类中设置了按比例分配模式,这就是为什么我不能立即在应用程序中确认新交易,因为新交易的状态尚未购买,我可以只在服务器端进行确认。

标签: androidgoogle-playin-app-purchasegoogle-play-developer-api

解决方案


如果您正在实现Purchase.Subscription:AcknowledgePurchase 对象,现在包含一个isAcknowledged()指示是否已确认购买的方法。此外,服务器端 API 现在包括Product.purchases.get()和的确认布尔值Product.subscriptions.get()。在确认购买之前,请务必使用这些方法来确定购买是否已被确认。

这里提到了如何整合它

看看下面的链接,这些可能会给你更多的信息。

https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/acknowledge

https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get


推荐阅读