Botones encriptados de PayPal con PHP
Estos días he estado ayudando aun amigo para hacer pagos con PayPal, gracias a este tutorial de Rails hemos podido crear una versión en PHP.
Para generar botones encriptados lo primero que tienes que hacer es crear unos certificados, una vez creados tendrás los datos necesarios para cumplimentar las opciones de la clase.
$config = array(
'cert_id' => 'xxx',
'business' => 'seller_xx@xxx.es',
'openssl' => '/usr/bin/openssl',
'my_cert' => 'certificates/my-pubcert.pem',
'my_key' => 'certificates/my-prvkey.pem',
'paypal_cert' => 'certificates/paypal_cert.pem'
);
//iniciamos la clase
$paypal = new PayPal($config);
Luego hay que pasarles las variables necesarias para encriptar el botón, en la documentación de PayPal encuentras todas las variables.
$form = array(
'cmd' => '_xclick',
'item_name' => 't-shirt 13',
'item_number' => '12',
'amount' => '4500.00'
);
$encrypted = $paypal->encrypt($form);
Una vez encriptado solo tienes que rellenar los datos del formulario, el action y el campo hidden.
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="hidden" name="encrypted" value="<?PHP echo $encrypted; ?>"/>
<input type="submit" value="Buy"/>
</form>
Nos queda la parte del IPN (Instant Payment Notification) para saber si la transacción se ha ejecutado con éxito. Es curioso algunas tiendas envían el botón sin encriptar pero si hacen el IPN.
En la clase incluyo el ejemplo para que lo tengáis todo a mano, recordad que en el tutorial escrito en rails tenéis los pasos previos para crear los certificados.
Descargar class.paypal.php.
Ver post
Comentar
luman#1 hace 602 días
Recomendación para desarrolladores, daros de alta en Developer Paypal para crear cuentas de prueba tanto de vendedores como de compradores y poder usar el entorno de pruebas Sandbox.
No tiene mucha gracias hacer pruebas con dinero real aunque sea 0,01€ como he visto en algunos tutos...
luman#2 hace 602 días
Ais que no me acordaba que aquí no rula el HTML sino el invento del Markdown...
Developer Paypal Sandbox Paypal
Icebeat#3 hace 599 días
@luman ya tenemos el IPN integrado oeoeoe! a ver si lo publico ;P
Carlos#4 hace 443 días
Excelente código, pero no logro hacer andar la encriptacion en un servidor basado en UNIX.
En mi PC con Windows al ejecutable del OpenSSL y a los archivos de los certificados debo colocarles la ruta completa, es decir:
'openssl' => 'C:xamppapachebinopenssl', 'my_cert' => 'C:xampphtdocspruebacertificatesmy-pubcert.pem', 'my_key' => 'C:xampphtdocspruebacertificatesmy-prvkey.pem', 'paypal_cert' => 'C:xampphtdocspruebacertificatespaypal_cert.pem'
Cuando el archivo ya está en el servidor, le coloco la ruta completa UNIX a cada elemento pero no genera el área encriptada. Es decir:
'openssl' => '/usr/sfw/bin/openssl', y cosas asi.
Qué hice mal???
Carlos#5 hace 443 días
Se me olvidaba,
Ya tienen disponible el código para IPN???
Salu2!
Marc Palau#6 hace 361 días
Dani, aquí Marc de CDmon. Nos conocimos en el Congresowebmasters. Ante todo saludos y encantado de conocerte :).
He estado trasteando con la clase y al hacer las pruebas me lanza un error que el texto binario no contiene el correo del comercio. He probado de meter tanto el correo como el Id. de cuenta de vendedor seguro y nada, sigue lanzando ese error. Si tiro los datos sin encriptar me los da por buenos y me permite terminar el pago.
Se te ocurre algo?
saludos!!
IceBeat#7 hace 361 días
Buenas Marc pues la verdad no se que puede ser, tengo que preguntarle a mi compañero que el fue quien implemento la clase a su tienda.
La verdad es que fue un placer conocerte :)
MBA distancia#8 hace 213 días
Bueno gracias por los codigos , los voy a probar , espero que me sirva a futuro, saludos
SsouL#9 hace 178 días
Muy útil el tutorial