Descarcare factura¶
Descriere - Descarcare factura¶
Aceasta sectiune este dedicata descarcarii unei facturi
Descarcarea facturii returneaza continut-ul PDF-ului sub forma de bytes, mai mult de atat, o proprietate HTTP Response content-disposition din care se poate extrage numele fisier-ului cu care a fost incarcata factura; Se poate observa in exemplul de mai jos, cum se extrage numele fisier-ului din raspunsul primit de la server
Model de utilizare API - Descarcare factura¶
Asa cum este explicat in zona de Informatii generale utilizare API orice apel catre API se face catre un URL de baza la care apoi se adauga endpoint-ul respectivei operatii
Notă
Verb: GET
Endpoint: /invoices/{invoiceExternalId}/pdf
Returns: Byte Content
Validari - Descarcare factura¶
La momentul executarii acestul apel NU se vor verifica/valida informatii
Mod de folosire - Wrapper - Descarcare factura¶
- Daca se foloseste wrapper -ul scris in Python se utilizeaza astfel:
Se preia token-ul pe baza parametrilor specifici
Se apeleaza metoda specifica 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, secret=secret, token_url=token_url, api_url=api_url) invoiceExternalId = '{ID_EXTERN_FACTURA}' result = api.invoice_pdf(client_eid, invoiceExternalId)
Mod de folosire - Fara Wrapper - Descarcare factura¶
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 gaseste la sectiunea Autorizarea: Vezi Autorizarea