在后端检查 google android 订阅状态

check google android subscription status on backend

我们想在我们的应用程序中使用google的订阅。
目前我可以在客户端购买和查看订阅状态。 有什么方法可以让我们在 php 后端检查订阅状态?

在后端我们有:

是的。您可以通过从您的服务器(在您的情况下为 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

其中: