Foros del Web » Programando para Internet » PHP »

Integrar PayPal con tu sitio web

Estas en el tema de Integrar PayPal con tu sitio web en el foro de PHP en Foros del Web. Buenas a todos! Quería preguntaros: tengo en desarrollo un sitio web en el que se debe permitir la compra de varios artículos (vamos un carrito ...
  #1 (permalink)  
Antiguo 07/11/2013, 09:31
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Pregunta Integrar PayPal con tu sitio web

Buenas a todos!

Quería preguntaros: tengo en desarrollo un sitio web en el que se debe permitir la compra de varios artículos (vamos un carrito de la compra) y cuyo pago debe poder hacerse mediante:

- Transferencia.
- Tarjeta de crédito/débito
- Paypal

La cuestión es que paypal no lo he usado hasta ahora y la documentación que encuentro es para integrar su "carrito" de compra a la web (con los botones de añadir, donar, suscribirse...). Pero lo que yo quiero es gestionar mi propio carro de la compra y si quieren pagar con paypal, tramitar el pago por ahí.

Pero no sé exactamente cómo integrarlo... ¿alguien me orienta? Gracias!!!
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #2 (permalink)  
Antiguo 07/11/2013, 14:06
Avatar de charlyrosero  
Fecha de Ingreso: julio-2006
Mensajes: 161
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Integrar PayPal con tu sitio web

yo generalmente usaria plataformas ecomerce ya hechas como oscomerce o prestashop que ya tienen modulos desarrollados para estos temas.

en todo caso si quieres realizar vos mismo tu pasarela debes tener encuenta el uso de la API Paypal y crear una cuenta de pruebas o sandbox
  #3 (permalink)  
Antiguo 08/11/2013, 01:48
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: Integrar PayPal con tu sitio web

Cita:
Iniciado por charlyrosero Ver Mensaje
yo generalmente usaria plataformas ecomerce ya hechas como oscomerce o prestashop que ya tienen modulos desarrollados para estos temas.

en todo caso si quieres realizar vos mismo tu pasarela debes tener encuenta el uso de la API Paypal y crear una cuenta de pruebas o sandbox
Por lo que he podido leer, necesitaría un formulario oculto que se envíe a PayPal con una serie de datos no¿? Tipo como el de esta página http://www.adrenalina.es/integrar-pagos-tienda-online/
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #4 (permalink)  
Antiguo 08/11/2013, 05:10
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: Integrar PayPal con tu sitio web

Ahora tengo un problema: al realizar el envío me saca el siguiente error
ACK=Failure&L_ERRORCODE0=81002&L_SHORTMESSAGE0=Uns pecified%20Method&L_LONGMESSAGE0=Method%20Specifie d%20is%20not%20Supported&L_SEVERITYCODE0=Error

El código que tengo es como el que pone en la documentación:

Código PHP:
Ver original
  1. echo "<form action='miruta' method='post' id='frmPay' name='frmPay'>\n";
  2. echo "<input type='hidden' name='USER' value='nomUsuario'/>\n";
  3. echo "<input type='hidden' name='PWD' value='passUsuario'/>\n";
  4. echo "<input type='hidden' name='SIGNATURE' value='signatureValue/>\n";
  5. echo "<input type='hidden' name='VERSION' value='xx'/>\n"; //api version
  6. echo "<input type='hidden' name='PAYMENTREQUEST_0_PAYMENTACTION' value='Sale'/>\n";
  7. echo "<input type='hidden' name='AMT' value='40.00' />\n";
  8. echo "<input type='hidden' name='PAYMENTREQUEST_0_CURRENCYCODE' value='EUR'/>\n";
  9. echo "<input type='hidden' name='RETURNURL' value='http://www.google.es'/>";
  10. echo "<input type='hidden' name='CANCELURL' value='http://www.google.es'/>";
  11. // estas url de return y cancel son pruebas ;)
  12. echo "<input type='submit'  name='METHOD' value='SetExpressCheckout' type='hidden'/>\n";
  13.                 echo "</form>\n";

El dato de los que uso hasta ahora y que no sé qué valor debe tener es el de versión...si veis alguna cosa extraña de datos o que no estén bien me lo decís :)

EDITO: Ya he encontrado el problema, no sirve tal y como esta en la documentación donde lo manda (un tipo submit)...hay que mandarlo como un hidden.

Ahora tengo un problema: cuando mando el form y me muestran el resultado no sé cómo tengo que trabajar con ellos para obtener el Token ¿? ¿?
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"

Última edición por madman_18; 08/11/2013 a las 05:57 Razón: Solucionado
  #5 (permalink)  
Antiguo 08/11/2013, 07:46
Avatar de charlyrosero  
Fecha de Ingreso: julio-2006
Mensajes: 161
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Integrar PayPal con tu sitio web

tengo entendido que cuando proporcionas la URL de respuesta

Código PHP:
Ver original
  1. echo "<input type='hidden' name='RETURNURL' value='http://www.google.es'/>";

la respuesta viene con un estado con este ultimo podrias cambiar el estado de los pedidos. verifica si existe una variable $_GET donde indique el estado y me cuentas

