Foros del Web » Programando para Internet » PHP »

Validar respuesta desde PayPal después de pagar

Estas en el tema de Validar respuesta desde PayPal después de pagar en el foro de PHP en Foros del Web. Hola! Estoy integrando PayPal en una web mediante un formulario tal como este: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <form action=" <?php echo SANDBOX_PAYPAL ; ...
  #1 (permalink)  
Antiguo 02/01/2018, 10:13
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Pregunta Validar respuesta desde PayPal después de pagar

Hola!

Estoy integrando PayPal en una web mediante un formulario tal como este:

Código PHP:
Ver original
  1. <form action="<?php echo SANDBOX_PAYPAL;?>" method="post" name="paypalForm" id="paypalForm">
  2.                      <input type="hidden" name="cmd" value="_cart" />
  3.                       <input type="hidden" name="upload" value="1" />
  4.                       <input type="hidden" name="business" value="<?php echo CUENTA_SANDBOX;?>" />
  5.                       <input type="hidden" name="rm" value="2" /><!-- devolucion por post = 2 -->
  6.                       <input type="hidden" name="currency_code" value="EUR" />
  7.                       <input type="hidden" name="return" value="<?php echo URL_VUELTA;?>" />
  8.                       <input type="hidden" name="cancel_return" value="<?php echo URL_CANCELA;?>" />
  9.                       <input type="hidden" name="shipping_1" value="<?php echo $_SESSION["gastosenvio"];?>" />
  10.                       <input type="hidden" name="image_url" value="<?php echo LOGO_EMPRESA;?>" />
  11.                       <input type="hidden" name="invoice" value="<?php echo $_SESSION["ref"];?>" />
  12.                       <?php
  13.                       // Items del carrito
  14.                       $cont=1;
  15.                       foreach ($_SESSION["carro"] as $item){
  16.                         ?>
  17.                         <input type="hidden" name="item_name_<?php echo $cont;?>" value="<?php echo $item["nombre"];?>" />
  18.                         <input type="hidden" name="quantity<?php echo $cont;?>" value="<?php echo $item["cantidad"];?>" />
  19.                         <input type="hidden" name="amount_<?php echo $cont;?>" value="<?php echo $item["precio"];?>" />
  20.                         <?php
  21.                         $cont++;
  22.  
  23.                       }
  24.                        ?>
  25.                     </form>

Ahora me surge la duda de cómo validar en mi URL_VUELTA si realmente la transacción es correcta o no.
Me devuelve valores como payment_status o verify_sign.

- ¿Basta con "validar" el valor de payment_status?
- Cómo calcula el cifrado del campo verify_sign? Porque he mirado su documentación y lo único que veo es que es una variable con valor cifrado, pero no se con qué valores trabaja para validarlo.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #2 (permalink)  
Antiguo 02/01/2018, 10:57
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Validar respuesta desde PayPal después de pagar

utiliza el IPN de Paypal para validar el codigo de la transaccion entrante y listo, paypal te va a decir si esta correcto o no, es decir, si fue manipulado, o es un codigo inexistente
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 02/01/2018, 18:47
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 8 años, 5 meses
Puntos: 86
Respuesta: Validar respuesta desde PayPal después de pagar

No sé si esto incumplen alguna normal del foro, puesto que no aportaré nada. Mi intervención en este tema es hacer una pregunta. ¿La cuenta de PayPal que se está usando es personal o de negocio?

Gracias
  #4 (permalink)  
Antiguo 02/01/2018, 19:19
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Validar respuesta desde PayPal después de pagar

Cita:
Iniciado por mpozo Ver Mensaje
No sé si esto incumplen alguna normal del foro, puesto que no aportaré nada. Mi intervención en este tema es hacer una pregunta. ¿La cuenta de PayPal que se está usando es personal o de negocio?

Gracias
Relacion?
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 03/01/2018, 01:46
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: Validar respuesta desde PayPal después de pagar

