alejogutierrez / laravel-payu

Una interfaz sencilla para utilizar el sdk de PayU en Laravel
MIT License
28 stars 19 forks source link

Invalid request format #3

Closed jorgelopezowd closed 6 years ago

jorgelopezowd commented 6 years ago

Estoy haciendo las pruebas con los datos de prueba de payu, y me está entregando este error Invalid request format

Entiendo que es un error que está indicando PayU, pero es extraño que salga ese error, a menos que algo no esté bien configurado, como si el formato json del request estuviera errado

composer.json

"require": { "php": ">=7.0.0", "alexo/laravel-payu": "^1.0", "barryvdh/laravel-cors": "^0.11.0", "doctrine/dbal": "^2.6", "fideloper/proxy": "~3.3", "laravel/framework": "5.5.*", "laravel/passport": "^4.0", "laravel/tinker": "~1.0", "mpociot/laravel-apidoc-generator": "^2.0", "pusher/pusher-php-server": "~3.0" },

mi controlador `namespace App\Http\Controllers;

use Alexo\LaravelPayU\LaravelPayU;

class PayuController extends Controller {

public function get_payment_methods()
{
    LaravelPayU::setPayUEnvironment();
    LaravelPayU::doPing(function($response) {
        $code = $response->code;
        // ... revisar el codigo de respuesta
        dd($code);
    }, function($error) {
     // ... Manejo de errores PayUException
     dump($error);
    });
}

}`

env

APP_ENV=local PAYU_API_KEY=4Vj8eK4rloUd272L48hsrarnUA PAYU_API_LOGIN=pRRXKOl8ikMmt9u PAYU_MERCHANT_ID=508029 PAYU_ACCOUNT_ID=512321 PAYU_TESTING_ENV=1 PAYU_COUNTRY=CO

Error `PayUException {#323 +payUCode: "API_ERROR"

message: "Invalid request format"

code: 0

file: "C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\alexo\laravel-payu\sdk\lib\PayU\util\PayUApiServiceUtil.php"

line: 67

trace: { C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\alexo\laravel-payu\sdk\lib\PayU\util\PayUApiServiceUtil.php:67 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\alexo\laravel-payu\sdk\lib\PayU\PayUPayments.php:24 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\alexo\laravel-payu\src\LaravelPayU.php:325 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\app\Http\Controllers\PayuController.php:29 { › dump($error); › }); › } arguments: { $onSuccess: Closure {#317 …} $onError: Closure {#322 …} } } App\Http\Controllers\PayuController->get_payment_methods() {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Controller.php:54 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\ControllerDispatcher.php:45 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Route.php:212 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Route.php:169 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Router.php:658 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:30 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\barryvdh\laravel-cors\src\HandleCors.php:36 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:149 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Middleware\SubstituteBindings.php:41 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:149 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Auth\Middleware\Authenticate.php:43 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:149 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Middleware\ThrottleRequests.php:57 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:149 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:102 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Router.php:660 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Router.php:635 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Router.php:601 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Router.php:590 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:176 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:30 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\barryvdh\laravel-cors\src\HandleCors.php:36 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:149 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\fideloper\proxy\src\TrustProxies.php:56 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:149 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php:30 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:149 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\TransformsRequest.php:30 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:149 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\ValidatePostSize.php:27 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:149 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode.php:46 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:149 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Routing\Pipeline.php:53 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php:102 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:151 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\vendor\laravel\framework\src\Illuminate\Foundation\Http\Kernel.php:116 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\public\index.php:55 {} C:\Users\Jorge\proyectos\clientes\alquira\plataforma\alquira-api\server.php:21 {} } } `

alejogutierrez commented 6 years ago

Hola Acabo de hacer un release con un ajuste mínimo que es el llamado a "setPayUEnvironment" que debería hacerlo el método y no directamente el usuario como lo estas haciendo. Así que puedes actualizar el paquete y hacer la consulta como aparece en la documentación.

Por otro lado el error que aparece tiene que ver con alguna configuración. Tu archivo .env debe tener la siguiente información:

APP_ENV=local PAYU_ON_TESTING=true PAYU_MERCHANT_ID=508029 PAYU_API_LOGIN=pRRXKOl8ikMmt9u PAYU_API_KEY=4Vj8eK4rloUd272L48hsrarnUA PAYU_ACCOUNT_ID=512321 PAYU_COUNTRY=CO

No se de donde sale "PAYU_TESTING_ENV=1" si lo usas internamente o algo.

Para explicar los datos de config la librería hace lo siguiente:

Dependiendo del APP_ENV determina a cuales URL debe apuntar en PAYU, entonces si esta en "local" apunta a las URL de "sandbox" y si el valor es otro como "staging" apuntaría a las URL de transacciones reales.

La otra variable es PAYU_ON_TESTING a diferencia de la anterior permite enviar los datos a las URL pero en modo de prueba entonces por ejemplo en tarjetas de crédito se usa como true y en el caso de PSE debe ser false.

También por ejemplo si tienes los datos de la cuenta real permitiría hacer pruebas de transacciones con la cuenta real, esto nunca lo he hecho así que no puedo darte más información sobre ello.

El resto de los datos construyen el objeto que es enviado en cada transacción.

Espero que sea de ayuda.