Diferencia entre revisiones de «Usuario:ManuelRomero/php/smarty/PagosPayPall»

De WikiEducator
Saltar a: navegación, buscar
 
(9 revisiones intermedias por el mismo usuario no mostrado)
Línea 33: Línea 33:
 
  https://developer.paypal.com/developer/applications/?mark=applications
 
  https://developer.paypal.com/developer/applications/?mark=applications
 
*En ella buscamos la sección de '''''sandbox'''''
 
*En ella buscamos la sección de '''''sandbox'''''
[[Imagen:cuentaPayPal4.png|400px|center]]<br />
+
[[Imagen:cuentaPayPal4.png|600px|center]]<br />
 
+
Accedemos a accounts  y vemos que tenemos ya cuentas creadas, pero podemos crear nuevas cuentas
 +
https://developer.paypal.com/docs/classic/lifecycle/sb_create-accounts/
 
===Crear el formulario para acceder a la web de paypal===
 
===Crear el formulario para acceder a la web de paypal===
 +
Para acceder al formulario de pago de paypal debemos acceder a la siguiente url
 +
;La dirección del servidor al que se debe conectar paypal en modo pruebas será
 +
  https://www.sandbox.paypal.com/cgi-bin/webscr
 +
;La dirección del servidor  necesario cuando está en real que es:
 +
https://www.paypal.com/es/cgi-bin/webscr
 +
*Nosotros usaremos el primero
 +
<source lang=php>
 +
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
 +
                <!--
 +
                Datos para pagar paypal
 +
</form>         
 +
 +
</source>
 +
*Hay dos maneras de poder incluir el formulario para realizar el pago en la cuenta de paypal, que están descritas aquí
 +
https://www.sandbox.paypal.com/es/cgi-bin/webscr?cmd=_pdn_howto_checkout_outside
 +
;Siguiendo el tutorial vamos a ver qué poner para realizar un pago de una sola vez
 +
*En este caso tendríamos el siguiente formulario
 +
<source lang=html5>
 +
  <input name="cmd" type="hidden" value="_xclick" />
 +
              <!--
 +
                Mi correo de pay pall identificador email ID en profile de mi cuenta de business
 +
                -->
 +
  <input name="business" type="hidden" value="manuelromeromiguel-facilitator@gmail.com" />
 +
 +
  <input name="shopping_url" type="hidden" value="http://manuel.infenlaces.com/dwes/TiendaPagar/pagar.php" />
 +
  <input name="currency_code" type="hidden" value="EUR" />
 +
  <input name="return" type="hidden" value="http://manuel.infenlaces.com/dwes/TiendaPagar/pago_realizado.php" />
 +
  <input name="notify_url" type="hidden" value="http://manuel.infenlaces.com/dwes/TiendaPagar/paypal_ipn.php" />
 +
  <input name="rm" type="hidden" value="2" />
 +
</source>
 +
_Y ahora los datos de los productos y un submit con imagen de paypall
 +
<source lang=php>
 +
  <input type="hidden" name="item_name" value="Compra de {$usuario}">
 +
  <input type="hidden" name="amount" value="{$cesta->get_coste()}">
 +
  <input type="image" src="http://www.paypal.com/es_ES/i/btn/x-click-but01.gif" border="0" name="submit" alt="Realice pagos con PayPal: es rápido, gratis y seguro">
 +
</source>
 +
*Los campos facilitados al pago de paypal son los siguientes
 +
{{Recursos de la Web|Title=Referencia a los elementos html|
 +
https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/formbasics/
 +
}}
 +
'''''cmd'''''
 +
:Determina la forma de abordar el cobro por parte de paypal;Por ejemplo, un solo artículo con el monto total '''''(_xclick)''''', los diferentes artículos de carro '''''(_cart)'''''.
 +
'''''business'''''
 +
:Correo electrónico en su cuenta PayPal.Buscarlo en Profile ID-Mail de la cuenta de Sandox de paypal
 +
:[Imagen:IDPaypall.png]
 +
'''''currency_code'''''
 +
:Tipo de moneda que se va a utilizar para el pago. Ejemplos: "USD", "EUR", "GBP", "CAD", "JPY".
 +
