检查后端的谷歌Android订阅状态

时间:2017-02-01 14:42:51

标签: php android in-app-purchase subscriptions

我们想在我们的应用中使用Google订阅。
目前我可以在客户端购买和查看订阅状态。 有没有办法在php后端检查订阅状态?

在后端我们有:

  • 公共许可证密钥
  • 产品ID(sku)
  • 购买代币

1 个答案:

答案 0 :(得分:3)

是。您可以通过从服务器(在您的情况下为php)发送带有购买令牌的请求到play store api来检查订阅状态。您可以检查服务器响应中的expiryTimeMillis字段,看看购买是否已过期。 另请查看此答案 - https://stackoverflow.com/a/34005001/4250161

以下是如何在php中获取购买过期日期的示例:

$ch = curl_init();
$TOKEN_URL = "https://accounts.google.com/o/oauth2/token";
$VALIDATE_URL = "https://www.googleapis.com/androidpublisher/v2/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

其中: