Paypal es una aplicación web basada en comercio electrónico que transfiere el importe entre dos cuentas. Casi todas las empresas con sede en EE. UU. utilizan PayPal para recibir y realizar pagos. Veamos cómo integrar este servicio en la aplicación Rails en diferentes pasos.
Nota: Probé estos pasos en modo de desarrollo, en mi máquina local. Funciona bien pero no se ha probado en producción.
Paso 1: a> En caso de que uno no tenga una cuenta de PayPal, puede visitar http://developer.paypal.com y regístrate para crear una cuenta. Luego inicie sesión con esa cuenta.
b> In order to test the application user should have test accounts on paypal. For e,g – I made two accounts, one as buyer and another as seller. Both have there secure login and later they can use these accounts to send or receive payments.
c> Estas cuentas preconfiguradas se pueden crear yendo a la pestaña de cuentas de prueba. Luego haga clic en la opción preconfigurada para crear cuentas de prueba en PayPal con poca información adicional. Tome nota de la identificación de cuenta y la contraseña generadas tanto para el comprador como para el vendedor. .
d> Ahora, según los requisitos, marque la casilla de verificación de la cuenta en particular y haga clic en el cuadro de enlace para ingresar a esa cuenta de prueba en particular. Al hacer clic en eso, se le redirigirá a http://sandbox.paypal.com. Usando la información de su cuenta, uno puede iniciar sesión en esa cuenta en particular. Estas cuentas y pagos se simulan como se comportaría cualquier cuenta original.
e> Ahora codifiquemos nuestra aplicación Rails para usar estas cuentas. Estoy usando la opción "Agregar al carrito" para seleccionar algunos artículos y agregarlos al carrito; al hacer clic en el botón de pago, se redirige al sitio de PayPal.
En la página siguiente:
f> En mi cart.rb, método paypal_url para redirigir al sitio de PayPal:
def paypal_url(return_url,notify_url) #1st url to return to ur own app,2nd url for paypal to send notification values = { :business => ‘dhyanb_1326716016_biz@gmail.com’, #account generated by paypal :cmd => ‘cart’, :upload => 1, :return => return_url, :invoice => id, :notify_url => notify_url } line_items.each_with_index do |item, index| values.merge!({ “amount#{index+1}” => item.product.price, “item_name_#{index+1}” => item.product.title, “item_number_#{index+1}” => item.product.id, “quantity_#{index+1}” => item.quantity }) end “https://www.sandbox.paypal.com/cgi-bin/webscr?” + values.to_query end
g> In my show.html.erb, I have placed the checkout button with url to return to: <?php = button_to “Checkout”, @cart.paypal_url(products_url,payment_notifications_url) ?>
h> Debes iniciar sesión mientras simulas este servicio.
i> Después de hacer clic en finalizar compra, esto le redirigirá al sitio de Paypal con una conexión segura.
Se verá así: Contiene los detalles del carrito y un formulario para que el comprador inicie sesión.
j> En esta página de pago, uno debe proporcionar su identificación de cuenta de comprador y contraseña para iniciar sesión. Después de iniciar sesión, también se mostrarán otros detalles del usuario con la opción de pagar ahora. Después de pagar, el comprador puede regresar a su propia tienda haciendo clic en el enlace proporcionado en la página.
Notificaciones de Paypal
a> Las notificaciones enviadas desde PayPal se pueden guardar en la base de datos. Para eso necesitamos tener un modelo con los campos adecuados. Es decir, modelo Rails g Parámetros de notificación de pago: estado del texto: cadena ID_transacción: cadena ID_carrito: entero
Mi controlador de notificaciones (método de creación) se verá así: -
def crear PaymentNotification.create!(:params => params, :cart_id => params[:invoice], :status => params[:paid_status], :transaction_id => params[:txn_id]) render :nada => true end
b> There is no direct of testing this,unless deployed in production but it can be tested in the console using curl command. eg-curl -d “txn_id=9JU83038HS278211W&invoice=1&payment_status=Completed” http://localhost:3000/payment_notifications
c> Si este comando se ejecuta sin dar excepciones, entonces todo está bien y los valores se almacenarán en la base de datos.
Comience a realizar el pago ahora.
Gracias por leer !!!
Póngase en contacto con nosotros.