java整合google play

Google Play API 官方文档:Google Play Developer API  |  Google for Developers

步骤如下:

  1. 创建账号以及关联API服务
  2. 创建服务账号
  3. 调用API

前两步比较简单,可以参考官方文档:

开始使用  |  Google Play Developer API  |  Google for Developers

这里主要介绍第3步,如何使用java调用Google Play的API接口(服务账号的形式)

进入官网,点击示例

点击“适用于Java的Google API客户端库”

下载“客户端库”的某一版本,如1.30.1,后面需要手动替换依赖

下载“示例代码”

将示例代码samples中的6个类拷贝到客户端库的demo包中(新建demo包)

现在的项目结构如下(多出的2个类是后面建的,忽略即可)

手动替换依赖

<dependencies>
    <dependency>
      <groupId>com.google.api-client</groupId>
      <artifactId>google-api-client</artifactId>
      <version>1.32.1</version>
    </dependency>
    <dependency>
      <groupId>com.google.api-client</groupId>
      <artifactId>google-api-client-extensions</artifactId>
      <version>1.6.0-beta</version>
    </dependency>
    <dependency>
      <groupId>com.google.oauth-client</groupId>
      <artifactId>google-oauth-client-jetty</artifactId>
      <version>1.34.1</version>
    </dependency>
    <dependency>
      <groupId>com.google.api.client</groupId>
      <artifactId>google-api-client-repackaged-com-google-common-base</artifactId>
      <version>1.2.3-alpha</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.83</version>
    </dependency>
</dependencies>

如果AndroidPublisherHelper报JacksonFactory的错,可以替换为GsonFactory

//private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();

将前两步生成的json文件或p12文件放在resouces里。本文章使用的是p12

ApplicationConfig中修改

  • APPLICATION_NAME
  • PACKAGE_NAME
  • SERVICE_ACCOUNT_EMAIL
static final String APPLICATION_NAME = "com.123.abc";

static final String PACKAGE_NAME = "com.123.abc";

static final String SERVICE_ACCOUNT_EMAIL = "xxx.com";

AndroidPublisherHelper中修改文件存放路径

注意:路径是系统的路径,有时使用相对路径会找不到文件,建议使用绝对路径先尝试一下

private static final String SRC_RESOURCES_KEY_P12 = "./resources/xxx.p12";
private static final String RESOURCES_CLIENT_SECRETS_JSON = "./resources/xxx.json";

配置完成后就可以正式调用接口了,那么如何灵活地去调用我们想要的接口呢?

点击“参考文档”

假设我要调 “列出已取消、已退款或已退款的购买交易” 这个接口

先新建一个类,如VoidedPurchasesList

步骤如下:

  1. 初始化服务
  2. 调用接口

public class VoidedPurchasesList {

    private static final Log log = LogFactory.getLog(VoidedPurchasesList.class);

    public static void main(String[] args) {

        try {
            // 1.初始化服务
            Preconditions.checkArgument(!Strings.isNullOrEmpty(ApplicationConfig.PACKAGE_NAME),
                    "全限定包名不能为空");
            final AndroidPublisher service = AndroidPublisherHelper.init(
                    ApplicationConfig.APPLICATION_NAME, ApplicationConfig.SERVICE_ACCOUNT_EMAIL);
            // 2.调用接口 获取purchases.voidedpurchases资源
            // API文档:https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.voidedpurchases/list?hl=zh-cn
            VoidedPurchasesListResponse resp = service.purchases().voidedpurchases().list(ApplicationConfig.PACKAGE_NAME).execute();
            System.out.println(JSON.toJSONString(resp));
        } catch (IOException | GeneralSecurityException ex) {
            log.error("查询退单列表异常", ex);
        }

    }

}

官方的接口为purchases.voidedpurchases

所以只要service.purchases().voidedpurchases().list(ApplicationConfig.PACKAGE_NAME).execute()

如果你想查看评价列表

只需要service.reviews().list(ApplicationConfig.PACKAGE_NAME).execute()即可

如果报了“The current user has insufficient permissions to perform the requested operation.",
    "reason" : "permissionDenied
”,说明权限不足,在前两步时需要做好处理

解决方案可参考:

1、账号权限中需要至少打三个勾

2、勾选API

3、如果以上都做了还是权限不足,原因是Google Play官网自身问题,需要等待权限传播;本人等了5天后才有权限(期间没做任何操作)


注:

1、代码不是凭空而来的,而是由官方示例代码改造而来的

2、需要梯子才能访问Google Play API

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值