目前的一个需求是:app把购买令牌(purchaseToken)
传过来了,服务端需要使用这个purchaseToken
去请求Google的接口,以检测app内商品的购买和消费状态
配置 Google Play Developer API
若要使用 Google Play Developer API,您需有一个 Google Cloud 项目。
关联Google Cloud项目
如上图,你可以选择关联现有项目,也可以选择创建新项目
关联现有项目
选择现有项目前,需确认该项目开启了Google Play Android Developer API
创建新项目
创建新项目就方便了,系统会自动开启Google Play Android Developer API
在已关联Google Cloud项目中创建服务账号
要访问Google Play Developer API
,你可以选择OAuth 客户端ID或服务帐号,这里推荐使用 服务帐号
创建一个服务帐户:
点击add创建服务帐户。 在服务帐户的详细信息,键入一个名称,ID和服务帐户的描述,然后单击创建并继续。 可选:在授予此服务帐户访问到项目中,选择IAM角色授予服务帐户。(我理解应该是必选) 点击继续。 可选:在授予用户访问该服务帐户,添加允许使用和管理服务帐户的用户或组。(我理解也是可选,我没选) 点击完成。 点击add创建键,然后单击创建。
在创建帐号的过程中,您需要向自己的服务帐号授予对 Google Cloud 项目的访问权限,这样它才能显示在 Google Play 管理中心内。
如需使用 Google Play 结算服务 API,您必须授予以下权限:
- 查看财务数据、订单和用户取消订阅时对调查问卷的书面回复
- 管理订单和订阅
为服务账号创建密钥
密钥创建成功,会提示你保存到本地,一个pc-api-***-797-ac21a2656c65.json
文件,保存好,后面PHP要用
此时,您应该能够通过服务帐号访问 Google Play Developer API。
PHP出场,这里应该有尖叫声~
Google为PHP提供了库,安装
代码语言:javascript复制composer require google/apiclient
以请求purchases.products.get
接口为例
$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接口文档