es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La solicitud no cuenta con las credenciales de autenticación requeridas: se espera un token de acceso OAuth 2, una cookie de inicio de sesión u otra credencial válida de autenticación.

Quiero reembolsar a Google Play Developer Console IAP o pedido utilizando la API de Google. Obtengo un error cuando accedo a su URL, alguien ayúdeme a solucionarlo.

Este es mi código.

<?php
$url = "https://androidpublisher.googleapis.com/androidpublisher/v3/applications/{packageName}/orders/{orderId}:refund";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close ($ch);
echo "<pre>";
print_r($server_output);
?>

Respuesta:

{
  "error": {
    "code": 401,
    "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "errors": [
      {
        "message": "Login Required.",
        "domain": "global",
        "reason": "required",
        "location": "Authorization",
        "locationType": "header"
      }
    ],
    "status": "UNAUTHENTICATED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "CREDENTIALS_MISSING",
        "domain": "googleapis.com",
        "metadata": {
          "service": "androidpublisher.googleapis.com",
          "method": "androidpublisher.OrdersService.Refund"
        }
      }
    ]
  }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que la solicitud no tiene las credenciales de autenticación necesarias. La API requiere un token de acceso OAuth 2 o una cookie de inicio de sesión para la autenticación.

    Para solucionar el error, se deben agregar las credenciales de autenticación a la solicitud. Una forma de hacer esto es utilizando la biblioteca de cliente de API de Google para PHP, la cual maneja la autenticación automáticamente.

    Aquí tienes un ejemplo de cómo usar la biblioteca de cliente para realizar un reembolso de una orden de compra de una aplicación:

    require_once 'vendor/autoload.php'; // ruta a la biblioteca de cliente
    
    use Google\Client;
    
    $client = new Client();
    $client->setAuthConfig('ruta/a/tu/client_secret.json'); // ruta a tu archivo de secretos del cliente
    $client->setApplicationName('Nombre de tu aplicación');
    $client->setScopes(['https://www.googleapis.com/auth/androidpublisher']);
    
    $service = new Google_Service_AndroidPublisher($client);
    
    $packageName = "nombre.de.tu.paquete";
    $orderId = "tu.id.de.orden";
    
    $resultado = $service->purchases_subscriptions->refund($packageName, $subscriptionId, $token="");
    print_r($resultado);
    

    Ten en cuenta que debes reemplazar nombre.de.tu.paquete y tu.id.de.orden por los valores correspondientes. Además, el código de ejemplo es para realizar un reembolso de una suscripción, por lo que es posible que debas ajustarlo para compras dentro de la aplicación. Puedes encontrar más información sobre cómo utilizar la biblioteca de cliente de API de Google para PHP en la documentación oficial.

Comments are closed.