GithubHelp home page GithubHelp logo

alhelwany / laravel-ecash Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 82 KB

Simplify the integration of Ecash payments into your Laravel applications. This package offers a streamlined setup and intuitive API to process payments quickly and securely.

License: MIT License

PHP 100.00%

laravel-ecash's Introduction

Laravel Payment Gateway for Ecash (Syria)

Latest Version on Packagist Total Downloads GitHub Tests Action Status GitHub Code Style Action Status

Simplify the integration of Ecash payments into your Laravel applications. This package offers a streamlined setup and intuitive API to process payments quickly and securely.

Installation

You can install the package via composer:

composer require alhelwany/laravel-ecash

You can publish and run the migrations with:

php artisan vendor:publish --tag="laravel-ecash-migrations"
php artisan migrate

You can publish the config file with:

php artisan vendor:publish --tag="laravel-ecash-config"

This is the contents of the published config file:

return [
    'gatewayUrl' => env('ECASH_GATEWAY_URL', 'https://checkout.ecash-pay.co'),
    'terminalKey' => env('ECASH_TERMINAL_KEY', null),
    'merchantId' => env('ECASH_MERCHANT_ID', null),
    'merchantSecret' => env('ECASH_MERCHANT_SECRET', null),
];

Getting Started

  1. Setup your environment variables
  2. Publish and run the migrations
  3. To start the payment process, use the checkout method to create a payment model & generate the payment URL
  4. Once the payment is complete, and the gateway redirects the user to the redirect URL, the payment status changes from PENDING to PROCESSING
  5. Once the gateway calls the callback URL, the payment status Changes from PROCESSING to either FAILED or PAID
  6. On each payment status change, a PaymentStatusUpdated event is fired, you may configure a listener to update the status of your order

Enums

Enums are in the namespace "Alhelwany\LaravelEcash\Enums"

enum Lang: string
{
    case AR = 'AR';
    case EN = 'EN';
}
enum Currency: string
{
    case SYP = 'SYP'; // The only available currency by the gateway so far 
}
enum CheckoutType: string
{
    case QR = 'QR';
    case CARD = 'Card';
}
enum PaymentStatus: string
{
    case PENDING = 'pending';
    case PROCESSING = 'processing';
    case PAID = 'paid';
    case FAILED = 'failed';
}

Exceptions

InvalidAmountException

Thrown when the checkout function is called with negative or 0 amount.

InvalidConfigurationException

Thrown when trying to use the package before setting up the .env variables

Events

PaymentStatusUpdated

namespace Alhelwany\LaravelEcash\Events;

use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Alhelwany\LaravelEcash\Models\EcashPayment;

class PaymentStatusUpdated
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public function __construct(private EcashPayment $paymentModel)
    {
    }

    public function getPaymentModel(): EcashPayment
    {
        return $this->paymentModel;
    }
}

Important Note

The EcashPayment Model uses id of type UUID as a primary key

Example Usage

Checkout

use App\Http\Controllers\Controller;

use Alhelwany\LaravelEcash\Facades\LaravelEcashClient;
use Alhelwany\LaravelEcash\DataObjects\PaymentDataObject;
use Alhelwany\LaravelEcash\Models\EcashPayment;
use Alhelwany\LaravelEcash\Enums\CheckoutType;
use Alhelwany\LaravelEcash\Enums\Lang;
use Alhelwany\LaravelEcash\Enums\Currency;

class ExampleController extends Controller
{
    public function checkout($request)
    {
        $paymentDataObject = new PaymentDataObject(CheckoutType::CARD, 100.10);

        $paymentDataObject->setRedirectUrl(route('payment-successful')); //optional
        $paymentDataObject->setLang(Lang::EN); //optional
        $paymentDataObject->setCurrency(Currency::SYP); //optional

        $model = LaravelEcashClient::checkout($paymentDataObject);

        // You may attach the EcashPayment model to your order
        return redirect($model['checkout_url']);
    }
}

Testing

composer test

Credits

License

The MIT License (MIT). Please see License File for more information.

laravel-ecash's People

Contributors

alhelwany avatar dependabot[bot] avatar

Stargazers

Rania Khalifa avatar

Watchers

 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.