Giter VIP home page Giter VIP logo

iran-payment's Introduction

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.

Latest Stable Version Total Downloads Latest Unstable Version License

Gateways

Logo Gateway Description Available Tested Last Update
Sadad (Melli) بانک ملی (سداد) 2020/09/10
Pay.ir پرداخت پی 2020/08/03
Zarinpal زرین پال 2020/08/03
Payping پی پینگ 2020/08/04
Novinopay نوینو پرداخت 2022/03/23
--- Qeroun قرون - خرید امن با ایجاد توافق‌نامه - - -
--- Saman (Sep) (سپ) بانک سامان - - -
--- Mellat (Behpardakht) (به پرداخت) بانک ملت - - -
--- Parsian (Pec) (پک) بانک پارسیان - - -
--- Pasargad (Pep) (پپ) بانک پاسارگاد - - -
--- Zibal زیبال - - -

Requirements

  • PHP >= 7.4
  • PHP ext-curl
  • PHP ext-json
  • PHP ext-soap
  • Laravel (or Lumen) >= 5.7

Installation

  1. 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"
    }
  2. 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);
  3. Publish the config-file and migration with:

    php artisan vendor:publish --provider="Dena\IranPayment\IranPaymentServiceProvider"
  4. 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.

iran-payment's People

Contributors

dena-a avatar yeknava avatar qmeyti avatar avankey avatar fmmajd avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.