Используйте учетную запись службы для проверки Google InAppPurchase

#php #android #api #google-api-php-client #publisher

#php #Android #API #google-api-php-client #издатель

Вопрос:

Я хочу проверить inAppPurchase , что было сделано в моем приложении для Android.

  1. Я создал новую учетную запись службы в консоли API Google.

    a. Учетная запись службы указана в разделе разрешения и имеет разрешение «можно просматривать»

  2. Я использую самую последнюю версию https://github.com/google/google-api-php-client

  3. фрагмент кода из моего PHP-скрипта:

     $client = new Google_Client();
    $client->setApplicationName('myAppName' );
    $client->setClientId('123456789123-vxoasdt8qwe6awerc9ysdfmjysdfysf64werweria8fh.apps.googleusercontent.com');
    $key = file_get_contents('/shr/data/stor/b516cexx3123asdf3988345d8133e7f86bfas2553-privatekey.p12');
    $service_account_name = '123456789123-vxoasdt8qwe6awerc9ysdfmjysdfysf64werweria8fh@developer.gserviceaccount.com';
    
    $client->setScopes(array('https://www.googleapis.com/auth/androidpublisher') );
    $cred = new Google_Auth_AssertionCredentials( $service_account_name, array('https://www.googleapis.com/auth/androidpublisher'), $key );
    $client->setAssertionCredentials($cred);
    
    try {
        $service = new Google_Service_AndroidPublisher( $client );
        $googleApiResult = $service->inapppurchases->get($externalAppId, $externalProductId, $purchaseToken);
    } catch (Exception $e) {
        var_dump( $e->getMessage() );
    }
      
  4. Ответ от Google:

    ПОЛУЧИТЬ https://www.googleapis.com/androidpublisher/v1.1/applications/de.test.myapp/inapp/de.test.inapp.google.balance5eur/покупки/[PURCHASETOKEN]: (401) У текущего пользователя недостаточно разрешений для выполнения запрошенной операции.

    [PURCHASETOKEN] — это токен покупки, который я получил от Google

  5. Настройка $cred->sub = 'foo@bar.de' на мой почтовый адрес вызывает

    Ошибка обновления токена OAuth2, сообщение: ‘{ «ошибка»: «неавторизованный клиент», «error_description»: «Неавторизованный клиент или область в запросе». }’

Ответ №1:

Вы должны подключить свой API к своему приложению. Вы должны перейти на страницу публикации в Google Play (https://play.google.com/apps/publish ) и пригласите пользователя с электронной почтой учетной записи службы в Настройках-> Учетная запись пользователя и права-> Пригласить нового пользователя и предоставить ему привилегии «Просмотр финансовых отчетов».

Это означает, что, хотя обычно вы можете видеть несколько пользователей из вашего домена, перечисленных в консоли Google Play (Email: user1@mydomain.example , Роль: Финансы; Email: user2@mydomain.example , Роль: Администратор), теперь вы добавите другого пользователя и дадите ему роль финансы (Email: XXX@developer.gserviceaccount.com , Роль: Финансы).

Комментарии:

1. Вы спасли мой день! Большое вам спасибо! Почему это не задокументировано в документации Google?

2. К сожалению, это не решает проблему для меня. Тот же ответ об ошибке. Что означает «подключить ваш API к вашему приложению»? Это добавление электронной почты учетной записи службы?

3. Вот несколько документов о переносе приложений между учетными записями Google Play, что привело меня к получению ошибки 401. support.google.com/googleplay/android-developer/checklist /…

4. @BobMitchell «подключить свой API к вашему приложению» означает «авторизовать ваше приложение для получения «финансовой» информации (например, о покупках в приложении и внутриигровых покупках) учетной записи Google Play Publish, которой вы владеете и которая получает покупки, через Google Api». Таким образом, вы должны предоставить привилегии пользователю, которого вы используете в качестве идентификатора клиента («123456789123-vxoasdt8qwe6awerc9ysdfmjysdfysf64werweria8fh.apps.googleusercontent.com » в этом вопросе) на странице вашего издателя в Google Play, чтобы получить доступ к финансовой информации. Я надеюсь, что это поможет вам.

5. Я пытаюсь получить подтверждение покупок в приложении, запрос GET googleapis.com/androidpublisher/v2/applications /[Имя пакета]/. … Кроме того, я настроил все, насколько я знаю, связал API с приложением, предоставил права администратора созданному мной пользователю, получил токен и т. Д., Но он продолжает выдавать ошибку 401 «У текущего пользователя недостаточно прав для выполнения запрошенной операции». Есть идеи? Как я могу предоставить больше разрешений, чем позволяет администратор ?.