In-Direct Payment Method

Customers are redirected to Hesabe's secure payment gateway landing page where they can select their preferred payment method. This method offers quick implementation with automatic security handling.

💈

Hesabe In-Direct Payment Integration

Through the Hesabe Payment interface, merchants can enable payment options such as KNET, Visa/MasterCard, American Express, Apple Pay, and Google Pay, while retaining complete control over the entire payment flow.

✨ FeaturesIn-Direct Integration
Quick and easy implementation
Hesabe-hosted secure payment page
Automatic security handling
PCI DSS compliance built-in

✍🏻 Create payment request with parameters

Collect the order details and ensure the paymentType parameter is included (value: 0)

Good to know

PaymentType "0" indicates an Indirect Payment

🌐 Send payment request to Hesabe API

Initiate a transaction by sending the order and payment details to the Hesabe Checkout API.

Use our sandbox environment to test the integration flow, validate parameters, and simulate real payment scenarios before moving to production.

🔄 Redirect customer to Hesabe payment page

Redirect customers to Hesabe Payment Landing Page and customer will select the payment method to process the order

payment

✅ Handle success/failure scenarios

After transaction redirect customers to the appropriate success or failure pages.

✍🏻 Customer initiates checkout process

Customer completes shopping and clicks "Proceed to Checkout".

Your application collects order details including amount, currency, and customer information, ensuring the paymentType parameter is set to 0 for indirect integration.

Good to Know

PaymentType "0" indicates an Indirect Payment

🌐 System processes payment request

Your application encrypts the payment data using HesabeCrypt and sends a POST request to the Hesabe Checkout API.

The system validates parameters and uses the sandbox environment for testing before production deployment.

🔄 Customer redirected to Hesabe payment page

Upon successful API response, customer is automatically redirected to Hesabe's secure payment landing page where they can view the order details and select from available payment methods (KNET, Visa/MasterCard, American Express, Apple Pay, Google Pay).

✅ Payment completion and redirect

After customer completes or cancels the payment on Hesabe's page, they are automatically redirected back to your application.

The system handles both success and failure scenarios, updating order status accordingly and displaying appropriate confirmation or error messages.

📋 Request Parameters

🏷️ Field📋 Type📝 DescriptionRequired
merchantCode
StringAssigned by HesabeYes
amount
NumericAmount in currencyYes
paymentType
Numeric0 - Indicates Indirect PaymentYes
currency
StringISO currency codeYes
responseUrl
StringRedirect URL on successYes
failureUrl
StringRedirect URL on failureYes
version
String2.0Yes
orderReferenceNumber
StringYour reference / order IDYes

Additional Checkout API Parameters

Optional parameters that allow you to include extra data or customize the checkout flow in your API request

FieldTypeDescriptionRequired
name
StringCustomer NameOptional
mobile_number
Numeric (8)Customer Mobile Number ( Without country code )Optional
email
StringCustomer Email AddressOptional
webhookUrl
StringYour endpoint for receiving payment statusOptional
variable1
AlphanumericCustom user parameter which will be included in the response when it returnsOptional
variable2
AlphanumericCustom user parameter which will be included in the response when it returnsOptional
variable3
AlphanumericCustom user parameter which will be included in the response when it returnsOptional
variable4
AlphanumericCustom user parameter which will be included in the response when it returnsOptional
variable5
AlphanumericCustom user parameter which will be included in the response when it returnsOptional

Read more about Hesabe Webhook URL

You can follow the Hesabe Webhook Request guide to get started.

⚙️ Hesabe Request Handler

The following PHP Laravel code snippets demonstrate how the payment request process can be implemented.

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.

Checkout.php
$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

Checkout.php
$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.

Checkout.php
$requestDataJson = json_encode($request->input());

Data Encryption

Encrypt the JSON data using AES algorithm with the HesabeCrypt library for secure transmission.

Checkout.php
$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

https://sandbox.hesabe.com/checkout

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

https://api.hesabe.com/checkout
Checkout.php
$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 response

Response Handling

Process the API response and extract the content for further processing.

Checkout.php
$checkoutResponse = Route::dispatch($checkoutRequest);
$checkoutResponseContent = $checkoutResponse->content();

Response Decryption

Decrypt the response using the same encryption keys and parse the JSON data.

Checkout.php
$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

https://sandbox.hesabe.com/payment

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

https://api.hesabe.com/payment
Checkout.php
$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

FieldTypeDescription
status
BooleanPayment status (true for success; false for failure)
resultCode
StringSuccess transactions have values "CAPTURED", "ACCEPT", or "SUCCESS"
amount
NumericTransaction Amount
paymentToken
Numeric14-digit Payment Token returned from Hesabe
paymentId
AlphanumericPayment ID returned from Hesabe
paidOn
AlphanumericDate and Time of Payment
orderReferenceNumber
AlphanumericPayment ID returned from Hesabe
variable1
AlphanumericCustom user parameter which will be included in the response when it returns
variable2
AlphanumericCustom user parameter which will be included in the response when it returns
variable3
AlphanumericCustom user parameter which will be included in the response when it returns
variable4
AlphanumericCustom user parameter which will be included in the response when it returns
variable5
AlphanumericCustom user parameter which will be included in the response when it returns
method
NumericTransaction 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

Email address:itsupport@hesabe.com