Работа с API на Django:
На сегодняшний день, я разобрался с API подключением к следующим ресурсам:
- Приват-Банк
- Новая Почта
- Маркетплейс Prom.Ua
Ниже привожу примеры запросов.
Приват-Банк
import hashlib
def privat_bank (request):
# === Переменные ==========================================
url = "https://api.privatbank.ua/p24api/balance"
password = "МОЙ-API-КЛЮЧ-В-ПРИВАТБАНКЕ"
head = """<?xml version="1.0" encoding="UTF-8"?>
<request version="1.0">
<merchant>
<id>ID-МОЕГО-API-КЛЮЧА-В-ПРИВАТБАНКЕ</id>
<signature>"""
data = """<oper>cmt</oper>
<wait>0</wait>
<test>0</test>
<payment id="">
<prop name="cardnum" value="№-МОЕЙ-КАРТЫ-В-ПРИВАТБАНКЕ" />
<prop name="country" value="UA" />
</payment>"""
end_head = """</signature>
</merchant>
<data>
"""
footer = """
</data>
</request>"""
# === Шифрование Ключа ====================================
signature_md5 = md5((data+password).encode('utf-8')).hexdigest()
signature_done = sha1(signature_md5.encode('utf-8')).hexdigest()
data_done = head + signature_done + end_head + data + footer
# === Запрос ==============================================
res = post(url, data=data_done, headers={'Content-Type': 'application/xml; charset=UTF-8'})
# === Результат ===========================================
print("Результат: ", res.text)
return render(request, 'robot-privat-bank.html', locals());
Новая Почта
def nova_poshta (request):
# === Переменные ==========================================
novaposhta_url = "https://api.novaposhta.ua/v2.0/xml/"
novaposhta_data = """<?xml version="1.0" encoding="UTF-8"?>
<root>
<apiKey>МОЙ-API-КЛЮЧ-В-НОВОЙ-ПОЧТЕ</apiKey>
<calledMethod>getStatusDocuments</calledMethod>
<methodProperties>
<Documents>
<item>
<DocumentNumber>НОМЕР-ДЕКЛАРАЦИИ</DocumentNumber>
<Phone></Phone>
</item>
</Documents>
</methodProperties>
<modelName>TrackingDocument</modelName>
</root>"""
# === Запрос ==============================================
res = post(novaposhta_url, data=novaposhta_data, headers={'Content-Type': 'application/xml; charset=UTF-8'})
# === Результат ===========================================
print("Результат: ", res.content)
return render(request, 'robot-nova_poshta.html', locals());
Маркетплейс Prom.Ua (JSON)
AUTH_TOKEN = 'МОЙ-КЛЮЧ-В-PROM-UA'
HOST = 'my.prom.ua'
def prom_ua (request):
connection = http.client.HTTPSConnection(HOST)
# === Переменные ==========================================
headers = {'Authorization': 'Bearer {}'.format(AUTH_TOKEN),
'Content-type': 'application/json'}
method = 'GET'
url = '/api/v1/orders/list'
body = None
body = json.dumps(body)
# === Запрос ==============================================
connection.request(method, url, body=body, headers=headers)
response = connection.getresponse()
response_data = response.read()
# === Результат ===========================================
print("Результат: ", response_data)
return render(request, 'robot-prom-ua.html', locals());