google退款
接入google退款流程
- 首先获取google后台相关参数,拼凑链接访问授权获取code
获取授权链接例如:https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri=https://rise-of-warlords.firebaseapp.com/__/auth/handler&client_id=886846451512-gjrst2ig8hm39r2sv40m53ei7tdgsv3a.apps.googleusercontent.com - 授权之后会跳转到如图,链接中的code就是获取刷新令牌的code字段
- 参照文档获取刷新令牌
https://developers.google.com/accounts/docs/OAuth2
- 获取刷新令牌之后用刷新令牌获取每次请求的令牌就可以了,然后拼凑链接获取订单信息
参照文档:https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.voidedpurchases/list
访问链接里面的packageName需要在google后台查看对应的包
- 最后的链接例如:https://www.googleapis.com/androidpublisher/v3/applications/com.wmzs.ft.bs/purchases/voidedpurchases?scope=https://www.googleapis.com/auth/androidpublisher&access_token=ya29.a0AfH6SMDWtdMbmnGpert-hQfU7QsnrE78UUj6jgDJ-IiSiTdKqQEGna_AOJ3jhWC_CEtvcmjIspIJQ_2_9x9oiqNPfVSxhBp3d5EoC8B7yeEVQF6DHmcoyMZQmF9O663taz9Q5Fw3_p-QunpSLUAlNDo2enEq&startTime=1622703600000
访问会有报错如图:
- 此处需要开启api访问https://console.cloud.google.com/apis/api/androidpublisher.googleapis.com/overview启用api
启用之后会继续报错如图:
- 此处需要去后台关联对应项目
开启服务
- 示例代码
$arparam = array(
'grant_type' => 'refresh_token',
'client_id' => "$this->client_id",
'client_secret' => "$this->client_secret",
'refresh_token' => $this->refresh_token
);
$urls = 'https://accounts.google.com/o/oauth2/token';
$strjson = $this->httppost($urls, $arparam);
if ($strjson) {
$ardata = json_decode($strjson, true);
$accesstoken = $ardata['access_token'];
$urls = 'https://www.googleapis.com/androidpublisher/v3/applications/'.$this->package_name.'/purchases/voidedpurchases?scope=https://www.googleapis.com/auth/androidpublisher&access_token=' . $accesstoken;
$urls .= '&startTime=' . $btime . '000';
$strjson = $this->httpget($urls);
if ($strjson) {
$ardata = json_decode($strjson, true);
}
if(isset($ardata['voidedPurchases']) && $ardata['voidedPurchases']) {
$arlist = $ardata['voidedPurchases'];
foreach($arlist as $item){
//处理自己的逻辑
$len = strlen($item['voidedTimeMillis']) - 3;
$refund_time = substr($item['voidedTimeMillis'], 0, $len);//退款时间
}
}
}