您可以使用com.google.api-client 和google-api-services-androidpublisher 库。
首先在谷歌开发者控制台(https://console.developers.google.com)上进入项目
- API 和身份验证 -> API
- 启用“Google Play Android 开发者 API”
- 转到凭据 -> 创建新的客户端 ID
- 选择服务帐号
- 创建客户端 ID
- 将 p12 文件保存在安全的地方
然后将刚刚生成的服务帐户电子邮件地址添加到您的 google play 开发者控制台 (https://play.google.com/apps/publish/)
- 设置 -> 用户帐户和权限 -> 邀请新用户
- 粘贴
@developer.gserviceaccount.com邮箱账号
- 选择“查看财务报告”
- 发送邀请
现在看代码。将以下依赖项添加到您的 pom.xml 文件中:
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.18.0-rc</version>
</dependency>
<dependency>
<groupId>com.google.http-client</groupId>
<artifactId>google-http-client-jackson2</artifactId>
<version>1.18.0-rc</version>
</dependency>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-androidpublisher</artifactId>
<version>v1.1-rev25-1.18.0-rc</version>
</dependency>
然后先验证签名:
byte[] decoded = BASE64DecoderStream.decode(KEY.getBytes());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(decoded));
Signature sig = Signature.getInstance("SHA1withRSA");
sig.initVerify(publicKey);
sig.update(signedData.getBytes());
if (sig.verify(BASE64DecoderStream.decode(signature.getBytes())))
{
// Valid
}
如果签名验证获取订阅详细信息:
// fetch signature details from google
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(ACCOUNT_ID)
.setServiceAccountScopes(Collections.singleton("https://www.googleapis.com/auth/androidpublisher"))
.setServiceAccountPrivateKeyFromP12File(new File("key.p12"))
.build();
AndroidPublisher pub = new AndroidPublisher.Builder(httpTransport, jsonFactory, credential)
.setApplicationName(APPLICATION_NAME)
.build();
AndroidPublisher.Purchases.Get get = pub.purchases().get(
APPLICATION_NAME,
PRODUCT_ID,
token);
SubscriptionPurchase subscription = get.execute();
System.out.println(subscription.toPrettyString());
这将通过生成 JWT 令牌来处理所有令牌问题,因此您不必自己处理。