2010-02-23 3 views
4

Я буду передавать информацию о покупке (например, CC) на банковский шлюз и получить результат с помощью Django, таким образом, через Python.Python и curl question

Каким будет эффективный и безопасный способ сделать это?

Я прочитал документацию этого шлюза для PHP, они, кажется, используют этот метод:

$xml= Some xml holding data of a purchase. 
$curl = `/usr/bin/curl -s -d 'DATA=$xml' "https://url of the virtual bank POS"`; 
$data=explode("\n",$curl); //return value is also an xml, seems like they are splitting by each `\n` 

и используя $ данных, они перерабатывают, если платеж будет принят, отклонен и т.д ..

Я хочу достичь этого на языке python, для этого я сделал несколько поисков и, похоже, есть приложение для завивки python с именем pycurl, но у меня нет опыта использования завитка и не знаю, подходит ли эта библиотека для этой задачи. Имейте в виду, что поскольку для этой передачи требуется безопасность, я буду использовать SSL.

Любое предложение будет оценено по достоинству.

ответ

10

Использование стандартной библиотеки urllib2 модуль должен быть достаточно:

import urllib 
import urllib2 

request_data = urllib.urlencode({"DATA": xml}) 
response = urllib2.urlopen("https://url of the virtual bank POS", request_data) 

response_data = response.read() 
data = response_data.split('\n') 

Я предполагаю, что xml переменная содержит данные для отправки.

+0

Спасибо большое lukasz! Мне интересно, есть ли какой-либо дополнительный параметр/метод для использования/подключения HTTPS? – Hellnar

+1

Python stdlib очень хорошо обрабатывает соединения https, если у вас установлен socket.ssl ​​(не для некоторых дистрибутивов python). Кроме того, только другая проблема - проверка достоверности сертификата, если вам это нужно, то httplib.HTTPSConnection поможет. –

3

Приводя pycurl.sourceforge.net:

Подводя итог, PycURL очень быстро (. Особ для нескольких одновременных операций) и очень функционален, но имеет несколько сложный интерфейс. Если вам нужно что-то более простое или предпочитайте чистый модуль Python, вы можете проверить urllib2 и urlgrabber. Существует также хорошее сравнение различных библиотек.

Оба curl и urllib2 могут работать с https, так что это зависит от вас.