en la pagina de respuesta

Código PHP:
Ver original
  1. echo "<pre>";
  2. print_r($_GET);
  3. echo "</pre>";
  #6 (permalink)  
Antiguo 08/11/2013, 07:56
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: Integrar PayPal con tu sitio web

Cita:
Iniciado por charlyrosero Ver Mensaje
tengo entendido que cuando proporcionas la URL de respuesta

Código PHP:
Ver original
  1. echo "<input type='hidden' name='RETURNURL' value='http://www.google.es'/>";

la respuesta viene con un estado con este ultimo podrias cambiar el estado de los pedidos. verifica si existe una variable $_GET donde indique el estado y me cuentas

en la pagina de respuesta

Código PHP:
Ver original
  1. echo "<pre>";
  2. print_r($_GET);
  3. echo "</pre>";
La cosa está en que esa ruta de respuesta es a donde mandaría PayPal en caso de que el pago se haya realizado de forma correcta...según he entendido en la documentación...

Quiero decir, que ahí no es donde valida si viene todo correcto o no y demás
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #7 (permalink)  
Antiguo 08/11/2013, 08:25
Avatar de charlyrosero  
Fecha de Ingreso: julio-2006
Mensajes: 161
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Integrar PayPal con tu sitio web

tienes que hacer uso de la IPN (Instant Payment Notification) de Paypal, no estoy seguro pero para configurar la URL de respuesta debes hacerlo tambien por las opciones de tu cuenta de paypal (para este caso de pruebas).

Cita:


Auto Return is turned off by default. To turn on Auto Return:
  1. Log in to your PayPal account at https://www.paypal.com. The My Account Overview page appears.
  2. Click the Profile subtab. The Profile Summary page appears.
  3. Click the My Selling Tools link in the left column.
  4. Under the Selling Online section, click the Update link in the row for Website Preferences. The Website Payment Preferences page appears
  5. Under Auto Return for Website Payments, click the On radio button to enable Auto Return.
  6. In the Return URL field, enter the URL to which you want your payers redirected after they complete their payments. NOTE: PayPal checks the Return URL that you enter. If the URL is not properly formatted or cannot be validated, PayPal will not activate Auto Return.
  7. Scroll to the bottom of the page, and click the Save button.
y la pagina de respuesta para procesar el estado deberia contener algo como esto

Código PHP:
<?php
// Check to see there are posted variables coming into the script
if ($_SERVER['REQUEST_METHOD'] != "POST")
    die(
"No Post Variables");
// Initialize the $req variable and add CMD key value pair
$req 'cmd=_notify-validate';
// Read the post from PayPal
foreach ($_POST as $key => $value) {
    
$value urlencode(stripslashes($value));
    
$req .= "&$key=$value";
}
// Now Post all of that back to PayPal's server using curl, and validate everything with PayPal
// We will use CURL instead of PHP for this for a more universally operable script (fsockopen has issues on some environments)
//$url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
$url "https://www.paypal.com/cgi-bin/webscr";
$curl_result $curl_err '';
$ch curl_init();
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS$req);
curl_setopt($chCURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded""Content-Length: " strlen($req)));
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_VERBOSE1);
curl_setopt($chCURLOPT_SSL_VERIFYPEERFALSE);
curl_setopt($chCURLOPT_TIMEOUT30);
$curl_result = @curl_exec($ch);
$curl_err curl_error($ch);
curl_close($ch);

$req str_replace("&""\n"$req);  // Make it a nice list in case we want to email it to ourselves for reporting
// Check that the result verifies
if (strpos($curl_result"VERIFIED") !== false) {
    
$req .= "\n\nPaypal Verified OK";
} else {
    
$req .= "\n\nData NOT verified from Paypal!";
    
mail("[email protected]""IPN interaction not verified""$req""From: [email protected]");
    exit();
}

/* CHECK THESE 4 THINGS BEFORE PROCESSING THE TRANSACTION, HANDLE THEM AS YOU WISH
  1. Make sure that business email returned is your business email
  2. Make sure that the transaction�s payment status is �completed�
  3. Make sure there are no duplicate txn_id
  4. Make sure the payment amount matches what you charge for items. (Defeat Price-Jacking) */

// Check Number 1 ------------------------------------------------------------------------------------------------------------
$receiver_email $_POST['receiver_email'];
if (
$receiver_email != "[email protected]") {
//handle the wrong business url
    
exit(); // exit script
}
// Check number 2 ------------------------------------------------------------------------------------------------------------
if ($_POST['payment_status'] != "Completed") {
    
// Handle how you think you should if a payment is not complete yet, a few scenarios can cause a transaction to be incomplete
}

// Check number 3 ------------------------------------------------------------------------------------------------------------
$this_txn $_POST['txn_id'];
//check for duplicate txn_ids in the database
// Check number 4 ------------------------------------------------------------------------------------------------------------
$product_id_string $_POST['custom'];
$product_id_string rtrim($product_id_string","); // remove last comma
// Explode the string, make it an array, then query all the prices out, add them up, and make sure they match the payment_gross amount
// END ALL SECURITY CHECKS NOW IN THE DATABASE IT GOES ------------------------------------
////////////////////////////////////////////////////
// Homework - Examples of assigning local variables from the POST variables
$txn_id $_POST['txn_id'];
$payer_email $_POST['payer_email'];
$custom $_POST['custom'];
// Place the transaction into the database
// Mail yourself the details
mail("[email protected]""NORMAL IPN RESULT YAY MONEY!"$req"From: [email protected]");
?>
aqui hay mas informacion acerca del sistema de notificacion de paypal
  #8 (permalink)  
