Como ejecutar el CURL de la API paypal

  • Autor Autor Jair Beta
  • Fecha de inicio Fecha de inicio
J

Jair Beta

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola amigos.
Verán, se usar CURL un 50% diría yo.
Obvio con PHP.

Pero cuando me topó con APIs o tutoriales que te indican el código CURL de una manera que no es PHP.
No se como hacerle. Es decir, como lo ejecuto?

Ya intente usando Google, con convertidores de "Convert CURL code to PHP".
Y sí, me lo convierte a un código que yo si logró entender, pero siempre me da errores.

Así que ya no se que hacer.
Para ser exactos, el código que busco ejecutar de la API paypal en modo sandbox, es esta:

1591664234033.webp


Ojala alguien pueda ayudarme.
Gracias.
 
-H añade un header, mientras que -d es "data", o el body de lo que envías, hasta hace poco también entendía cURL pero las documentaciones de API se me dificultaban un poco, te recomendaría que vayas jugando con opciones, viendo ejemplos y comparandolas con el documento etc. Acá la solución
PHP:
<?php
    $Headers = [ // Agregamos los headers que CURL usa como -H
        "Content-Type: application/json", // Este header en específico le avisa al endpoint que vamos a enviarle un json
        "Authorization: Bearer <TOKEN>"
    ];

    $Headers[] = "PayPal-Request-Id: <Merchant generated id>"; // El array lo podemos construir como sea, allí dice que este es opcional

    $data = [ // Vamos a crear la data básica, un array como cualquier otro
        "name" => "Video Streaming Service",
        "description" => "Video Streaming service",
        "type"=>"SERVICE",
        "category"=>"SOFTWARE",
        "image_url"=>"https://example.com/streaming.png",
        "home_url"=>"https://example.com/"
    ];
    $json = json_encode($data); // Convertimos la data a JSON, el resultado sería muuuy similar casi idéntico al ejemplo.


    // Ahora, vamos a proceder con CURL

    $ch = curl_init("https://api.sandbox.paypal.com/v1/catalogs/products"); // Curl inicializado con la url
    curl_setopt($ch, CURLOPT_HTTPHEADER, $Headers); // Acá le lanzamos los headers a CURL
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json); // Acá le enviaremos el JSON, que sabrá leer gracias al header content-type
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // El típico return transfer para obtener la respuesta :)
    $r = curl_exec($ch); // Ejecutamos
    curl_close($ch); // Cerramos
    echo $r; // Leemos
 
Sii, es importante aprender como funciona curl, pero antes de esto es vital conocer como funciona el método POST Y GET, las cabeceras y el cuerpo... Yo al principio me confundía muchísimo pero logre dominar el tema mirando lo que pasaba en chorme al ingresar a un determinado sitio web, específicamente en la pestaña de Network de chorme -> F12

Ahí seleccionas el sitio web y miras lo que pasa, por ejemplo que método se utilizo GET o POST, que cabeceras se enviaron y cuales fueron las cabeceras de respuesta, la respuesta que puede ser en HTML, puedes ver que user agent que se esta utilizando, idioma, etc. O por ejemplo si te logueas en un sitio web podrás ver el cuerpo que se enviara.... O también puedes usar el programa charles proxy este me lo recomendó cicklow hace un tiempo y es muy bueno para mirar lo que hacen los sitios webs.

De ahí ya te das una idea de lo que solicitan, te dicen una petición al la dirección url: https://api.sandbox.paypal.com/v1/catalogs/products con el método POST unas cabeceras y un cuerpo de la petición en su formato JSON

Saludos.
 
-H añade un header, mientras que -d es "data", o el body de lo que envías, hasta hace poco también entendía cURL pero las documentaciones de API se me dificultaban un poco, te recomendaría que vayas jugando con opciones, viendo ejemplos y comparandolas con el documento etc. Acá la solución
PHP:
<?php
    $Headers = [ // Agregamos los headers que CURL usa como -H
        "Content-Type: application/json", // Este header en específico le avisa al endpoint que vamos a enviarle un json
        "Authorization: Bearer <TOKEN>"
    ];

    $Headers[] = "PayPal-Request-Id: <Merchant generated id>"; // El array lo podemos construir como sea, allí dice que este es opcional

    $data = [ // Vamos a crear la data básica, un array como cualquier otro
        "name" => "Video Streaming Service",
        "description" => "Video Streaming service",
        "type"=>"SERVICE",
        "category"=>"SOFTWARE",
        "image_url"=>"https://example.com/streaming.png",
        "home_url"=>"https://example.com/"
    ];
    $json = json_encode($data); // Convertimos la data a JSON, el resultado sería muuuy similar casi idéntico al ejemplo.


    // Ahora, vamos a proceder con CURL

    $ch = curl_init("https://api.sandbox.paypal.com/v1/catalogs/products"); // Curl inicializado con la url
    curl_setopt($ch, CURLOPT_HTTPHEADER, $Headers); // Acá le lanzamos los headers a CURL
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json); // Acá le enviaremos el JSON, que sabrá leer gracias al header content-type
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // El típico return transfer para obtener la respuesta :)
    $r = curl_exec($ch); // Ejecutamos
    curl_close($ch); // Cerramos
    echo $r; // Leemos

Gracias a los 2 por responder.
Pondré en práctica tu ejemplo y haré experimentos y a ver que tal.
Gracias.
 
si lo que estás haciendo no es con fines de aprendizaje, te recomiendo utilizar alguna librería para la pasarela de pago, en el caso de php existe omnipay que tiene integraciones con paypal
 
Atrás
Arriba