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ă¶
Așa cum este explicat în zona de Informații generale utilizare API orice apel către API se face prin URL-ul de bază + endpoint-ul respectivei operații
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:
Se preia token-ul Vezi Autorizarea
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