Antiguo 08/11/2013, 09:29
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: Integrar PayPal con tu sitio web

Cita:
Iniciado por charlyrosero Ver Mensaje
tienes que hacer uso de la IPN (Instant Payment Notification) de Paypal, no estoy seguro pero para configurar la URL de respuesta debes hacerlo tambien por las opciones de tu cuenta de paypal (para este caso de pruebas).
y la pagina de respuesta para procesar el estado deberia contener algo como esto

aqui hay mas informacion acerca del sistema de notificacion de paypal
Gracias por la info ;) pero el problema está en que ese paso llegaría una vez que quiero confirmar el pedido (quiero decir, cuando hayan realizado el pago con su cuenta, etc etc...) el problema lo tengo en: https://www.paypalobjects.com/websta...ationguide.pdf la página 22, el paso 2....hasta ahí llego (en el sentido de que manda el formulario y muestra los codigo), pero ahora está en que no doy con la tecla para recoger dichos datos que da la llamada del form por lo que no puedo redireccionar a lo que sería el momento del pago Pd: No me esta molando el sistema de paypal xDDDD
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #9 (permalink)  
Antiguo 28/05/2014, 15:05
 
Fecha de Ingreso: agosto-2008
Mensajes: 8
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Integrar PayPal con tu sitio web

Espero se encuentren bien, les cuento que he presentado un error en el pago de un cliente, en la prueba utilizando las cuentas del sanbox todo funcionaba de lujo, pero al utilizar info real y pago desde otra cuenta que he creado con saldo para prueba, me sale error al momento de iniciar session.

estas son las capturas del proceso.



este es el error que sale, pero no quiero mover nada hasta no saber cual el el problema, si es la cuenta del cliente o si es que me falto algo en la programacion del formulario, pero creo que si fuera problema de programacion no saldria este error saldria otro.

o no se si me falto algo de configurar en la cuenta de empresas para poder ejecutar el pago, please agradeceria la ayuda.
  #10 (permalink)  
Antiguo 29/05/2014, 00:43
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: Integrar PayPal con tu sitio web

Cita:
Iniciado por johnes001 Ver Mensaje
Espero se encuentren bien, les cuento que he presentado un error en el pago de un cliente, en la prueba utilizando las cuentas del sanbox todo funcionaba de lujo, pero al utilizar info real y pago desde otra cuenta que he creado con saldo para prueba, me sale error al momento de iniciar session.

estas son las capturas del proceso.



este es el error que sale, pero no quiero mover nada hasta no saber cual el el problema, si es la cuenta del cliente o si es que me falto algo en la programacion del formulario, pero creo que si fuera problema de programacion no saldria este error saldria otro.

o no se si me falto algo de configurar en la cuenta de empresas para poder ejecutar el pago, please agradeceria la ayuda.
Si en el sandbox realizando pruebas has podido ver que el pago está registrado tanto en la cuenta pagadora como el que recibe el pago no deberías tener ningún problema de programación (al menos sin ver el código).

Deberías comprobar la cuenta que tenga todo configurado, la que recibe el pago ya de forma real ya que tendrías que cambiar los datos de configuración (en el sandbox son unos y ya en entorno real son otros).
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #11 (permalink)  
Antiguo 29/05/2014, 11:12
 
Fecha de Ingreso: agosto-2008
Mensajes: 8
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Integrar PayPal con tu sitio web

Ok gracias por tu respuesta, tenias razon no hay error en el codigo, hoy he ingresado para probar de nuevo y realice el procedimiento normal como lo hacia, pero la sorpresa es es esta vez si realizo el pago normal y me redirigio a al pagina personalizada mia en este caso la pagina de pago realizado correctamente.

ahora el problema es que me da un error FAIL Error: 4020, realmente en la implementacion he realizado la configuracion con PDT, puesto que me parecio mas facil de usar, ahora no se como solucionar esto.
  #12 (permalink)  
Antiguo 29/05/2014, 17:05
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Respuesta: Integrar PayPal con tu sitio web

Cita:
Iniciado por johnes001 Ver Mensaje
Ok gracias por tu respuesta, tenias razon no hay error en el codigo, hoy he ingresado para probar de nuevo y realice el procedimiento normal como lo hacia, pero la sorpresa es es esta vez si realizo el pago normal y me redirigio a al pagina personalizada mia en este caso la pagina de pago realizado correctamente.

ahora el problema es que me da un error FAIL Error: 4020, realmente en la implementacion he realizado la configuracion con PDT, puesto que me parecio mas facil de usar, ahora no se como solucionar esto.
¿Cual es tu código con que te enlazas a PAYPAY?

Etiquetas: integrar, paypal
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:11.