使用Purchase Status API验证Google Play购买

时间:2014-02-24 02:52:54

标签: android in-app-purchase google-play google-api-dotnet-client

我需要使用PurchaseStatus API验证我的google play购买..我想使用AccountService选项... [我确实使用WebServer工作流程来实现这一点,但这需要手动交互,我不能在生产中使用它]。 对于使用服务帐户,我尝试了两种我能想到的方法:

1)使用Google库+ REST API的代码..

credential = new ServiceAccountCredential( new ServiceAccountCredential.Initializer(serviceAccountEmail)
{   Scopes = new[] { "https://www.googleapis.com/auth/androidpublisher"  }
}.FromCertificate(certificate));

var task = credential.RequestAccessTokenAsync(cancellationtoken); 
// wait for it ...  with error handling.. 
var accessToken  = credential.Token.AccessToken ;  
string url = string.Format("https://www.googleapis.com/androidpublisher/v1.1/applications/{0}/inapp/{1}/purchases/{2}?access_token={3}",  packageName, sku, purchaseToken , accessToken ); 
// UseWebRequest agains that   URL ...

结果:上述内容因401: Unauthorized而失败 相同的代码,如果不使用来自ServiceAccountCredential的令牌,我可以使用来自Web Server工作流的令牌。

2)接下来我尝试使用ServiceAccountCredential + AndroidPublisherService ..所以这两个谷歌库:

// Same ServiceAccountCredential as above.. but now I initialize my AndroidPublisherService with the credential in this manner.. 

AndroidPublisherService svc = new AndroidPublisherService( new Google.Apis.Services.BaseClientService.Initializer()
{ HttpClientInitializer = credential   });                               
var purchaseRequest = svc.Inapppurchases.Get(packageName, sku, token);
var purchase = purchaseRequest.Execute();

结果:我得到了

  

[Google.GoogleApiException]
  {“Google.Apis.Requests.RequestError \ r \ n此开发者帐户没有   拥有应用程序。 [401] \ r \ nErrors [\ r \ n \ tMessage [此开发者   帐户不拥有该应用程序。]位置[ - ]   原因[developerDoesNotOwnApplication]   域[androidpublisher] \ r \ n] \ r \ n“} Google.GoogleApiException

3)我尝试了一些其他的事情,例如尝试将用户传递给初始化程序......但它们无法正常工作..

我做错了什么? 如何使用 ASP .NET 中的ServiceAccount验证 Android购买

1 个答案:

答案 0 :(得分:1)

请按照此SO文章中的步骤进行操作 - Am I getting the steps right for verifying a user's Android in-app subscription?

在简短的说明中,您需要在Google API控制台上创建应用,并使用客户端ID和客户端密钥。

然后你需要获得一个永不过期的“刷新令牌”,并且可以保存在应用程序中以备将来的所有请求。

刷新令牌后,您需要发出一个帖子请求,该请求将使用该令牌提供“访问令牌”,您可以发送获取请求并验证购买。