Sample code for 30+ languages & platforms
Classic ASP

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 Classic ASP Downloads

Classic ASP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%
success = 0

' 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

set jsonAuth = Server.CreateObject("Chilkat.JsonObject")
success = jsonAuth.LoadFile("qa_data/tokens/ewayAuth.json")
If (success = 0) Then
    Response.Write "<pre>" & Server.HTMLEncode( jsonAuth.LastErrorText) & "</pre>"
    Response.End
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
set jsonData = Server.CreateObject("Chilkat.JsonObject")
success = jsonData.UpdateString("supplyType","O")
success = jsonData.UpdateString("subSupplyType","1")
success = jsonData.UpdateString("docType","INV")
success = jsonData.UpdateString("docNo","AW1234-2")
success = jsonData.UpdateString("docDate","05/04/2018")
success = jsonData.UpdateString("fromGstin","09ABDC24212B1FK")
success = jsonData.UpdateString("fromTrdName","willy")
success = jsonData.UpdateString("fromAddr1","3RD CROSS NO 200  19  A")
success = jsonData.UpdateString("fromAddr2","GROUND FLOOR OZZY ROAD")
success = jsonData.UpdateString("fromPlace","BUSY TOWN")
success = jsonData.UpdateNumber("fromPincode","640033")
success = jsonData.UpdateNumber("actFromStateCode","05")
success = jsonData.UpdateNumber("fromStateCode","05")
success = jsonData.UpdateString("toGstin","01AAAASCC10BBBB")
success = jsonData.UpdateString("toTrdName","mthustra")
success = jsonData.UpdateString("toAddr1","Shrek Ogre")
success = jsonData.UpdateString("toAddr2","Basadronsil")
success = jsonData.UpdateString("toPlace","Grifl Blagar")
success = jsonData.UpdateNumber("toPincode","699988")
success = jsonData.UpdateNumber("actToStateCode","29")
success = jsonData.UpdateNumber("toStateCode","02")
success = jsonData.UpdateNumber("totalValue","5609889")
success = jsonData.UpdateNumber("cgstValue","0")
success = jsonData.UpdateNumber("sgstValue","0")
success = jsonData.UpdateNumber("igstValue","168296.67")
success = jsonData.UpdateNumber("cessValue","224395.56")
success = jsonData.UpdateString("transporterId","09ABDC24212B1FK")
success = jsonData.UpdateString("transporterName","")
success = jsonData.UpdateString("transDocNo","12332")
success = jsonData.UpdateNumber("transMode","1")
success = jsonData.UpdateString("transDistance","656")
success = jsonData.UpdateString("transDocDate","10/04/2018")
success = jsonData.UpdateString("vehicleNo","PBN4567")
success = jsonData.UpdateString("vehicleType","R")
jsonData.I = 0
success = jsonData.UpdateString("itemList[i].productName","Wheat")
success = jsonData.UpdateString("itemList[i].productDesc","Wheat")
success = jsonData.UpdateNumber("itemList[i].hsnCode","1001")
success = jsonData.UpdateNumber("itemList[i].quantity","4")
success = jsonData.UpdateString("itemList[i].qtyUnit","BOX")
success = jsonData.UpdateNumber("itemList[i].cgstRate","0")
success = jsonData.UpdateNumber("itemList[i].sgstRate","0")
success = jsonData.UpdateNumber("itemList[i].igstRate","3")
success = jsonData.UpdateNumber("itemList[i].cessRate","4")
success = jsonData.UpdateNumber("itemList[i].cessAdvol","0")
success = 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..
set jsonRequestBody = Server.CreateObject("Chilkat.JsonObject")
success = jsonRequestBody.UpdateString("action","GENEWAYBILL")

' Setup the encryptor using the decryptedSek from the jsonAuth
set crypt = Server.CreateObject("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
success = jsonRequestBody.UpdateString("data",crypt.EncryptStringENC(jsonData.Emit()))

set http = Server.CreateObject("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:
set resp = Server.CreateObject("Chilkat.HttpResponse")
success = http.HttpJson("POST","http://ewb.wepgst.com/api/EWayBill",jsonRequestBody,"application/json",resp)
If (success = 0) Then
    Response.Write "<pre>" & Server.HTMLEncode( http.LastErrorText) & "</pre>"
    Response.End
End If

respStatusCode = resp.StatusCode
Response.Write "<pre>" & Server.HTMLEncode( "response status code =" & respStatusCode) & "</pre>"
Response.Write "<pre>" & Server.HTMLEncode( "response body:") & "</pre>"
Response.Write "<pre>" & Server.HTMLEncode( resp.BodyStr) & "</pre>"

If (respStatusCode <> 200) Then
    Response.Write "<pre>" & Server.HTMLEncode( "Failed in some unknown way.") & "</pre>"
    Response.End
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.
set json = Server.CreateObject("Chilkat.JsonObject")
success = json.Load(resp.BodyStr)

status = json.IntOf("status")
Response.Write "<pre>" & Server.HTMLEncode( "status = " & status) & "</pre>"

If (status <> 1) Then
    ' Failed.  Base64 decode the error
    ' {"status":"0","error":"eyJlcnJvckNvZGVzIjoiMTA4In0="}
    ' For an invalid password, the error is: {"errorCodes":"108"}
    set sbError = Server.CreateObject("Chilkat.StringBuilder")
    success = json.StringOfSb("error",sbError)
    success = sbError.Decode("base64","utf-8")
    Response.Write "<pre>" & Server.HTMLEncode( "error: " & sbError.GetAsString()) & "</pre>"
    Response.End
End If

json.EmitCompact = 0
Response.Write "<pre>" & Server.HTMLEncode( "JSON response:") & "</pre>"
Response.Write "<pre>" & Server.HTMLEncode( json.Emit()) & "</pre>"

set bdData = Server.CreateObject("Chilkat.BinData")
success = bdData.AppendEncoded(json.StringOf("data"),"base64")
success = crypt.DecryptBd(bdData)

' Decrypts to 
' {"ewayBillNo":331001121234,"ewayBillDate":"24/05/2018 04:38:00 PM","validUpto":"31/05/2018 11:59:00 PM"}

set jsonBill = Server.CreateObject("Chilkat.JsonObject")
success = jsonBill.Load(bdData.GetString("utf-8"))

ewayBillNo = jsonBill.IntOf("ewayBillNo")
Response.Write "<pre>" & Server.HTMLEncode( "ewayBillNo = " & ewayBillNo) & "</pre>"

ewayBillDate = jsonBill.StringOf("ewayBillDate")
Response.Write "<pre>" & Server.HTMLEncode( "ewayBillDate = " & ewayBillDate) & "</pre>"

validUpto = jsonBill.StringOf("validUpto")
Response.Write "<pre>" & Server.HTMLEncode( "validUpto = " & validUpto) & "</pre>"

' Sample output:

' ewayBillNo = 331001121234
' ewayBillDate = 24/05/2018 04:55:00 PM
' validUpto = 31/05/2018 11:59:00 PM

%>
</body>
</html>