VB.NET
VB.NET
Generate an E-way Bill
See more HTTP Misc Examples
Demonstrates how to send an HTTP POST request to generate an e-way bill.Chilkat VB.NET Downloads
Dim success As Boolean = False
' 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
Dim jsonAuth As New Chilkat.JsonObject
success = jsonAuth.LoadFile("qa_data/tokens/ewayAuth.json")
If (success = False) Then
Debug.WriteLine(jsonAuth.LastErrorText)
Exit Sub
End If
' 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
Dim jsonData As New Chilkat.JsonObject
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.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..
Dim jsonRequestBody As New Chilkat.JsonObject
jsonRequestBody.UpdateString("action","GENEWAYBILL")
' Setup the encryptor using the decryptedSek from the jsonAuth
Dim crypt As New Chilkat.Crypt2
crypt.CryptAlgorithm = "aes"
crypt.CipherMode = "ecb"
crypt.KeyLength = 256
crypt.SetEncodedKey(jsonAuth.StringOf("decryptedSek"),"base64")
crypt.EncodingMode = "base64"
' Encrypt the jsonData and add it to our JSON request body
jsonRequestBody.UpdateString("data",crypt.EncryptStringENC(jsonData.Emit()))
Dim http As New Chilkat.Http
' 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.Accept = "application/json"
' POST the request to generate an e-way bill:
Dim resp As New Chilkat.HttpResponse
success = http.HttpJson("POST","http://ewb.wepgst.com/api/EWayBill",jsonRequestBody,"application/json",resp)
If (success = False) Then
Debug.WriteLine(http.LastErrorText)
Exit Sub
End If
Dim respStatusCode As Integer = resp.StatusCode
Debug.WriteLine("response status code =" & respStatusCode)
Debug.WriteLine("response body:")
Debug.WriteLine(resp.BodyStr)
If (respStatusCode <> 200) Then
Debug.WriteLine("Failed in some unknown way.")
Exit Sub
End If
' 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.
Dim json As New Chilkat.JsonObject
json.Load(resp.BodyStr)
Dim status As Integer = json.IntOf("status")
Debug.WriteLine("status = " & status)
If (status <> 1) Then
' Failed. Base64 decode the error
' {"status":"0","error":"eyJlcnJvckNvZGVzIjoiMTA4In0="}
' For an invalid password, the error is: {"errorCodes":"108"}
Dim sbError As New Chilkat.StringBuilder
json.StringOfSb("error",sbError)
sbError.Decode("base64","utf-8")
Debug.WriteLine("error: " & sbError.GetAsString())
Exit Sub
End If
json.EmitCompact = False
Debug.WriteLine("JSON response:")
Debug.WriteLine(json.Emit())
Dim bdData As New Chilkat.BinData
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"}
Dim jsonBill As New Chilkat.JsonObject
jsonBill.Load(bdData.GetString("utf-8"))
Dim ewayBillNo As Integer = jsonBill.IntOf("ewayBillNo")
Debug.WriteLine("ewayBillNo = " & ewayBillNo)
Dim ewayBillDate As String = jsonBill.StringOf("ewayBillDate")
Debug.WriteLine("ewayBillDate = " & ewayBillDate)
Dim validUpto As String = jsonBill.StringOf("validUpto")
Debug.WriteLine("validUpto = " & validUpto)
' Sample output:
' ewayBillNo = 331001121234
' ewayBillDate = 24/05/2018 04:55:00 PM
' validUpto = 31/05/2018 11:59:00 PM