Hesabe Request Handler
The following PHP Laravel code snippets demonstrate how the payment request process can be implemented
⚙️ Step by step integration
Request Validation
First, validate the incoming payment request data to ensure all required fields are present and properly formatted.
Important Note
Payment data containing the required fields in encrypted form must be submitted to the 'Checkout' endpoint for initiating the payment request.
$validator = $this->validate($request, [
'merchantCode' => 'required',
'amount' => 'required|numeric|between:0.200,100000|regex:/^\d+(\.\d{1,3})?$/',
'paymentType' => 'required|in:0,1,2,5,7,8,9,10,11,12,13,14,16', // '0' For indirect method only
'responseUrl' => 'required|url',
'failureUrl' => 'required|url',
'version' => 'required',
'webhookUrl' => 'https://yourdomain.com/example' // [Optional Field] To get transaction response
]);Read more about Hesabe Webhook URL
You can follow the Hesabe Webhook Request guide to get started.
Configuration Setup
Loading Encryption Keys, Access Code & API URL's from config
$ivKey = HSB_IV_KEY;
$encryptionKey = HSB_ENCRYPTION_KEY;
$accessCode = HSB_ACCESS_CODE;
$checkoutApiUrl = HSB_CHECKOUT_API_URL;
$paymentUrl = HSB_PAYMENT_URL;JSON Encoding
After validation, convert the request data to JSON format containing all the request keys and values.
$requestDataJson = json_encode($request->input());Data Encryption
Encrypt the JSON data using AES algorithm with the HesabeCrypt library for secure transmission.
$encryptedData = HesabeCrypt::encrypt($requestDataJson, $encryptionKey, $ivKey);API Request to Checkout Endpoint
Send the encrypted data to Hesabe's checkout API with proper headers including the access code.
Sandbox Checkout API
Below Checkout API strictly for sandbox testing only. Never use these sandbox URL's in production environment
Production Checkout API
Use the following Checkout API strictly for production transactions. Ensure that you never use these production URLs in the sandbox or testing environment
$baseUrl = "https://sandbox.hesabe.com";
$checkoutApiUrl = $baseUrl . "/checkout";
$checkoutRequestData = new Request([ 'data' => $encryptedData ]);
$checkoutRequest = Request::create($checkoutApiUrl, 'POST', $checkoutRequestData->all());
$checkoutRequest->headers->set('accessCode', $accessCode);
$checkoutRequest->headers->set('Accept', 'application/json'); // Only for JSON responseResponse Handling
Process the API response and extract the content for further processing.
$checkoutResponse = Route::dispatch($checkoutRequest);
$checkoutResponseContent = $checkoutResponse->content();Response Decryption
Decrypt the response using the same encryption keys and parse the JSON data.
$decryptedResponse = HesabeCrypto::decrypt($checkoutResponseContent, $encryptionKey, $ivKey);
$responseDataJson = json_decode($decryptedResponse);Payment Page Redirection
Extract the payment token from the response and redirect to Hesabe's payment URL.
Sandbox Payment API
Below payment API strictly for sandbox testing only. Never use these sandbox URL's in production environment
Production Payment API
Use the following payment API strictly for production transactions. Ensure that you never use these production URLs in the sandbox or testing environment
$paymentUrl = {{baseUrl}}/payment
$responseToken = $responseDataJson->response->data;
return Redirect::to($paymentUrl . '?data='. $responseToken);Sample Transaction Response Structure
Here's an example of a successful payment response after decryption:
{
"status": true,
"code": 1,
"message": "Transaction Success",
"response": {
"data": {
"resultCode": "CAPTURED",
"amount": 10,
"paymentToken": "1569830677725743478",
"paymentId": "100201927384634224",
"paidOn": "2019-09-30 11:05:16",
"orderReferenceNumber": null,
"variable1": null,
"variable2": null,
"variable3": null,
"variable4": null,
"variable5": null,
"method": 1
}
}
}Transaction Response Parameters Reference
Here's an transaction response parameters details
| Field | Type | Description |
|---|---|---|
status | Boolean | Payment status (true for success; false for failure) |
resultCode | String | Success transactions have values "CAPTURED", "ACCEPT", or "SUCCESS" |
amount | Numeric | Transaction Amount |
paymentToken | Numeric | 14-digit Payment Token returned from Hesabe |
paymentId | Alphanumeric | Payment ID returned from Hesabe |
paidOn | Alphanumeric | Date and Time of Payment |
orderReferenceNumber | Alphanumeric | Payment ID returned from Hesabe |
variable1 | Alphanumeric | Custom user parameter which will be included in the response when it returns |
variable2 | Alphanumeric | Custom user parameter which will be included in the response when it returns |
variable3 | Alphanumeric | Custom user parameter which will be included in the response when it returns |
variable4 | Alphanumeric | Custom user parameter which will be included in the response when it returns |
variable5 | Alphanumeric | Custom user parameter which will be included in the response when it returns |
method | Numeric | Transaction Payment method ID |
For Any Technical Assistance
If you encounter any issues or need support during setup or integration, please contact our technical team for assistance.
Hesabe IT Support
Pre Requisites Setup
The following currencies are accepted by Hesabe Payment Gateway, providing comprehensive coverage across the Middle East and major international markets
Direct Payment Method
This comprehensive guide will help you integrate your application or platform with Hesabe's Payment Gateway API, supporting multiple integration methods and advanced features.