Работа с API на Django:



На сегодняшний день, я разобрался с API подключением к следующим ресурсам:

  1. Приват-Банк
  2. Новая Почта
  3. Маркетплейс 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());



Обучающие материалы по Django:

Здесь пока пусто