Descărcare factură

Descriere - Descărcare factură

  • Această secțiune este dedicată descărcării unei facturi

  • Descărcarea facturii returnează conținutul PDF-ului sub formă de bytes, mai mult de atât, o proprietate HTTP Response content-disposition din care se poate extrage numele fișierului cu care a fost încărcată factura Se poate observa în exemplul de mai jos, cum se extrage numele fișierului din răspunsul primit de la server

Model de utilizare API - Descărcare factură

Notă

  • Verb: GET

  • Endpoint: /invoices/{invoiceExternalId}/pdf

  • Returns: Byte Content

Validări - Descărcare factură

La momentul executării acestui apel NU se vor verifica și valida informații

Mod de folosire - Wrapper - Descărcare factură

  • Dacă se folosește wrapper-ul scris în Python se utilizează astfel:
    1. Se preia token-ul Vezi Autorizarea

    2. Se apelează metoda specifică acestui request GET

    token_url = 'https://staging.keez.ro/idp/connect/token'
    api_url = f'https://{ENVIRONMENT}.keez.ro/api/v1.0/public-api'
    
    client_eid = '{RECEIVED_CLIENT_EID}'
    application_id = '{RECEIVED_APPLICATION_ID}'
    secret = '{RECEIVED_SECRET}'
    
    api = KeezPublicApi(app=application_id, secret=secret, token_url=token_url, api_url=api_url)
    
    invoiceExternalId = '{ID_EXTERN_FACTURA}'
    result = api.invoice_pdf(client_eid, invoiceExternalId)
    

Mod de folosire - Fără Wrapper - Descărcare factură

class InvoiceService:
    def __init__(self):
        token = TokenService()
        self.auth_token = token.generate_token()
        self.token = f'{self.auth_token.get("token_type")} {self.auth_token.get("access_token")}'

        self.client_eid = token.client_eid
        self.api_endpoint = token.api_endpoint

    def download_invoice(self):
        invoiceExternalId = '{ID_EXTERN_FACTURA}'
        invoice_url = f'/{self.client_eid}/invoices/{invoiceExternalId}/pdf'

        _req = requests.get(url=invoice_url, headers={'Content-Type': 'application/json', 'Authorization': self.token})
        disp = _req.headers['content-disposition']
        name = None
        if 'filename' in disp:
            name = disp[disp.index('=') + 1:].strip()
            if '"' in name:
                name = name.replace('"', '').strip()

        return name, _req.content


if __name__ == '__main__':
    service = InvoiceService()
    invoice_file_name, byte_content = service.download_invoice()
    print(invoice_file_name)
    print(byte_content)

Atenționare

A se observa:
_req.headers['content-disposition']

Notă

Clasa TokenService() se găsește la secțiunea Autorizarea: Vezi Autorizarea