'''''return'''''
 +
:URL de Internet a donde se redirigirá a su cliente tras finalizar el pago. En general será una url de nuestra tienda
 +
'''''notify_url'''''
 +
:Esta url es usada únicamente con IPN. URL de Internet donde se realizarán envíos de formularios de IPN: En general sará una url dónde podremos realizar verificaciones de la información que retorno paypal
 +
'''''rm''''':
 +
Modo en el que la aplicacion paypal va a dar variables a nuestra página cuando vengamos del pago por si se quieren recuperar 1=> GET, 2=> POST
 +
'''''item_name'''''
 +
:Nombre del concepto a realizar el cobro. En este caso será la compra total
 +
'''''amount'''''
 +
:Precio a cobrar en este pago
 +
 +
 +
En el caso de querer pasar la cesta completa y que paypal factura cada producto, hemos de cambiar algún campo del formulario que se envía a paypal, y añadir un campo por cada producto especificando un código, nombre, precio y cantidad del mismo.
 +
Por ejemplo en el caso de nuestra tienda
 +
<source lang=html5>
 +
<!---
 +
.....
 +
-->
 +
  <input name="cmd" type="hidden" value="_cart" />
 +
  <input name="upload" type="hidden" value="1" />
 +
  {$n=1}
 +
  {foreach from=$productos item=producto}
 +
        <tr>
 +
        <td>{$producto->get_nombre_corto()}</td>
 +
        <td>{$unidades[$producto->get_codigo()]}</td>
 +
        <td>{$producto->get_PVP()}</td>
 +
        </tr>
 +
        <input name="item_number_{$n}" type="hidden" value="{$producto->get_codigo()}" />
 +
        <input name="item_name_{$n}" type="hidden" value="{$producto->get_nombre_corto()}" />
 +
        <input name="amount_{$n}" type="hidden" value="{$producto->get_PVP()}" />
 +
        <input name="quantity_{$n++}" type="hidden" value="{$unidades[$producto->get_codigo()]}" />
 +
  {/foreach}
 +
</source>
 +
:Los cambios realizados
 +
1.- El campo cmd pasa a tomar el valor '''''_cart'''''
 +
2.- Apadimos el campo
 +
<source lang=html5>
 +
  <input name="upload" type="hidden" value="1" />
 +
</source>
 +
3.- Por cada producto tendremos lo siguientes campos (La x tomará un valor numérico empezando por 1, hasta el número de ariculos que haya).
 +
'''''item_number_x'''''
 +
:un número de código de cada producto
 +
'''''item_name_x'''''
 +
:El nombre de cada producto
 +
'''''amount_x'''''
 +
:El precio de cada producto por unidad
 +
'''''quantity_x'''''
 +
:La cantidad de unidades de cada producto
 +
 +
 +
{{MRM_Recursos de la Web|
 +
 +
;<nowiki> https://www.sandbox.paypal.com/es/cgi-bin/webscr?cmd=_pdn_xclick_techview_outside
 +
</nowiki>
 +
<br />
 +
;<nowiki>
 +
https://www.sandbox.paypal.com/es/cgi-bin/webscr?cmd=_pdn_howto_checkout_outside
 +
</nowiki>
 +
}}
 
===Acciones para aceptar el pago===
 
===Acciones para aceptar el pago===
===Volver a nuestra web tras el éxito o fracaso===
+
<br />
  
 +
*El cobro de la factura es una acción que realiza la web de paypal.
 +
Una vez realizada el cobro, nosotros podremos analizar o procesar cierta información que nos facilita la web de paypal, para llevar control e información del cobro de esa factura
  
  
  
 +
===Volver a nuestra web tras el éxito o fracaso===
  
  
  
Incorporar el botón https://developer.paypal.com/docs/
 
*Para
 
  
 +
<!--
  
*en el enlace Paypal en mi web y notificación instantánea de pago.https://developer.paypal.com/docs/
 
*Notificación del pago https://www.x.com/sites/default/files/ipnguide.pdf
 
  
 
*Creamos una cuenta en paypal
 