Cita:
Iniciado por xfxstudios Ver Mensaje
utiliza el IPN de Paypal para validar el codigo de la transaccion entrante y listo, paypal te va a decir si esta correcto o no, es decir, si fue manipulado, o es un codigo inexistente
La cosa está en que por la respuesta que veo desde PayPal la comunicación parece instantánea y veo en su documentación esto:

If you are using Express Checkout or Direct Payment, the PayPal API notifies you of the status and details of the transaction immediately and automatically. In either case, you can immediately show your customer the payment information returned by PayPal . You should not use IPN for this purpose.

Teniendo la devolución de PayPal con los datos del pedido, estado de dicho pedido y demás según su documentación me haría falta integrar el IPN suyo? (quizás la pregunta es tonta) Me resulta un poco confusa su documentación
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #6 (permalink)  
Antiguo 03/01/2018, 07:51
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Validar respuesta desde PayPal después de pagar

allí lo que te dicen es que no requieres del uso de ipn ya que paypal en su respuesta te esta dando la información sobre el pago, usualmente el ipn sirve para confirmas si un pago esta correcto o en todo caso los cambios de estados sobre un pago.

En relación a tu pregunta original, te valdría solo con validar el payment_status en todo caso pues allui te envía el codigo de referencia de la transacción entre otros datos, pero si requieres de una segunda validacion de la data, pues ipn es la solución.
__________________
[email protected]
HITCEL
  #7 (permalink)  
Antiguo 03/01/2018, 10:03
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 8 años, 5 meses
Puntos: 86
Respuesta: Validar respuesta desde PayPal después de pagar

Cita:
Iniciado por xfxstudios Ver Mensaje
Relacion?
¿Qué quiere decir eso? Es una pregunta simple. La cuenta que está usando @madman_18, ¿es personal o de negocio?
  #8 (permalink)  
Antiguo 03/01/2018, 10:26
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Validar respuesta desde PayPal después de pagar

Cita:
Iniciado por mpozo Ver Mensaje
¿Qué quiere decir eso? Es una pregunta simple. La cuenta que está usando @madman_18, ¿es personal o de negocio?
Te comento que para ambos tipos de cuentas los requerimientos de PayPal fueron unificados mediante procesos más simples, incluso mediante peticiones ajax sin necesidad de salir de la web y por medio de modales implementados por el mismo script de PayPal.

Las respuestas se manejan mediante Json lo que facilita el proceso no solo en web si no también para móviles.

Yo manejo procesos con ambos tipos de cuentas sin ningún inconveniente, por ello la relación de si es Cuenta personal o de negocios es algo meramente irrelevante, lo que mas puede cambiar son opciones dentro de la cuenta del usuario, que las cuentas de negocio tienen otras herramientas que las personales no cuentan.

Y si entendí tu pregunta, lo que no encontré fue relevancia en relaciona a la pregunta original del usuario, o en todo caso, podría haber expuesto algún tipo de solución tanto para un tipo de cuenta como para otra, de esa manera tanto el usuario como otro que vean el post aprenderíamos de dichas soluciones Propuestas por ti.

Saludos
__________________
[email protected]
HITCEL
  #9 (permalink)  
Antiguo 03/01/2018, 13:31
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Validar respuesta desde PayPal después de pagar

Como tuto adicional, podrías utilizar el nuevo metodo por promesas ajax de paypal:

Paso 1.- Ingresas a la siguiente URL con tu cuenta sandbox o la creas alli: https://developer.paypal.com

Una vez ingreses veras una pantalla como esta:



Alli veras opciones como

Dashborad > My Apps Credentials
Dashborad > My Acoount

Sandbox > Accounts
Sandbox > Notifications
etc..

En esa pantalla verás un boton casi al final que dice Create App, este será al igual que en facebook la que se encargara de gestionar las peticiones de api desde tu web.

Una vez creada la app, te proporsionara los codigos de api y secret necesarios para tus peticiones desde la web.

Paso 2.- En tuu web en el header de la pagina que se encargara de gestionar los pagos llamas al archivo de enlace de paypal:

Código HTML:
Ver original
  1. <script src="https://www.paypalobjects.com/api/checkout.js"></script>

Luego indicas donde se va a mostrar el boton de pago de PayPal:

