Quantcast
Channel: Planeta Linux Venezuela
Viewing all articles
Browse latest Browse all 1457

Carlos Guerrero: Paypal con Python

$
0
0

Después de pasar muchos días e incluso semanas tratando de descifrar como hacer funcionar el pago con Paypal en sitios hechos con Python (Django en mi caso) examinando el código de repositorios como django-paypal sin ningún éxito.

Finalmente logré realizarlo, pero tuve que crear mi propia función, basándome en lo que sale en la críptica documentación actual de Paypal:

En el lado de Paypal debes modificar la siguiente configuración, entrar en "Preferencias del sitio Web":

Y activar "Transferencia de datos de pago" para luego copiar el campo "Código personal de identidad" que servira para el mecanismo de pago que se va a implementar con Django.

Una vez guardada esta configuración en el sitio de Paypal. Se puede aprovechar para crear un botón de pago, en el cual se especifica cual será la URL a la que se debe devolver al usuario justo despues de que se logra el pago con Paypal, en "3: Customize advanced features" de la siguiente manera:

Una vez se ha puesto el botón en la pagina web, al usarlo, se redirigirá al cliente a la URL que hayamos especificado para ese botón, por lo cual debemos tener esa URL especificada en nuestro urls.py y con una funcion correspondiente en la cual usaremos la funcion paypal_check de la siguiente manera:

success , info = paypal_check(request.GET['tx'],'<Código personal de identidad>')
if success:
#Código donde se procesa el pago, recibiendo toda la información que paypal te da en la variable info

Cuando Paypal te redirecciona, envia un campo GET con el nombre 'tx', con él y tu codigo personal de identidad, paypal_check realiza un request a paypal verificando si realmente es un pago que acaba de realizarse y fue exitoso. De ser así, se obtiene 'SUCCESS' y una serie de campos adicionales muy utiles:

info contiene: {'protection_eligibility': 'Ineligible', 'last_name': 'Guerrero', 'txn_id': '8YG081780W', 'store_id': '', 'shipping_discount': '0.00', 'receiver_email': 'guerrerocarlos%40gmail.com', 'payment_status': 'Completed', 'payment_gross': '5.00', 'terminal_id': '', 'tax': '0.00', 'residence_country': 'VE', 'payer_status': 'verified', 'txn_type': 'web_accept', 'pos_transaction_type': '', 'handling_amount': '0.00', 'shipping_method': 'Default', 'payment_date': '19%3A44%3A48+Sep+09%2C+2012+PDT', 'first_name': 'Carlos', 'btn_id': '50793', 'item_name': '1+Month', 'charset': 'windows-1252', 'receipt_reference_number': '', 'custom': '', 'transaction_subject': '1+Month', 'item_number': '1M', 'receiver_id': 'YPQJZFV6U4U', 'business': 'guerrerocarlos%40gmail.com', 'payer_business_name': 'Other', 'payer_id': 'A6E56SJCUQ', 'discount': '0.00', 'num_offers': '0', 'payment_fee': '0.57', 'insurance_amount': '0.00', 'mc_fee': '0.57', 'mc_currency': 'USD', 'shipping': '0.00', 'payer_email': 'client%40carlosguerrero.com', 'payment_type': 'instant', 'mc_gross': '5.00', 'quantity': '1'}

Ya con eso se tiene toda la informacion necesaria para procesar el pago del cliente, guardar su correo, el monto de su pago e incluso darle de una vez el producto que compró, si es entregable por vía digital.

Espero les sirva, cualquier pregunta estoy a la orden @guerrerocarlos

 


Viewing all articles
Browse latest Browse all 1457

Trending Articles