*Creamos una cuenta en paypal
Línea 59: Línea 166:
  
 
*http://jesusclaramontegascon.com/blog/como-montar-una-pasarela-de-pago-con-paypal-de-manera-rapida/
 
*http://jesusclaramontegascon.com/blog/como-montar-una-pasarela-de-pago-con-paypal-de-manera-rapida/
*https://www.sandbox.paypal.com/es/cgi-bin/webscr?cmd=_pdn_howto_checkout_outside
 
 
*https://www.sandbox.paypal.com/es/cgi-bin/webscr?cmd=_pdn_xclick_techview_outside
 
*https://www.sandbox.paypal.com/es/cgi-bin/webscr?cmd=_pdn_xclick_techview_outside
 
</div>
 
</div>
 +
-->

Última revisión de 06:52 3 feb 2017



Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg


Para esta parte de la práctica vamos a incorporar un botón de 'realizar la compra' a través de Paypal Por otro lado necesitarmeos insertar código HTML necesario para ello.

Son muchas las formas de poder utilizar paypal para realizar pagos. Existe una documentación detallada y actualizada donde se describe el código, los nombres de variables que hay que usar para pasar la información entre la tienda y la web de paypal para proceder al pago y ejemplos de uso. Todo ello en la página oficial de paypal



En este caso vamos a dar las pautas básicas para hacer una integración de poder porceder al pago en nuestra tienda usando paypal.

  • Para ello vamos a realizar una serie de sencillos pasos explicandos.

Darse de alta en paypal

Lo primero que tenemos que hacer es dar de alta en la web de paypal.
Paypal tiene dos entornos de uso, uno real y otro para pruebas, totalmente ficticio en cuanto al dinero y tarjetas que en él integres.


Icon key points.gif

Puntos clave



Icon inter.gif
Registro en paypal
https://developer.paypal.com/


CuentaPayPal1.png

CuentaPayPal2.png

  • Hay dos tipos de cuenta: De usuario o cliente y de De empresa o vendedor
Developer account,
una cuenta paypal reales para administrar nuestro entorno Paypal como desarrollador.
Sandbox accounts,
cuentas fictícias de distintos tipos para poder realizar las pruebas, pero que son exactamente igual que las Develeper (menos que el dinero y las tarjetas de aquí se consideran fictícias.
  • Cada una tiene su uso, nosotros para nuestra práctica y poder ver su uso, necesitaremos de las dos, una para la tienda (la de empresa), y otra para ser cliente y poder proceder a la compra)
CuentaPayPal3.png


Una vez que nos hemos dado de alta, entramos en nuestra cuenta y accederemos a la sección de pruebas.

  • Para ello accedemos a la sección de Applications dentro de nuestra cuenta
https://developer.paypal.com/developer/applications/?mark=applications
  • En ella buscamos la sección de sandbox
CuentaPayPal4.png

Accedemos a accounts y vemos que tenemos ya cuentas creadas, pero podemos crear nuevas cuentas

https://developer.paypal.com/docs/classic/lifecycle/sb_create-accounts/

Crear el formulario para acceder a la web de paypal

Para acceder al formulario de pago de paypal debemos acceder a la siguiente url

La dirección del servidor al que se debe conectar paypal en modo pruebas será
 https://www.sandbox.paypal.com/cgi-bin/webscr
La dirección del servidor necesario cuando está en real que es
https://www.paypal.com/es/cgi-bin/webscr
  • Nosotros usaremos el primero
 <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
                <!--
                Datos para pagar paypal
 </form>
  • Hay dos maneras de poder incluir el formulario para realizar el pago en la cuenta de paypal, que están descritas aquí
https://www.sandbox.paypal.com/es/cgi-bin/webscr?cmd=_pdn_howto_checkout_outside
Siguiendo el tutorial vamos a ver qué poner para realizar un pago de una sola vez
  • En este caso tendríamos el siguiente formulario
   <input name="cmd" type="hidden" value="_xclick" />
               <!--
                Mi correo de pay pall identificador email ID en profile de mi cuenta de business
                -->
  <input name="business" type="hidden" value="manuelromeromiguel-facilitator@gmail.com" />
 
   <input name="shopping_url" type="hidden" value="http://manuel.infenlaces.com/dwes/TiendaPagar/pagar.php" />
   <input name="currency_code" type="hidden" value="EUR" />
   <input name="return" type="hidden" value="http://manuel.infenlaces.com/dwes/TiendaPagar/pago_realizado.php" />
   <input name="notify_url" type="hidden" value="http://manuel.infenlaces.com/dwes/TiendaPagar/paypal_ipn.php" />
   <input name="rm" type="hidden" value="2" />

