Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Chilkat2-Python) Egyptian eReceipt OAuth2 Client CredentialsSee more Egypt eReceipt ExamplesGet an OAuth2 access token for the Egyptian eReceipt REST API using client credentials (no interactivity with a web browser required). For more information, see https://sdk.invoicing.eta.gov.eg/ereceiptapi/01-authenticate-pos/
import sys import chilkat2 # This example assumes the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. http = chilkat2.Http() # Note: Any provider of a REST API, such as the Egyptian government in this case, can make life # much easier for developers by providing one or more of the following in the API documentation: # # 1) A sample CURL statement for each API call. # 2) A Postman collection, or Swagger/OpenAPI specification file. # 3) A sample of a raw HTTP request and response for each API call. # # The sample CURL statements or raw HTTP request/responses do not need to comprehensively show all # possible options. Providing a sample allows one to quickly make a successful API call. # It also allows for code generation directly from the CURL, Postman collection, or raw request/response, # and it tends to answer all questions about the format/structure of a request that, suprisingly, # remain ambiguous or not obvious in other forms of documentation. req = chilkat2.HttpRequest() req.AddParam("grant_type","client_credentials") # Use your actual client ID and client secret... req.AddParam("client_id","d0394a9f-0607-40de-a978-2d3eb8375b04") req.AddParam("client_secret","6d62315e-d65a-4e41-9112-4195ea834edf") req.AddHeader("posserial","1234567899") req.AddHeader("pososversion","os") req.AddHeader("posmodelframework","1") req.AddHeader("presharedkey","03ac674216f3e1...") # When writing this example, the documentation at https://sdk.invoicing.eta.gov.eg/ereceiptapi/01-authenticate-pos/ # shows us the HTTP verb and path (POST /connect/token), however, # we don't see the actual domain where the request is to be sent. # What are the endpoints??? # It took some searching, but we found some endpoints here: https://sdk.invoicing.eta.gov.eg/faq/ # It's not immediately apparent which endpoint is to be used with a given API call. # Why not just include the endpoint in the documentation for each REST API call? # Endpoints are literally the #1 thing that needs to be known. # They can't just be buried in a FAQ. They should be up-front and obvious. # # So.. we're guessing the endpoint is likely "https://invoicing.eta.gov.eg/connect/token" # resp is a CkHttpResponse resp = http.PostUrlEncoded("https://invoicing.eta.gov.eg/connect/token",req) if (http.LastMethodSuccess == False): print(http.LastErrorText) sys.exit() sbResponseBody = chilkat2.StringBuilder() resp.GetBodySb(sbResponseBody) jResp = chilkat2.JsonObject() jResp.LoadSb(sbResponseBody) jResp.EmitCompact = False print("Response Body:") print(jResp.Emit()) respStatusCode = resp.StatusCode print("Response Status Code = " + str(respStatusCode)) if (respStatusCode >= 400): print("Response Header:") print(resp.Header) print("Failed.") sys.exit() # If successful, the OAuth2 access token JSON looks like this: # { # "token_type": "Bearer", # "access_token": "eyJraW......R2sbqrY", # "expires_in": "3600", # "scope": "..." # } token_type = jResp.StringOf("token_type") access_token = jResp.StringOf("access_token") expires_in = jResp.StringOf("expires_in") scope = jResp.StringOf("scope") |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.