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 Extension) Generate an E-way BillDemonstrates how to send an HTTP POST request to generate an e-way bill.
<?php // The version number (9_5_0) should match version of the Chilkat extension used, omitting the micro-version number. // For example, if using Chilkat v9.5.0.48, then include as shown here: include("chilkat_9_5_0.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 $jsonAuth = new CkJsonObject(); $success = $jsonAuth->LoadFile('qa_data/tokens/ewayAuth.json'); if ($success != true) { 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 $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.. $jsonRequestBody = new CkJsonObject(); $jsonRequestBody->UpdateString('action','GENEWAYBILL'); // Setup the encryptor using the decryptedSek from the jsonAuth $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())); $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: // resp is a CkHttpResponse $resp = $http->PostJson2('http://ewb.wepgst.com/api/EWayBill','application/json',$jsonRequestBody->emit()); if ($http->get_LastMethodSuccess() != true) { print $http->lastErrorText() . "\n"; exit; } $respStatusCode = $resp->get_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. $json = new CkJsonObject(); $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"} $sbError = new CkStringBuilder(); $json->StringOfSb('error',$sbError); $sbError->Decode('base64','utf-8'); print 'error: ' . $sbError->getAsString() . "\n"; exit; } $json->put_EmitCompact(false); print 'JSON response:' . "\n"; print $json->emit() . "\n"; $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"} $jsonBill = new CkJsonObject(); $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.