Google IAP订阅

时间:2018-05-16 10:01:16

标签: android google-play in-app-purchase google-play-services in-app-billing

我刚看过这个:Google Play Developer API: "startTimeMillis" is updated when it should not

但它相当古老。有人可以确认它是否正常工作?

目前的问题是,在我们的其他付款方式系统中,我们创建了自己的订阅。此订阅结束时,我们取消订阅,不再允许用户。如果用户稍后重新订阅,则是我们的新订阅。

但是,如果用户重新订阅,我们会获得新的purchaseToken,这部分工作正常。但是旧的子项应该仍然没有报酬。但是,如果用户订阅并且旧令牌再次变为活动状态且两个不同的令牌将返回相同的结果,则会出现问题。

我们将使用此终结点:https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get应该有以下结果:https://developers.google.com/android-publisher/api-ref/purchases/subscriptions#resource

我们能否以某种方式发现旧令牌已被取消,然后重新订阅,我们应该期待新订阅?

1 个答案:

答案 0 :(得分:4)

我们已经模拟了它,结果就是这样:

这是要求:

注册新用户

购买订阅

保存回复字段,以便将其调用到评论https://developers.google.com/android-publisher/api-ref/purchases/subscriptions/get

调用前一个端点并将响应保存到注释中

取消订阅

等待1个月到期

调用端点,检查端点是否已过期并保存响应

重新订阅

使用旧数据调用端点,使用重新订阅的数据调用端点,同时保存对注释的响应

购买第一个订阅:

df = pd.read_csv(file, comment=';')

Google对首次订阅的回复:

{ "orderId": "GPA.3353-9191-0752-74136", "packageName": "xxx", "productId": "xxx", "purchaseTime": 1526543042663, "purchaseState": 0, "developerPayload": "ee40691d0a3e5f3600df9f35e3346ba7", "signature": "xxx", "purchaseToken": "xxx", "autoRenewing": true }

购买第二份订阅:

{ "kind": "androidpublisher#subscriptionPurchase", "startTimeMillis": "1526543042663", "expiryTimeMillis": "1526543456810", "autoRenewing": true, "priceCurrencyCode": "GBP", "priceAmountMicros": "11990000", "countryCode": "GB", "developerPayload": "xxx", "paymentState": 1, "orderId": "GPA.3353-9191-0752-74136", "purchaseType": 0 }

Google对第二次订阅的回复:

{ "orderId": "GPA.3348-1559-2255-63309", "packageName": "xxx", "productId": "de.mp.ft.01.test", "purchaseTime": 1526543263033, "purchaseState": 0, "developerPayload": "xxx", "purchaseToken": "mibhepofikjpphaoimomekai.AO-J1Oytkgta2QbLt9lQa7y66eVnqqU1-yjOQJ9B4Sq5Md3Y1OvXJzE-MaazMhAr8gdazydx5sUHTPYg_93mocy37UW8c2M4RFDd0HmbP36lz9HIT7SJmAU", "autoRenewing": true }

Google在测试流程结束时调用第一个订阅(8。)

{ "kind": "androidpublisher#subscriptionPurchase", "startTimeMillis": "1526543263033", "expiryTimeMillis": "1526543756810", "autoRenewing": true, "priceCurrencyCode": "GBP", "priceAmountMicros": "11990000", "countryCode": "GB", "developerPayload": "xxx", "paymentState": 1, "orderId": "GPA.3348-1559-2255-63309..0", "linkedPurchaseToken": "ldblmpncfnknbgdmojghdkgj.AO-J1Oy6BqXGaqL355JjzOTQrwfzmLPtckmXmQLfgxX-pwVM3iRin81_AiYVUKsg4FX_ojD_MZabwj886prQhI2jjTXiDWjGqYPp5ZJVbGhZwdHQJkyi2WQ", "purchaseType": 0 }

结论 - 原始订阅(幸运的是)不是新订阅的克隆,expiryTimeMillis之类的字段不在这两个令牌之间共享。但确实,两者的startTimeMillis相同