在后端检查 google android 订阅状态
check google android subscription status on backend
我们想在我们的应用程序中使用google的订阅。
目前我可以在客户端购买和查看订阅状态。
有什么方法可以让我们在 php 后端检查订阅状态?
在后端我们有:
- public 许可证密钥
- 产品编号(sku)
- 购买代币
是的。您可以通过从您的服务器(在您的情况下为 php)向 Play 商店 api 发送带有购买令牌的请求来检查订阅状态。您可以检查服务器响应中的 expiryTimeMillis
字段,看看购买是否已过期。
还要检查这个答案 -
这是一个如何在 php 中获取购买过期日期的示例:
$ch = curl_init();
$TOKEN_URL = "https://accounts.google.com/o/oauth2/token";
$VALIDATE_URL = "https://www.googleapis.com/androidpublisher/v3/applications/".
$appid."/purchases/subscriptions/".
$productID."/tokens/".$purchaseToken;
$input_fields = 'refresh_token='.$refreshToken.
'&client_secret='.$clientSecret.
'&client_id='.$clientID.
'&redirect_uri='.$redirectUri.
'&grant_type=refresh_token';
//Request to google oauth for authentication
curl_setopt($ch, CURLOPT_URL, $TOKEN_URL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $input_fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$result = json_decode($result, true);
if (!$result || !$result["access_token"]) {
//error
return;
}
//request to play store with the access token from the authentication request
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$VALIDATE_URL."?access_token=".$result["access_token"]);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$result = json_decode($result, true);
if (!$result || $result["error"] != null) {
//error
return;
}
$expireTime = date('Y-m-d H:i:s', $result["expiryTimeMillis"]/1000. - date("Z"));
//You get the purchase expire time, for example 2017-02-22 09:16:42
其中:
$appId
- 您的应用程序包名称,如 com.facebook.messenger
$refreshToken, $clientID, $clientSecret
- 您的 oauth2 帐户详细信息。有关 Play 商店的更多详细信息 api,请参阅 https://developers.google.com/android-publisher/api-ref/
关于如何获得它们,请参阅 https://developers.google.com/identity/protocols/oauth2#installed
我们想在我们的应用程序中使用google的订阅。
目前我可以在客户端购买和查看订阅状态。
有什么方法可以让我们在 php 后端检查订阅状态?
在后端我们有:
- public 许可证密钥
- 产品编号(sku)
- 购买代币
是的。您可以通过从您的服务器(在您的情况下为 php)向 Play 商店 api 发送带有购买令牌的请求来检查订阅状态。您可以检查服务器响应中的 expiryTimeMillis
字段,看看购买是否已过期。
还要检查这个答案 -
这是一个如何在 php 中获取购买过期日期的示例:
$ch = curl_init();
$TOKEN_URL = "https://accounts.google.com/o/oauth2/token";
$VALIDATE_URL = "https://www.googleapis.com/androidpublisher/v3/applications/".
$appid."/purchases/subscriptions/".
$productID."/tokens/".$purchaseToken;
$input_fields = 'refresh_token='.$refreshToken.
'&client_secret='.$clientSecret.
'&client_id='.$clientID.
'&redirect_uri='.$redirectUri.
'&grant_type=refresh_token';
//Request to google oauth for authentication
curl_setopt($ch, CURLOPT_URL, $TOKEN_URL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $input_fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$result = json_decode($result, true);
if (!$result || !$result["access_token"]) {
//error
return;
}
//request to play store with the access token from the authentication request
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$VALIDATE_URL."?access_token=".$result["access_token"]);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
$result = json_decode($result, true);
if (!$result || $result["error"] != null) {
//error
return;
}
$expireTime = date('Y-m-d H:i:s', $result["expiryTimeMillis"]/1000. - date("Z"));
//You get the purchase expire time, for example 2017-02-22 09:16:42
其中:
$appId
- 您的应用程序包名称,如 com.facebook.messenger$refreshToken, $clientID, $clientSecret
- 您的 oauth2 帐户详细信息。有关 Play 商店的更多详细信息 api,请参阅 https://developers.google.com/android-publisher/api-ref/ 关于如何获得它们,请参阅 https://developers.google.com/identity/protocols/oauth2#installed