google api - una - cuenta de servicio(403) Prohibida la API de estado de compra de facturación en la aplicación de Google Play
google wallet (1)
Acabo de resolver este problema.
Debe agregar el correo electrónico de la cuenta de servicio ("1048550291137-rfqol5nm4k9tqr0a5bupedoakhd184k4@developer.gserviceaccount.com") en su página de publicación de google play ( https://play.google.com/apps/publish/ , no en la consola de desarrollador de Google).
en "Configuración" - "Cuenta de usuario y derechos", "Invitar nuevo usuario", envíe con el correo electrónico de la cuenta de servicio, marque la casilla "Ver informes financieros" a la derecha, luego todo funciona bien ~
<?php
include_once(''./src/Google_Client.php'');
include_once(''./src/contrib/Google_AndroidpublisherService.php'');
//user token, in json format
$ANDROIDUsertoken = ''{"orderId":"12999763169054705758.1323390433376399","packageName":"org.luan.hellocpp","productId":"1","purchaseTime":1394183520430,"purchaseState":0,"purchaseToken":"rurmodmieoumgowoquecqhnv.AO-J1Ow43-aM8CXNWlUcUYmA06bIaYzZPcCJCua0lLxnihOULX27Jg6NvqNUlWMpoENxtdHCIVSm6AM2mVkiC0ABSch2JEKmu1zqsVM46L762H5ppF4AIcE"}'';
$user_token= json_decode($ANDROIDUsertoken,true);
// https://developers.google.com/console/help/#service_accounts
const CLIENT_ID = ''1048550291137-rfqol5nm4k9tqr0a5bupedoakhd184k4.apps.googleusercontent.com'';
const SERVICE_ACCOUNT_NAME = ''1048550291137-rfqol5nm4k9tqr0a5bupedoakhd184k4@developer.gserviceaccount.com'';
const KEY_FILE = ''./key.p12'';
$client = new Google_Client();
$client->setApplicationName($user_token[''packageName'']);
$client->setClientId(CLIENT_ID);
$key = file_get_contents(KEY_FILE);
$auth = new Google_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
array(''https://www.googleapis.com/auth/androidpublisher''),
$key);
$client->setAssertionCredentials($auth);
//$client->getAuth()->refreshTokenWithAssertion();
//$accessToken=$client->getAccessToken();
//$client->setAccessToken($accessToken);
$AndroidPublisherService = new Google_AndroidPublisherService($client);
$res = $AndroidPublisherService->inapppurchases->get($user_token[''packageName''], $user_token[''productId''], $user_token[''purchaseToken'']);
var_dump($res);
?>
error de vuelta:
PHP Fatal error: Uncaught exception ''Google_ServiceException'' with message ''Error calling GET https://www.googleapis.com/androidpublisher/v1.1/applications/org.luan.hellocpp/inapp/1/purchases/rurmodmieoumgowoquecqhnv.AO-J1Ow43-aM8CXNWlUcUYmA06bIaYzZPcCJCua0lLxnihOULX27Jg6NvqNUlWMpoENxtdHCIVSm6AM2mVkiC0ABSch2JEKmu1zqsVM46L762H5ppF4AIcE: (403) Forbidden'' in /var/www/debug/google/src/io/Google_REST.php:66
Stack trace:
#0 /var/www/debug/google/src/io/Google_REST.php(36): Google_REST::decodeHttpResponse(Object(Google_HttpRequest))
#1 /var/www/debug/google/src/service/Google_ServiceResource.php(186): Google_REST::execute(Object(Google_HttpRequest))
#2 /var/www/debug/google/src/contrib/Google_AndroidpublisherService.php(39): Google_ServiceResource->__call(''get'', Array)
#3 /var/www/debug/google/purchase.php(32): Google_InapppurchasesServiceResource->get(''org.luan.helloc...'', ''1'', ''rurmodmieoumgow...'')
#4 {main}
thrown in /var/www/debug/google/src/io/Google_REST.php on line 66
Obtuve el error Prohibido 403 cuando uso la cuenta de servicio para consultar la API de estado de compra. Se ha activado el estado de la API para desarrolladores de Google Play para Android en Google Developers Console. Quién puede ayudarme. Gracias