nimah79 / iran-payment
a Laravel package to handle Internet Payment Gateways for Iran Banking System
Requires
- php: ^7.4|^8.0
- ext-curl: *
- ext-json: *
- ext-soap: *
- illuminate/database: ^5.7|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/http: ^5.7|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/support: ^5.7|^6.0|^7.0|^8.0|^9.0|^10.0
- nesbot/carbon: *
Requires (Dev)
- doctrine/dbal: ^3.0
- fakerphp/faker: ^1.21
- orchestra/testbench: ^8.3
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2024-11-11 00:49:44 UTC
README
IranPayment for Laravel
a Laravel package to handle Internet Payment Gateways (IPGs) for Iran Banking System
Accepting Sadad (Melli), Pay.ir, Zarinpal and more iranian payment gateways. Just use the IranPayment to receive payments directly on your website.
Gateways
Requirements
Installation
-
Add the package to your composer file via the
composer require
command:$ composer require dena-a/iran-payment:^2.0
Or add it to
composer.json
manually:"require": { "dena-a/iran-payment": "^2.0" }
-
IranPayment's service providers will be automatically registered using Laravel's auto-discovery feature.
Note: For Lumen you have to add the IranPayment service provider manually to:
bootstrap/app.php
:$app->register( Dena\IranPayment\IranPaymentServiceProvider::class);
-
Publish the config-file and migration with:
php artisan vendor:publish --provider="Dena\IranPayment\IranPaymentServiceProvider"
-
After the migration has been published you can create the transactions-tables by running the migrations:
php artisan migrate
Usage
New Payment:
use Dena\IranPayment\IranPayment; // Default gateway $payment = IranPayment::create(); // Select one of available gateways $payment = IranPayment::create('sadad'); // Test gateway (Would not work on production environment) $payment = IranPayment::create('test'); // Or use your own gateway $payment = IranPayment::create(NewGateway::class); $payment->setUserId($user->id) ->setAmount($data['amount']) ->setCallbackUrl(route('bank.callback')) ->ready(); return $payment->redirect();
Verify Payment:
use Dena\IranPayment\IranPayment; use Dena\IranPayment\Exceptions\IranPaymentException; try { $payment = IranPayment::detect()->confirm(); $trackingCode = $payment->getTrackingCode(); $statusText = $payment->getTransactionStatusText(); } catch (Dena\IranPayment\Exceptions\IranPaymentException $ex) { throw $ex; }
Create your own payment gateway class
use Dena\IranPayment\Gateways\AbstractGateway; use Dena\IranPayment\Gateways\GatewayInterface; class NewGateway extends AbstractGateway implements GatewayInterface { public function getName(): string { return 'new-gateway'; } public function initialize(array $parameters = []): self { parent::initialize($parameters); return $this; } public function purchase(): void { // Send Purchase Request $reference_number = 'xxxx'; $this->transactionUpdate([ 'reference_number' => $reference_number, ]); } public function purchaseUri(): string { return 'http://new-gateway.com/token/xxxx'; } public function verify(): void { $this->transactionVerifyPending(); // Send Payment Verify Request $tracking_code = 'yyyy'; $this->transactionSucceed([ 'tracking_code' => $tracking_code ]); } }
Contribute
Contributions are always welcome!
Support
If you believe you have found a bug, please report it using the GitHub issue tracker, or better yet, fork the library and submit a pull request.
License
The MIT License (MIT). Please see License File for more information.