关于这方面的文档令人困惑且奇怪地冗长,其中包含几乎无关紧要的内容,而实际上重要的文档几乎没有链接并且很难找到。这应该在可以运行 google api 客户端库的大多数流行服务器平台上运行良好,包括 Java、Python、.Net 和 NodeJS 等。注意:我只测试了如下所示的 Python api 客户端。
必要步骤:
-
通过 Google Play 控制台中的 API 访问链接创建一个 API 项目
-
创建一个新的服务帐户,保存生成的 JSON 私钥。您需要将此文件带到您的服务器。
-
在 Play 控制台的服务帐户部分按完成以刷新并授予对服务帐户的访问权限
-
去https://developers.google.com/api-client-library为你的服务器平台获取一个google api客户端库
-
使用您特定平台的客户端库构建服务接口并直接读取您的购买验证结果。
您确实不需要需要处理授权范围、进行自定义请求调用、刷新访问令牌等。api 客户端库会处理所有事情。下面是一个验证订阅的 python 库使用示例:
首先,像这样在你的 pipenv 中安装 google api 客户端:
$ pipenv install google-api-python-client
然后您可以使用私钥 json 文件设置 api 客户端凭据以验证服务帐户。
credentials = service_account.Credentials.from_service_account_file("service_account.json")
现在您可以直接使用库验证订阅购买或产品购买。
#Build the "service" interface to the API you want
service = googleapiclient.discovery.build("androidpublisher", "v3", credentials=credentials)
#Use the token your API got from the app to verify the purchase
result = service.purchases().subscriptions().get(packageName="your.app.package.id", subscriptionId="sku.name", token="token-from-app").execute()
#result is a python object that looks like this ->
# {'kind': 'androidpublisher#subscriptionPurchase', 'startTimeMillis': '1534326259450', 'expiryTimeMillis': '1534328356187', 'autoRenewing': False, 'priceCurrencyCode': 'INR', 'priceAmountMicros': '70000000', 'countryCode': 'IN', 'developerPayload': '', 'cancelReason': 1, 'orderId': 'GPA.1234-4567-1234-1234..5', 'purchaseType': 0}
播放开发者 API 的平台服务接口的文档链接起来并不容易,对于某些人来说,它是彻头彻尾的很难找到。以下是我找到的流行平台的链接:
Python | Java | .NET | PHP | NodeJS (Github TS) | Go (Github JSON)