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
(PHP ActiveX) Generate an E-way BillDemonstrates how to send an HTTP POST request to generate an e-way bill.
<?php // 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 // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.JsonObject') $jsonAuth = new COM("Chilkat.JsonObject"); $success = $jsonAuth->LoadFile('qa_data/tokens/ewayAuth.json'); if ($success != 1) { print $jsonAuth->LastErrorText . "\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 // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.JsonObject') $jsonData = new COM("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.. // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.JsonObject') $jsonRequestBody = new COM("Chilkat.JsonObject"); $jsonRequestBody->UpdateString('action','GENEWAYBILL'); // Setup the encryptor using the decryptedSek from the jsonAuth // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.Crypt2') $crypt = new COM("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())); // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.Http') $http = new COM("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: // resp is a Chilkat.HttpResponse $resp = $http->PostJson2('http://ewb.wepgst.com/api/EWayBill','application/json',$jsonRequestBody->emit()); if ($http->LastMethodSuccess != 1) { print $http->LastErrorText . "\n"; exit; } $respStatusCode = $resp->StatusCode; print 'response status code =' . $respStatusCode . "\n"; print 'response body:' . "\n"; print $resp->BodyStr . "\n"; if ($respStatusCode != 200) { print 'Failed in some unknown way.' . "\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. // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.JsonObject') $json = new COM("Chilkat.JsonObject"); $json->Load($resp->BodyStr); $status = $json->IntOf('status'); print 'status = ' . $status . "\n"; if ($status != 1) { // Failed. Base64 decode the error // {"status":"0","error":"eyJlcnJvckNvZGVzIjoiMTA4In0="} // For an invalid password, the error is: {"errorCodes":"108"} // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.StringBuilder') $sbError = new COM("Chilkat.StringBuilder"); $json->StringOfSb('error',$sbError); $sbError->Decode('base64','utf-8'); print 'error: ' . $sbError->getAsString() . "\n"; exit; } $json->EmitCompact = 0; print 'JSON response:' . "\n"; print $json->emit() . "\n"; // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.BinData') $bdData = new COM("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"} // For versions of Chilkat < 10.0.0, use new COM('Chilkat_9_5_0.Chilkat.JsonObject') $jsonBill = new COM("Chilkat.JsonObject"); $jsonBill->Load($bdData->getString('utf-8')); $ewayBillNo = $jsonBill->IntOf('ewayBillNo'); print 'ewayBillNo = ' . $ewayBillNo . "\n"; $ewayBillDate = $jsonBill->stringOf('ewayBillDate'); print 'ewayBillDate = ' . $ewayBillDate . "\n"; $validUpto = $jsonBill->stringOf('validUpto'); print 'validUpto = ' . $validUpto . "\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.