我们想在我们的应用中使用Google订阅。
目前我可以在客户端购买和查看订阅状态。
有没有办法在php后端检查订阅状态?
在后端我们有:
答案 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
其中:
$appId
- 您的应用包名称,例如com.facebook.messenger $refreshToken, $clientID, $clientSecret
- oauth2的帐户详细信息。有关Play商店api的更多详细信息,请参阅https://developers.google.com/android-publisher/api-ref/