Проверка покупок в Google Play с помощью API статуса покупки

Мне нужно подтвердить свои покупки в Google Play с помощью API PurchaseStatus. Я хочу использовать опцию 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, я использую токен из рабочего процесса веб-сервера.

2) Затем я попытался использовать ServiceAccountCredential + AndroidPublisherService .. поэтому обе библиотеки Google:

// 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) Я пробовал еще несколько вещей, например, попытался передать пользователя инициализатору ... но они не сработали ..

Что я делаю не так?
Как я могу подтвердить покупку Android с помощью ServiceAccount из ASP .NET?


person Jaime Rodriguez Carrete    schedule 24.02.2014    source источник


Ответы (1)


Следуйте инструкциям в этой статье SO- Я правильно понимаю, как проверить подписку пользователя на Android в приложении?

Вкратце, вам нужно создать приложение в консоли API Google и использовать идентификатор клиента и секрет клиента.

Затем вам нужно получить «токен обновления», срок действия которого никогда не истекает, и его можно сохранить в приложении для всех будущих запросов.

После обновления токена вам необходимо сделать почтовый запрос, который предоставит «токен доступа». Используя этот токен, вы можете отправить запрос на получение и подтвердить покупку.

person Manik Arora    schedule 10.10.2014