Anzeige

Más contenido relacionado

Similar a Работа с платежными системами в Django (Paypal, WebMoney)(20)

Último(20)

Anzeige

Работа с платежными системами в Django (Paypal, WebMoney)

  1. Работа с платежными системами в Django (Pa yp al, WebMoney ) Моргун Иван blog : http://proft.com.ua twitter : @proft PyCamp Kyiv 2010
  2. Почему Django ? Django — свободный фреймворк для веб-приложений на языке Python. (wikipedia)
  3. Python
  4. ORM
  5. Встроенный сервер для разработки
  6. Готовая админка
  7. Богатый набор приложений
  8. Шаблоны
  9. Формы 8 причин использовать Django * * @coderholic http://www.coderholic.com/8-reasons-why-you-should-try-django/
  10. куплена eBay в 2002
  11. свыше 180,000 счетов
  12. доступна в более чем 100 странах
  13. 19 валют
  14. к омпании, основанные бывшими сотрудниками
  15. Instant Payment Notification (IPN)
  16. Payment Data Transfer (PDT)
  17. PayPal API
  18. Express Checkout
  19. Premier account (API, IPN, PDT)
  20. Business account (API, отчеты, Multi-User Access)
  21. Sandbox account (отладочный)
  22. Confirmed
  23. Limited
  24. Closed
  25. Кнопка Donations — благотворительность
  26. Subscriptions — периодически повторяющиеся оплата
  27. PayPal Shopping Cart — заказ нескольких товаров
  28. Cart Upload — корзина, разработанная третьим лицом Website Payments Standard
  29. Website Payments Standard
  30. Пример кнопки Buy Now <form action=&quot;https://www.paypal.com/cgi-bin/webscr&quot; method=&quot;post&quot;> <input type=&quot;hidden&quot; name=&quot; cmd &quot; value=&quot;_xclick&quot;/> <input type=&quot;hidden&quot; name=&quot; business &quot; value=&quot;seller@sait.com&quot;/> <input type=&quot;hidden&quot; name=&quot; item_name &quot; value=&quot;Django book&quot;/> <input type=&quot;hidden&quot; name=&quot; item_number &quot; value=&quot;123&quot;/> <input type=&quot;hidden&quot; name=&quot; amount &quot; value=&quot;75.00&quot;/> <input type=&quot;hidden&quot; name=&quot;no_shipping&quot; value=&quot;2&quot;/> <input type=&quot;hidden&quot; name=&quot;no_note&quot; value=&quot;1&quot;/> <input type=&quot;hidden&quot; name=&quot; currency_code &quot; value=&quot;USD&quot;/> <input type=&quot;hidden&quot; name=&quot;bn&quot; value=&quot;PP-BuyNowBF&quot;/> <input type=&quot; image &quot; src=&quot;https://www.paypal.com/en_US/i/btn/x-click-but23.gif&quot; border=&quot;0&quot; name=&quot;submit&quot; alt=&quot;Make payments with PayPal - it's fast, free and secure!&quot;/> <img alt=&quot;&quot; border=&quot;0&quot; src=&quot;https://www.paypal.com/en_US/i/scr/pixel.gif&quot; width=&quot;1&quot; height=&quot;1&quot;/> </form> • business — email продавца • item_name — имя товара • item_number — артикль товара • amount — сумма • currency_code — валюта • image — url изображения
  31. Передаем в Paypal сумму каждого товара отдельно, для всех товаров в корзине
  32. Пример Shopping Cart <form action=&quot;https://www.paypal.com/cgi-bin/webscr&quot; method=&quot;post&quot;> <input type=&quot;hidden&quot; name=&quot; cmd &quot; value=&quot;_cart&quot;/> <input type=&quot;hidden&quot; name=&quot;upload&quot; value=&quot;1&quot;/> <input type=&quot;hidden&quot; name=&quot; business &quot; value=&quot;seller@sait.com&quot;/> <input type=&quot;hidden&quot; name=&quot; item_name_1 &quot; value=&quot;Shoes 1&quot;/> <input type=&quot;hidden&quot; name=&quot; amount_1 &quot; value=&quot;1.00&quot;/> <input type=&quot;hidden&quot; name=&quot; quantity_1 &quot; value=&quot;1&quot;/> <input type=&quot;hidden&quot; name=&quot; item_name_2 &quot; value=&quot;Shoes 2&quot;/> <input type=&quot;hidden&quot; name=&quot; amount_2 &quot; value=&quot;2.00&quot;/> <input type=&quot;hidden&quot; name=&quot; quantity_2 &quot; value=&quot;3&quot;/> <input type=&quot;submit&quot; value=&quot;PayPal&quot;/> </form>
  33. URL возврата, после покупки
  34. Сумма
  35. Количество
  36. Любое другое поле
  37. Payment Data Transfer Индетификация покупателя по Transaction ID
  38. Payment Data Transfer
  39. Instant Payment Notification
  40. Name-Value Pair (NVP) — использует словарь переменных, похожих как в схеме eBL. Запросы и ответы отсылаются как простые строки через протокол HTTP.
  41. Paypal API : MassPay, поиск транзакций, получение информации о транзакции и т.д.
  42. Django-paypal — application для Django реализующий Website Payments Standard (Buy now) и Website Payments Pro (Direct Payment, Express Checkout) http://goo.gl/M5Nf by johnboxall [email_address] django-paypal
  43. Пример использования django-paypal (IPN) 1. git clone git://github.com/johnboxall/django-paypal.git paypal 2. # settings.py INSTALLED_APPS = (... 'paypal.standard.ipn', ...) PAYPAL_RECEIVER_EMAIL = &quot;seller@sait.com&quot; 3. Вид (views.py): from paypal.standard.forms import PayPalPaymentsForm def view_that_asks_for_money(request): paypal_dict = { &quot;business&quot;: &quot;seller@sait.com&quot;, &quot;amount&quot;: &quot;100&quot;, &quot;item_name&quot;: &quot;Shoes 1&quot;, &quot;invoice&quot;: &quot;101&quot;, &quot;notify_url&quot;: &quot;http://www.sait.com/ipn-location/&quot;, &quot;return_url&quot;: &quot;http://www.sait.com/return-location/&quot;, &quot;cancel_return&quot;: &quot;http://www.sait.com/cancel-location/&quot;, } form = PayPalPaymentsForm(initial=paypal_dict) context = {&quot;form&quot;: form} return render_to_response(&quot;payment.html&quot;, context) 4. Шаблон (payment.html) <b>Hello user! You buy now 'Shoe 1'!</h1> {{ form.render }}
  44. payment_was_flagged и 4 для Subscription. # models.py from paypal.standard.ipn.signals import payment_was_successful def show_me_the_money(sender, **kwargs): ipn_obj = sender if ipn_obj.custom == &quot;Upgrade all users!&quot;: Users.objects.update(paid=True) payment_was_successful.connect(show_me_the_money)
  45. Пример использования django-paypal (WPS+ EWP ) 1. Для шифрования кнопки нам понадобится библиотека M2Crypto easy_install M2Crypto 2. Создаем приватный ключ , который будет использоватся в сертификате для зашифрованной кнопки: openssl genrsa -out paypal.pem 1024 3. Создаем публичный ключ: openssl req -new -key paypal.pem -x509 -days 365 -out pubpaypal.pem 4. Загружаем публичный ключ в свой Paypal Account или Sandbox: https://www.paypal.com/us/cgi-bin/webscr?cmd=_profile-website-cert https://www.sandbox.paypal.com/us/cgi-bin/webscr?cmd=_profile-website-cert 5. Копируем CertID . 6. Скачиваем публичный ключ от Paypal. 7. В settings.py добавляем: PAYPAL_PRIVATE_CERT = '/path/to/paypal.pem' PAYPAL_PUBLIC_CERT = '/path/to/pubpaypal.pem' PAYPAL_CERT = '/path/to/paypal_cert.pem' PAYPAL_CERT_ID = 'get-from-paypal-website'
  46. Пример использования django-paypal (WPS+ EWP ) 8. В view.py заменяем PayPalPaymentsForm на PayPalEncryptedPaymentsForm from paypal.standard.forms import PayPalEncryptedPaymentsForm def view_that_asks_for_money(request): paypal_dict = { &quot;business&quot;: &quot;seller@sait.com&quot;, &quot;amount&quot;: &quot;100&quot;, &quot;item_name&quot;: &quot;Shoes 1&quot;, &quot;invoice&quot;: &quot;101&quot;, &quot;notify_url&quot;: &quot;http://www.sait.com/ipn-location/&quot;, &quot;return_url&quot;: &quot;http://www.sait.com/return-location/&quot;, &quot;cancel_return&quot;: &quot;http://www.sait.com/cancel-location/&quot;, } form = PayPalEncryptedPaymentsForm (initial=paypal_dict) context = {&quot;form&quot;: form} return render_to_response(&quot;payment.html&quot;, context)
  47. гривневый оборот составил 1 млрд. 397 млн. WMU (на 2009 год)
  48. количество зарегистрированных в системе украинских граждан достигло 1 млн. 550 тыс. человек .
  49. Прием платежей через интерфейс сервиса Web Merchant Interface Два шага для обеспечения приема WM на своем веб-сайте через сервис Web Merchant Interface: 1. Настроить сервис Web Merchant Interface для обработки платежей, выполняемых клиентом на ваш кошелек, в разделе Настройки; 2. Создать 3 HTML страницы - платежную страницу, страницу успешно выполненного платежа и страницу невыполненного платежа;
  50. Шаг 2. Создание 3-х HTML страниц  pay.html <html> <head> <title>Pay</title> </head> <body> <form id=pay name=pay method=&quot;POST&quot; action=&quot;https://merchant.webmoney.ru/lmi/payment.asp&quot;> <p>пример платежа через сервис Web Merchant Interface</p> <p>заплатить 1 WMZ...</p> <p> <input type=&quot;hidden&quot; name=&quot; LMI_PAYMENT_AMOUNT &quot; value=&quot;1.0&quot;> <input type=&quot;hidden&quot; name=&quot; LMI_PAYMENT_DESC &quot; value=&quot;тестовый платеж&quot;> <input type=&quot;hidden&quot; name=&quot; LMI_PAYMENT_NO &quot; value=&quot;1&quot;> <input type=&quot;hidden&quot; name=&quot; LMI_PAYEE_PURSE &quot; value=&quot;Z145179295679&quot;> <input type=&quot;hidden&quot; name=&quot; LMI_SIM_MODE &quot; value=&quot;0&quot;> </p> <p> <input type=&quot;submit&quot; value=&quot;submit&quot;> </p> </form> </body> </html> 
  51. Шаг 2. Создание 3-х HTML страниц  success.html <html> <head> <title>Success</title> </head> <body> <p>Платеж был выполнен.</p> </body> </html> fail.html <html> <head> <title>Fail</title> </head> <body> <p>Платеж не был выполнен.</p> </body> </html>
  52. Integration Center – paypal.com/integration
  53. PayPalDev.org – paypaldev.org
  54. Описание интерфейса сервиса Web Merchant Interface https://merchant.webmoney.ru/conf/guide.asp
  55. Django-payment-webmoney http://goo.gl/ucmx
  56. Спасибо за внимание! Вопросы ??? Моргун Иван blog : http://proft.com.ua twitter : @proft PyCamp Kyiv 2010
Anzeige