Código HTML:
Ver original
  1. <div id="paypal-buttonA"></div>

posteriormente antes del fin del body, colocas el codigo que se encargara de todo:

Código Javascript:
Ver original
  1. var state = 'sandbox';//production-sandbox (Aqui indicas si el codigo esta en modo sandbox o produccion)
  2.     paypal.Button.render({
  3.         env: state,
  4.         style: {
  5.             size: 'medium',//Tamaño del boton
  6.             color: 'blue',//Color del boton
  7.             shape: 'pill',//Tipo de Boton
  8.             fundingicons: false,
  9.             branding: true // Impresion del boton en el html
  10.         },
  11.         client: {
  12.             sandbox:    'CODIGO API PARA SANDBOX',
  13.             production: 'CODIGO API PARA PRODUCCION'
  14.         },
  15.         commit: true,//Mostramos el boton en el html
  16.         payment: function(data, actions) {
  17.             return actions.payment.create({
  18.                 payment: {
  19.                     transactions: [
  20.                         {
  21.                             amount: { total: MONTO A COBRAR, currency: 'USD' },
  22.                             description:'Descripcion Basica del Producto',
  23.                             custom:'INFORMACION ADICIONAL DE LA COMPRA'
  24.                         }
  25.                     ]
  26.                 }
  27.             });
  28.         },
  29.         onAuthorize: function(data, actions) {
  30.             return actions.payment.execute().then(function(payment) {
  31.                 console.log(payment);
  32.             });
  33.         },
  34.         onCancel: function(data, actions) {
  35.             console.log(data);
  36.         }
  37.     }, '#paypal-buttonA');

Esto te retornara un objeto con la informacion de la transacción:



Donde podras ver:
cart: el codigo del carro de venta en paypal
crete_time: fecha de la transaccion
id: ID/Referencia de la transaccion

payer > payer_info > country_code: Codigo de pais del comprador
payer > payer_info > email: Email del Comprador
payer > payer_info > first_name: Nombre del Comprador
payer > payer_info > last_name: Apellido del Comprador
payer > payer_info > payer_id: ID del comprador en PayPal
payer > payer_info > Shipping_addres: DIreccion de envio si es especificada durante la compra
payer > payer_info > payment_method: Metodo de pago del cliente PayPal, TDC, etc
payer > payer_info > status: Estado de la cuenta del cliente

state: Estado del Pago

transaction > 0 > ammount > currency: Moneda de pago del cliente
transaction > 0 > ammount > total: Total pagado por el cliente
transaction > 0 > ammount > custom: La informacion adicional del pago pasada desde el script

ya con eso puedes gestionar los pagos sin que el cliente salga de tu sitio web, mejorando la experiencia de este.

Hay otras opciones y configuraciones que podrás ver en el sitio web de PayPal.

Saludos
__________________
[email protected]
HITCEL
  #10 (permalink)  
Antiguo 05/01/2018, 11:19
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 8 años, 5 meses
Puntos: 86
Respuesta: Validar respuesta desde PayPal después de pagar

Lo preguntaba por que en este artículo dice que sólo es posible trabajar con IPN si se usa una cuenta de negocio http://www.codigonexo.com/blog/php/t...ipn-de-paypal/
  #11 (permalink)  
Antiguo 05/01/2018, 13:44
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Validar respuesta desde PayPal después de pagar

Cita:
Iniciado por mpozo Ver Mensaje
Lo preguntaba por que en este artículo dice que sólo es posible trabajar con IPN si se usa una cuenta de negocio http://www.codigonexo.com/blog/php/t...ipn-de-paypal/
Yo utilizo IPN son problemas por medio de la api de paypal con cualquier cuenta, ese tuto esta un poco desactualizado.
__________________
[email protected]
HITCEL
  #12 (permalink)  
Antiguo 14/01/2018, 09:29
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 8 años, 5 meses
Puntos: 86
Respuesta: Validar respuesta desde PayPal después de pagar

Ok. Gracias. Una pregunta, ¿para qué se usa la credencial secret?

Etiquetas: 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 15:10.