_Y ahora los datos de los productos y un submit con imagen de paypall

   <input type="hidden" name="item_name" value="Compra de {$usuario}">
   <input type="hidden" name="amount" value="{$cesta->get_coste()}">
   <input type="image" src="http://www.paypal.com/es_ES/i/btn/x-click-but01.gif" border="0" name="submit" alt="Realice pagos con PayPal: es rápido, gratis y seguro">
  • Los campos facilitados al pago de paypal son los siguientes



cmd

Determina la forma de abordar el cobro por parte de paypal;Por ejemplo, un solo artículo con el monto total (_xclick), los diferentes artículos de carro (_cart).

business

Correo electrónico en su cuenta PayPal.Buscarlo en Profile ID-Mail de la cuenta de Sandox de paypal
[Imagen:IDPaypall.png]

currency_code

Tipo de moneda que se va a utilizar para el pago. Ejemplos: "USD", "EUR", "GBP", "CAD", "JPY".

return

URL de Internet a donde se redirigirá a su cliente tras finalizar el pago. En general será una url de nuestra tienda

notify_url

Esta url es usada únicamente con IPN. URL de Internet donde se realizarán envíos de formularios de IPN: En general sará una url dónde podremos realizar verificaciones de la información que retorno paypal

rm: Modo en el que la aplicacion paypal va a dar variables a nuestra página cuando vengamos del pago por si se quieren recuperar 1=> GET, 2=> POST item_name

Nombre del concepto a realizar el cobro. En este caso será la compra total

amount

Precio a cobrar en este pago


En el caso de querer pasar la cesta completa y que paypal factura cada producto, hemos de cambiar algún campo del formulario que se envía a paypal, y añadir un campo por cada producto especificando un código, nombre, precio y cantidad del mismo. Por ejemplo en el caso de nuestra tienda

<!---
 .....
-->
   <input name="cmd" type="hidden" value="_cart" />
   <input name="upload" type="hidden" value="1" />
   {$n=1}
   {foreach from=$productos item=producto}
        <tr>
         <td>{$producto->get_nombre_corto()}</td>
         <td>{$unidades[$producto->get_codigo()]}</td>
         <td>{$producto->get_PVP()}</td>
        </tr>
        <input name="item_number_{$n}" type="hidden" value="{$producto->get_codigo()}" />
        <input name="item_name_{$n}" type="hidden" value="{$producto->get_nombre_corto()}" />
        <input name="amount_{$n}" type="hidden" value="{$producto->get_PVP()}" />
        <input name="quantity_{$n++}" type="hidden" value="{$unidades[$producto->get_codigo()]}" />
   {/foreach}
Los cambios realizados

1.- El campo cmd pasa a tomar el valor _cart 2.- Apadimos el campo

   <input name="upload" type="hidden" value="1" />

3.- Por cada producto tendremos lo siguientes campos (La x tomará un valor numérico empezando por 1, hasta el número de ariculos que haya). item_number_x

un número de código de cada producto

item_name_x

El nombre de cada producto

amount_x

El precio de cada producto por unidad

quantity_x

La cantidad de unidades de cada producto



Icon inter.gif
Recursos de la Web
https://www.sandbox.paypal.com/es/cgi-bin/webscr?cmd=_pdn_xclick_techview_outside


https://www.sandbox.paypal.com/es/cgi-bin/webscr?cmd=_pdn_howto_checkout_outside


Acciones para aceptar el pago


  • El cobro de la factura es una acción que realiza la web de paypal.

Una vez realizada el cobro, nosotros podremos analizar o procesar cierta información que nos facilita la web de paypal, para llevar control e información del cobro de esa factura


Volver a nuestra web tras el éxito o fracaso