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
(Perl) Generate an E-way BillDemonstrates how to send an HTTP POST request to generate an e-way bill.
use chilkat(); # 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 $jsonAuth = chilkat::CkJsonObject->new(); $success = $jsonAuth->LoadFile("qa_data/tokens/ewayAuth.json"); if ($success != 1) { print $jsonAuth->lastErrorText() . "\r\n"; exit; } # 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 $jsonData = chilkat::CkJsonObject->new(); $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.. $jsonRequestBody = chilkat::CkJsonObject->new(); $jsonRequestBody->UpdateString("action","GENEWAYBILL"); # Setup the encryptor using the decryptedSek from the jsonAuth $crypt = chilkat::CkCrypt2->new(); $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())); $http = chilkat::CkHttp->new(); # 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: # resp is a HttpResponse $resp = $http->PostJson2("http://ewb.wepgst.com/api/EWayBill","application/json",$jsonRequestBody->emit()); if ($http->get_LastMethodSuccess() != 1) { print $http->lastErrorText() . "\r\n"; exit; } $respStatusCode = $resp->get_StatusCode(); print "response status code =" . $respStatusCode . "\r\n"; print "response body:" . "\r\n"; print $resp->bodyStr() . "\r\n"; if ($respStatusCode != 200) { print "Failed in some unknown way." . "\r\n"; exit; } # 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. $json = chilkat::CkJsonObject->new(); $json->Load($resp->bodyStr()); $status = $json->IntOf("status"); print "status = " . $status . "\r\n"; if ($status != 1) { # Failed. Base64 decode the error # {"status":"0","error":"eyJlcnJvckNvZGVzIjoiMTA4In0="} # For an invalid password, the error is: {"errorCodes":"108"} $sbError = chilkat::CkStringBuilder->new(); $json->StringOfSb("error",$sbError); $sbError->Decode("base64","utf-8"); print "error: " . $sbError->getAsString() . "\r\n"; exit; } $json->put_EmitCompact(0); print "JSON response:" . "\r\n"; print $json->emit() . "\r\n"; $bdData = chilkat::CkBinData->new(); $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"} $jsonBill = chilkat::CkJsonObject->new(); $jsonBill->Load($bdData->getString("utf-8")); $ewayBillNo = $jsonBill->IntOf("ewayBillNo"); print "ewayBillNo = " . $ewayBillNo . "\r\n"; $ewayBillDate = $jsonBill->stringOf("ewayBillDate"); print "ewayBillDate = " . $ewayBillDate . "\r\n"; $validUpto = $jsonBill->stringOf("validUpto"); print "validUpto = " . $validUpto . "\r\n"; # Sample output: # ewayBillNo = 331001121234 # ewayBillDate = 24/05/2018 04:55:00 PM # validUpto = 31/05/2018 11:59:00 PM |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.