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
(Lianja) Generate an E-way BillDemonstrates how to send an HTTP POST request to generate an e-way bill.
// This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // This example uses the previously obtained access token that was retrieved // in this example: Get EWAY Auth Token using Gstin, username, password, and app_key loJsonAuth = createobject("CkJsonObject") llSuccess = loJsonAuth.LoadFile("qa_data/tokens/ewayAuth.json") if (llSuccess <> .T.) then ? loJsonAuth.LastErrorText release loJsonAuth return endif // The jsonAuth contains something like this: // { // "authToken": "IBTeFtxNfVurg71LTzZ2r0xK7", // "decryptedSek": "5g1TyTie7yoslU3DrbYATa7mWyPazlODE7cEh5Vy4Ho=" // } // Generate the JSON data for the e-way bill. // The following code can be generated by pasting representative JSON into this online tool: // Generate JSON Code loJsonData = createobject("CkJsonObject") loJsonData.UpdateString("supplyType","O") loJsonData.UpdateString("subSupplyType","1") loJsonData.UpdateString("docType","INV") loJsonData.UpdateString("docNo","AW1234-2") loJsonData.UpdateString("docDate","05/04/2018") loJsonData.UpdateString("fromGstin","09ABDC24212B1FK") loJsonData.UpdateString("fromTrdName","willy") loJsonData.UpdateString("fromAddr1","3RD CROSS NO 200 19 A") loJsonData.UpdateString("fromAddr2","GROUND FLOOR OZZY ROAD") loJsonData.UpdateString("fromPlace","BUSY TOWN") loJsonData.UpdateNumber("fromPincode","640033") loJsonData.UpdateNumber("actFromStateCode","05") loJsonData.UpdateNumber("fromStateCode","05") loJsonData.UpdateString("toGstin","01AAAASCC10BBBB") loJsonData.UpdateString("toTrdName","mthustra") loJsonData.UpdateString("toAddr1","Shrek Ogre") loJsonData.UpdateString("toAddr2","Basadronsil") loJsonData.UpdateString("toPlace","Grifl Blagar") loJsonData.UpdateNumber("toPincode","699988") loJsonData.UpdateNumber("actToStateCode","29") loJsonData.UpdateNumber("toStateCode","02") loJsonData.UpdateNumber("totalValue","5609889") loJsonData.UpdateNumber("cgstValue","0") loJsonData.UpdateNumber("sgstValue","0") loJsonData.UpdateNumber("igstValue","168296.67") loJsonData.UpdateNumber("cessValue","224395.56") loJsonData.UpdateString("transporterId","09ABDC24212B1FK") loJsonData.UpdateString("transporterName","") loJsonData.UpdateString("transDocNo","12332") loJsonData.UpdateNumber("transMode","1") loJsonData.UpdateString("transDistance","656") loJsonData.UpdateString("transDocDate","10/04/2018") loJsonData.UpdateString("vehicleNo","PBN4567") loJsonData.UpdateString("vehicleType","R") loJsonData.I = 0 loJsonData.UpdateString("itemList[i].productName","Wheat") loJsonData.UpdateString("itemList[i].productDesc","Wheat") loJsonData.UpdateNumber("itemList[i].hsnCode","1001") loJsonData.UpdateNumber("itemList[i].quantity","4") loJsonData.UpdateString("itemList[i].qtyUnit","BOX") loJsonData.UpdateNumber("itemList[i].cgstRate","0") loJsonData.UpdateNumber("itemList[i].sgstRate","0") loJsonData.UpdateNumber("itemList[i].igstRate","3") loJsonData.UpdateNumber("itemList[i].cessRate","4") loJsonData.UpdateNumber("itemList[i].cessAdvol","0") loJsonData.UpdateNumber("itemList[i].taxableAmount","5609889") // The body of the HTTP POST will contain JSON that looks like this: // { // "action":"GENEWAYBILL", // "data": " iJiJGXq ... oUZp/25Y " // } // The "data" is the encrypted jsonData using our previously agreed-upon symmetric encryption key. // Let's begin build the JSON request body.. loJsonRequestBody = createobject("CkJsonObject") loJsonRequestBody.UpdateString("action","GENEWAYBILL") // Setup the encryptor using the decryptedSek from the jsonAuth loCrypt = createobject("CkCrypt2") loCrypt.CryptAlgorithm = "aes" loCrypt.CipherMode = "ecb" loCrypt.KeyLength = 256 loCrypt.SetEncodedKey(loJsonAuth.StringOf("decryptedSek"),"base64") loCrypt.EncodingMode = "base64" // Encrypt the jsonData and add it to our JSON request body loJsonRequestBody.UpdateString("data",loCrypt.EncryptStringENC(loJsonData.Emit())) loHttp = createobject("CkHttp") // Add the authtoken to the request header. // Be careful to be precise with uppercase/lowercase ("authtoken" vs "authToken") loHttp.SetRequestHeader("authtoken",loJsonAuth.StringOf("authToken")) loHttp.SetRequestHeader("Gstin","09ABDC24212B1FK") loHttp.Accept = "application/json" // POST the request to generate an e-way bill: loResp = loHttp.PostJson2("http://ewb.wepgst.com/api/EWayBill","application/json",loJsonRequestBody.Emit()) if (loHttp.LastMethodSuccess <> .T.) then ? loHttp.LastErrorText release loJsonAuth release loJsonData release loJsonRequestBody release loCrypt release loHttp return endif lnRespStatusCode = loResp.StatusCode ? "response status code =" + str(lnRespStatusCode) ? "response body:" ? loResp.BodyStr if (lnRespStatusCode <> 200) then release loResp ? "Failed in some unknown way." release loJsonAuth release loJsonData release loJsonRequestBody release loCrypt release loHttp return endif // When the response status code = 200, we'll have either // success response like this: // {"status":"1","data":"..."} // // or a failed response like this: // // {"status":"0","error":"eyJlcnJvckNvZGVzIjoiMTA4In0="} // Load the response body into a JSON object. loJson = createobject("CkJsonObject") loJson.Load(loResp.BodyStr) release loResp lnStatus = loJson.IntOf("status") ? "status = " + str(lnStatus) if (lnStatus <> 1) then // Failed. Base64 decode the error // {"status":"0","error":"eyJlcnJvckNvZGVzIjoiMTA4In0="} // For an invalid password, the error is: {"errorCodes":"108"} loSbError = createobject("CkStringBuilder") loJson.StringOfSb("error",loSbError) loSbError.Decode("base64","utf-8") ? "error: " + loSbError.GetAsString() release loJsonAuth release loJsonData release loJsonRequestBody release loCrypt release loHttp release loJson release loSbError return endif loJson.EmitCompact = .F. ? "JSON response:" ? loJson.Emit() loBdData = createobject("CkBinData") loBdData.AppendEncoded(loJson.StringOf("data"),"base64") loCrypt.DecryptBd(loBdData) // Decrypts to // {"ewayBillNo":331001121234,"ewayBillDate":"24/05/2018 04:38:00 PM","validUpto":"31/05/2018 11:59:00 PM"} loJsonBill = createobject("CkJsonObject") loJsonBill.Load(loBdData.GetString("utf-8")) lnEwayBillNo = loJsonBill.IntOf("ewayBillNo") ? "ewayBillNo = " + str(lnEwayBillNo) lcEwayBillDate = loJsonBill.StringOf("ewayBillDate") ? "ewayBillDate = " + lcEwayBillDate lcValidUpto = loJsonBill.StringOf("validUpto") ? "validUpto = " + lcValidUpto // Sample output: // ewayBillNo = 331001121234 // ewayBillDate = 24/05/2018 04:55:00 PM // validUpto = 31/05/2018 11:59:00 PM release loJsonAuth release loJsonData release loJsonRequestBody release loCrypt release loHttp release loJson release loSbError release loBdData release loJsonBill |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.