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
(Android™) Generate an E-way BillDemonstrates how to send an HTTP POST request to generate an e-way bill.
// Important: Don't forget to include the call to System.loadLibrary // as shown at the bottom of this code sample. package com.test; import android.app.Activity; import com.chilkatsoft.*; import android.widget.TextView; import android.os.Bundle; public class SimpleActivity extends Activity { private static final String TAG = "Chilkat"; // Called when the activity is first created. @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 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 CkJsonObject jsonAuth = new CkJsonObject(); boolean success = jsonAuth.LoadFile("qa_data/tokens/ewayAuth.json"); if (success != true) { Log.i(TAG, jsonAuth.lastErrorText()); return; } // 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 CkJsonObject jsonData = new CkJsonObject(); jsonData.UpdateString("supplyType","O"); jsonData.UpdateString("subSupplyType","1"); jsonData.UpdateString("docType","INV"); jsonData.UpdateString("docNo","AW1234-2"); jsonData.UpdateString("docDate","05/04/2018"); jsonData.UpdateString("fromGstin","09ABDC24212B1FK"); jsonData.UpdateString("fromTrdName","willy"); jsonData.UpdateString("fromAddr1","3RD CROSS NO 200 19 A"); jsonData.UpdateString("fromAddr2","GROUND FLOOR OZZY ROAD"); jsonData.UpdateString("fromPlace","BUSY TOWN"); jsonData.UpdateNumber("fromPincode","640033"); jsonData.UpdateNumber("actFromStateCode","05"); jsonData.UpdateNumber("fromStateCode","05"); jsonData.UpdateString("toGstin","01AAAASCC10BBBB"); jsonData.UpdateString("toTrdName","mthustra"); jsonData.UpdateString("toAddr1","Shrek Ogre"); jsonData.UpdateString("toAddr2","Basadronsil"); jsonData.UpdateString("toPlace","Grifl Blagar"); jsonData.UpdateNumber("toPincode","699988"); jsonData.UpdateNumber("actToStateCode","29"); jsonData.UpdateNumber("toStateCode","02"); jsonData.UpdateNumber("totalValue","5609889"); jsonData.UpdateNumber("cgstValue","0"); jsonData.UpdateNumber("sgstValue","0"); jsonData.UpdateNumber("igstValue","168296.67"); jsonData.UpdateNumber("cessValue","224395.56"); jsonData.UpdateString("transporterId","09ABDC24212B1FK"); jsonData.UpdateString("transporterName",""); jsonData.UpdateString("transDocNo","12332"); jsonData.UpdateNumber("transMode","1"); jsonData.UpdateString("transDistance","656"); jsonData.UpdateString("transDocDate","10/04/2018"); jsonData.UpdateString("vehicleNo","PBN4567"); jsonData.UpdateString("vehicleType","R"); jsonData.put_I(0); jsonData.UpdateString("itemList[i].productName","Wheat"); jsonData.UpdateString("itemList[i].productDesc","Wheat"); jsonData.UpdateNumber("itemList[i].hsnCode","1001"); jsonData.UpdateNumber("itemList[i].quantity","4"); jsonData.UpdateString("itemList[i].qtyUnit","BOX"); jsonData.UpdateNumber("itemList[i].cgstRate","0"); jsonData.UpdateNumber("itemList[i].sgstRate","0"); jsonData.UpdateNumber("itemList[i].igstRate","3"); jsonData.UpdateNumber("itemList[i].cessRate","4"); jsonData.UpdateNumber("itemList[i].cessAdvol","0"); jsonData.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.. CkJsonObject jsonRequestBody = new CkJsonObject(); jsonRequestBody.UpdateString("action","GENEWAYBILL"); // Setup the encryptor using the decryptedSek from the jsonAuth CkCrypt2 crypt = new CkCrypt2(); crypt.put_CryptAlgorithm("aes"); crypt.put_CipherMode("ecb"); crypt.put_KeyLength(256); crypt.SetEncodedKey(jsonAuth.stringOf("decryptedSek"),"base64"); crypt.put_EncodingMode("base64"); // Encrypt the jsonData and add it to our JSON request body jsonRequestBody.UpdateString("data",crypt.encryptStringENC(jsonData.emit())); CkHttp http = new CkHttp(); // Add the authtoken to the request header. // Be careful to be precise with uppercase/lowercase ("authtoken" vs "authToken") http.SetRequestHeader("authtoken",jsonAuth.stringOf("authToken")); http.SetRequestHeader("Gstin","09ABDC24212B1FK"); http.put_Accept("application/json"); // POST the request to generate an e-way bill: CkHttpResponse resp = http.PostJson2("http://ewb.wepgst.com/api/EWayBill","application/json",jsonRequestBody.emit()); if (http.get_LastMethodSuccess() != true) { Log.i(TAG, http.lastErrorText()); return; } int respStatusCode = resp.get_StatusCode(); Log.i(TAG, "response status code =" + String.valueOf(respStatusCode)); Log.i(TAG, "response body:"); Log.i(TAG, resp.bodyStr()); if (respStatusCode != 200) { Log.i(TAG, "Failed in some unknown way."); return; } // 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. CkJsonObject json = new CkJsonObject(); json.Load(resp.bodyStr()); int status = json.IntOf("status"); Log.i(TAG, "status = " + String.valueOf(status)); if (status != 1) { // Failed. Base64 decode the error // {"status":"0","error":"eyJlcnJvckNvZGVzIjoiMTA4In0="} // For an invalid password, the error is: {"errorCodes":"108"} CkStringBuilder sbError = new CkStringBuilder(); json.StringOfSb("error",sbError); sbError.Decode("base64","utf-8"); Log.i(TAG, "error: " + sbError.getAsString()); return; } json.put_EmitCompact(false); Log.i(TAG, "JSON response:"); Log.i(TAG, json.emit()); CkBinData bdData = new CkBinData(); bdData.AppendEncoded(json.stringOf("data"),"base64"); crypt.DecryptBd(bdData); // Decrypts to // {"ewayBillNo":331001121234,"ewayBillDate":"24/05/2018 04:38:00 PM","validUpto":"31/05/2018 11:59:00 PM"} CkJsonObject jsonBill = new CkJsonObject(); jsonBill.Load(bdData.getString("utf-8")); int ewayBillNo = jsonBill.IntOf("ewayBillNo"); Log.i(TAG, "ewayBillNo = " + String.valueOf(ewayBillNo)); String ewayBillDate = jsonBill.stringOf("ewayBillDate"); Log.i(TAG, "ewayBillDate = " + ewayBillDate); String validUpto = jsonBill.stringOf("validUpto"); Log.i(TAG, "validUpto = " + validUpto); // Sample output: // ewayBillNo = 331001121234 // ewayBillDate = 24/05/2018 04:55:00 PM // validUpto = 31/05/2018 11:59:00 PM } static { System.loadLibrary("chilkat"); // Note: If the incorrect library name is passed to System.loadLibrary, // then you will see the following error message at application startup: //"The application <your-application-name> has stopped unexpectedly. Please try again." } } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.