前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用服务账号请求Google Play Developer API

使用服务账号请求Google Play Developer API

作者头像
崔哥
发布2022-09-07 14:01:44
2.6K0
发布2022-09-07 14:01:44
举报
文章被收录于专栏:崔哥的专栏

目前的一个需求是:app把购买令牌(purchaseToken)传过来了,服务端需要使用这个purchaseToken去请求Google的接口,以检测app内商品的购买和消费状态

配置 Google Play Developer API

若要使用 Google Play Developer API,您需有一个 Google Cloud 项目。

关联Google Cloud项目

WX202207091017492x.jpg
WX202207091017492x.jpg

如上图,你可以选择关联现有项目,也可以选择创建新项目

关联现有项目

选择现有项目前,需确认该项目开启了Google Play Android Developer API

WX202207091028352x.png
WX202207091028352x.png
WX202207091030072x.jpg
WX202207091030072x.jpg
WX202207091030462x.png
WX202207091030462x.png
创建新项目

创建新项目就方便了,系统会自动开启Google Play Android Developer API

在已关联Google Cloud项目中创建服务账号

WX202207091037482x.png
WX202207091037482x.png

要访问Google Play Developer API,你可以选择OAuth 客户端ID或服务帐号,这里推荐使用 服务帐号

创建一个服务帐户:

点击add创建服务帐户。 在服务帐户的详细信息,键入一个名称,ID和服务帐户的描述,然后单击创建并继续。 可选:在授予此服务帐户访问到项目中,选择IAM角色授予服务帐户。(我理解应该是必选) 点击继续。 可选:在授予用户访问该服务帐户,添加允许使用和管理服务帐户的用户或组。(我理解也是可选,我没选) 点击完成。 点击add创建键,然后单击创建。

在创建帐号的过程中,您需要向自己的服务帐号授予对 Google Cloud 项目的访问权限,这样它才能显示在 Google Play 管理中心内。

WX202207091106212x.jpg
WX202207091106212x.jpg

如需使用 Google Play 结算服务 API,您必须授予以下权限:

  • 查看财务数据、订单和用户取消订阅时对调查问卷的书面回复
  • 管理订单和订阅
WX202207091100242x.jpg
WX202207091100242x.jpg
WX202207091101352x.jpg
WX202207091101352x.jpg
为服务账号创建密钥
WX202207091112112x.jpg
WX202207091112112x.jpg

密钥创建成功,会提示你保存到本地,一个pc-api-***-797-ac21a2656c65.json文件,保存好,后面PHP要用

此时,您应该能够通过服务帐号访问 Google Play Developer API。

PHP出场,这里应该有尖叫声~

Google为PHP提供了库,安装

代码语言:javascript
复制
composer require google/apiclient

以请求purchases.products.get接口为例

代码语言:javascript
复制
        $configLocation = $this->app->path.'/config/pc-api-***-797-ac21a2656c65.json';
//        echo file_get_contents($configLocation);exit;
        // 将 JSON 设置 环境变量
        putenv('GOOGLE_APPLICATION_CREDENTIALS='.$configLocation);
        //包名
        $package_name='net.cuiwei.voice';
        //商品ID
        $product_id='voice_0';
        //客户端传过来的 purchaseToken
        $purchase_token='facbncnplohikbjmf。。。';
        try {
            $google_client = new \Google_Client();
            $google_client->useApplicationDefaultCredentials();
            $google_client->addScope(\Google_Service_AndroidPublisher::ANDROIDPUBLISHER);
            $androidPublishService = new \Google_Service_AndroidPublisher($google_client);
            $result = $androidPublishService->purchases_products->get(
                $package_name,
                $product_id,
                $purchase_token
            );
            echo json_encode($result, JSON_UNESCAPED_UNICODE);exit;
            //purchaseState  0。已购买1.已取消2.待定 consumptionState 0。尚未消耗1.已消耗
            if($result->purchaseState==1 && $result->consumptionState==1){
                //业务处理
            }
        }catch (Exception $exception){
            return show(0, $exception->getMessage());
        }

注意:上述权限设置完不是立马生效的。我就是刚设置完,就使用PHP请求,结果提示401,然后各种找原因,未果;刚好到饭点,我就去吃饭了,等回来继续试,竟奇迹般的成功了。中间大概隔了1~2个小时

参考

Google Play Developer API 使用入门

如何创建服务账号?

将 OAuth 2.0 用于服务器到服务器应用

purchases.products.get接口文档

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置 Google Play Developer API
    • 关联Google Cloud项目
      • 关联现有项目
      • 创建新项目
    • 在已关联Google Cloud项目中创建服务账号
      • 为服务账号创建密钥
  • PHP出场,这里应该有尖叫声~
  • 参考
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档