xenon/sslcommerz

Laravel library for SSLCommerz payment gateway

v1.0.3 2023-03-07 19:43 UTC

This package is auto-updated.

Last update: 2024-04-07 22:04:53 UTC


README

This is a fork of uzzal/sslcommerz package for laravel. SSLCommerz Payment gateway library for Laravel framework. Official documentation is here.

install

composer require xenon/sslcommerz

publish

php artisan vendor:publish --provider=Xenon\SslCommerz\SslCommerzServiceProvider

This command will create a sslcommerz.php file inside the config directory. Configure your parameters in your .env file

#sslcommerz
STORE_ID=your_store_id
STORE_PASSWORD=your_store_password
SUCCESS_URL=http://your-domain.at/success.php
FAIL_URL=http://your-domain.at/fail.php
CANCEL_URL=http://your-domain.at/cancel.php
IPN_URL=http://your-domain.at/ipn.php
SANDBOX_MODE=true

Initiating a Payment session

This initSession will give you a gateway url. With this url you will be able to continue the payment through sslcommerz.

$customer = new Customer('Mahabubul Hasan', 'mahabub@example.com', '0171xxxxx22');
$resp = Client::initSession($customer, 29); //29 is the amount
echo $resp->getGatewayUrl();

or with configuration

$customer = new Customer('Mahabubul Hasan', 'mahabub@example.com', '0171xxxxx22');
$config[SessionRequest::EMI] = '0';
$resp = Client::initSession($customer, 29, $config);
echo $resp->getGatewayUrl();

Request for Validation

This verifyOrder method takes a val_id as parameter which you will get in the IPN request.

$resp = Client::verifyOrder('180828114058np43AJdzJJOsYzc');
echo 'status: '.$resp->getStatus();
echo 'transaction: '.$resp->getTransactionId();

IPN Listener (Step 4,5)

After filling the card information and submission in the sslcommerz window it will send a IPN notificaion to your specified IPN url. To grab the notification use the following code. For more details see here

if(ipn_hash_varify(config('sslcommerz.store_password'))){
    $ipn = new IpnNotification($_POST);
    $val_id = $ipn->getValId();
    $transaction_id = $ipn->getTransactionId();
    $amount = $ipn->getAmount();
    $resp = Client::verifyOrder($val_id);
}