All Projects → omalizadeh → laravel-multi-payment

omalizadeh / laravel-multi-payment

Licence: MIT License
Laravel online gateway payment package with multi driver support

Programming Languages

PHP
23972 projects - #3 most used programming language
Blade
752 projects

Projects that are alternatives of or similar to laravel-multi-payment

Parbad
A free, open-source, integrated and extensible library which connects your web applications to online payment gateways. Gateways can be added or developed by you.
Stars: ✭ 194 (+781.82%)
Mutual labels:  payment, gateway, bank
Go Payment
Payment Connector for Midtrans and Xendit. Sample site that is using this payment proxy is https://imrenagi.com/donate
Stars: ✭ 136 (+518.18%)
Mutual labels:  payment, bank
Gringotts
A complete payment library for Elixir and Phoenix Framework
Stars: ✭ 396 (+1700%)
Mutual labels:  payment, gateway
Commerce billing
A payment processing library for Elixir
Stars: ✭ 170 (+672.73%)
Mutual labels:  payment, gateway
zarinpal-laravel
Zarinpal payment for Laravel Framework
Stars: ✭ 31 (+40.91%)
Mutual labels:  payment, zarinpal
Moyasar Php
Moyasar PHP client library
Stars: ✭ 5 (-77.27%)
Mutual labels:  payment, gateway
az-iranian-bank-gateways
درگاه اتصال به بانک های ایرانی ( درگاه پرداخت بانک ملی ایران،بانک سامان، بانک ملت، درگاه پرداخت زرین پال و ... ) با استفاده از پایتون
Stars: ✭ 308 (+1300%)
Mutual labels:  zarinpal, behpardakht
wc-moldovaagroindbank
WooCommerce maib Moldova Agroindbank Payment Gateway
Stars: ✭ 13 (-40.91%)
Mutual labels:  payment, bank
omise-magento
Omise Magento Plugin
Stars: ✭ 32 (+45.45%)
Mutual labels:  payment, gateway
Banklink
PHP payment library to easily integrate Baltic banklinks (supports old and new iPizza protocol), E-commerce gateaway (Estcard, Nets Estonia), Liisi Payment Link and Pocopay.
Stars: ✭ 34 (+54.55%)
Mutual labels:  payment, gateway
laravel-hyperpay
Laravel package for Hyperpay payment gateway in MENA.
Stars: ✭ 14 (-36.36%)
Mutual labels:  payment, gateway
cashier
Cashier is an Elixir library that aims to be an easy to use payment gateway, whilst offering the fault tolerance and scalability benefits of being built on top of Erlang/OTP
Stars: ✭ 43 (+95.45%)
Mutual labels:  payment, gateway
laravel-viva-payments
A Laravel package for integrating the Viva Payments gateway
Stars: ✭ 29 (+31.82%)
Mutual labels:  payment, gateway
iotgateway
iot gateway (modbusTCP,RTU,DLT645...to MQTT)
Stars: ✭ 100 (+354.55%)
Mutual labels:  gateway
smart-cloud
基于springboot && springcloud的脚手架,支持服务合并部署与拆分部署、接口加解密签名、日志数据 脱敏、接口数据mock、接口文档自动生成、请求幂等校验、接口日志&&sql日志切面打印、分表分库分布式事务、国际化语言等
Stars: ✭ 167 (+659.09%)
Mutual labels:  gateway
freeioe
FreeIOE is a framework for building IOE (Internet Of Everything) edge-computing gateway 开源的边缘计算网关框架. 讨论群: 291292378
Stars: ✭ 77 (+250%)
Mutual labels:  gateway
paymentgateway
Dokumentace ČSOB platební brány a jejího eAPI pro platby platebními kartami, Apple Pay, mallpay a platebními tlačítky ČSOB.
Stars: ✭ 104 (+372.73%)
Mutual labels:  payment
apisix-java-plugin-runner
APISIX Plugin Runner in Java
Stars: ✭ 57 (+159.09%)
Mutual labels:  gateway
awesome-payment
A curated list of payment services
Stars: ✭ 22 (+0%)
Mutual labels:  payment
IoT-Technical-Guide
🐝 IoT Technical Guide --- 从零搭建高性能物联网平台及物联网解决方案和Thingsboard源码分析 ✨ ✨ ✨ (IoT Platform, SaaS, MQTT, CoAP, HTTP, Modbus, OPC, WebSocket, 物模型,Protobuf, PostgreSQL, MongoDB, Spring Security, OAuth2, RuleEngine, Kafka, Docker)
Stars: ✭ 2,565 (+11559.09%)
Mutual labels:  gateway

Latest Stable Version Tests Total Downloads License

پکیج پرداخت آنلاین (اتصال به درگاه بانکی) در لاراول

این یک پکیج لاراول برای استفاده از درگاه های پرداخت آنلاین است که از درگاه های مختلف (بصورت درایور) با امکان تنظیم چند حساب برای یک نوع درگاه پشتیبانی می کند. اگه درگاه موردنظرتون پشتیبانی نمیشه، میتونید خودتون از کلاس ها و قراردادهای مربوطه استفاده کنید و بنویسید. بعدش اگه خواستید Pull Request بزنید تا به پکیج اصلی اضافه بشه. خوشحال میشم در مسیر تکمیل پکیج کمک کنید.

اگه از پکیج استفاده کردین فراموش نشه! 😎

English documents

  composer require omalizadeh/laravel-multi-payment
انتشار فایل تنظیمات اصلی با دستور زیر:
  php artisan vendor:publish --tag=multipayment-config
انتشار فایل تنظیمات درگاه مورد نظر با استفاده از تگ هر درگاه
  • zarinpal-config
  • mellat-config
  • saman-config
  • pasargad-config
  • novin-config
به عنوان مثال از دستور زیر می توان برای انتشار فایل تنظیمات درگاه زرین پال استفاده کرد:
  php artisan vendor:publish --tag=zarinpal-config
یا می توانید تمامی فایل های تنظیمات پکیج را با دستور زیر منتشر کنید:
  php artisan vendor:publish --provider=Omalizadeh\MultiPayment\Providers\MultiPaymentServiceProvider

تنظیمات

در تنظیمات اصلی (فایل multipayment.php)، می توانید در قسمت default_config درگاه پیش فرض را انتخاب کنید. مثلا مقدار zarinpal.second نشان دهنده استفاده از درگاه زرین پال با اطلاعات ورودی و تنظیمات second هست. قسمتی هم برای تنظیم واحد پولی درنظر گرفته شده که هنگام اتصال به درگاه تبدیل به ریال یا تومان بطور خودکار انجام شود.

     /**
     * set default gateway
     * 
     * valid pattern --> GATEWAY_NAME.GATEWAY_CONFIG_KEY 
     */
    'default_gateway' => env('DEFAULT_GATEWAY', 'zarinpal.second'),

    /**
     *  set to false if your in-app currency is IRR
     */
    'convert_to_rials' => true
در فایل تنظیمات مربوط به هر درگاه، مسیر کلاس درایور مربوطه، مشخصات درگاه و تنظیمات SOAP قابل تغییر هستند.
    /**
     *  driver class namespace
     */
    'driver' => Omalizadeh\MultiPayment\Drivers\Zarinpal\Zarinpal::class,

     /**
     *  gateway configurations
     */
    'first' => [
        'merchant_id'  => '',
        'callback_url' => 'https://yoursite.com/path/to',
        'mode'        => 'normal', // Supported values: normal, sandbox, zaringate
        'description' => 'payment using zarinpal',
    ],
    'second' => [
        'merchant_id'  => '',
        'callback_url' => 'https://yoursite.com/path/to',
        'mode'        => 'sandbox',
        'description' => 'payment using zarinpal',
    ]

نحوه استفاده

پرداخت با درگاه در این پکیج از دو بخش اصلی تشکیل می شود. مرحله اول درخواست پرداخت و ارجاع به درگاه (Purchase) و مرحله دوم تایید پرداخت (Verification) است.

پرداخت و ارجاع به درگاه

تمامی اطلاعات مربوط به پرداخت در صورتحساب (کلاس Invoice) ذخیره خواهند شد. برای شروع پرداخت، ابتدا یک شی از کلاس صورتحساب ساخته و سپس اطلاعات مربوط به پرداخت مانند مبلغ در آن ذخیره می شود. در نهایت با استفاده از کلاس درگاه پرداخت که به صورت Facade پیاده سازی شده است، (PaymentGateway) پرداخت صورتحساب انجام می شود.

    use Omalizadeh\MultiPayment\Facades\PaymentGateway;
    
    ////
    
    $invoice = new Invoice(10000);
    $invoice->setPhoneNumber("989123456789");
    
    return PaymentGateway::purchase($invoice, function (string $transactionId) {
        // Save transaction_id and do stuff...
    })->view();

با افزودن شماره همراه کاربر به صورتحساب، درگاه برای تجربه کاربری بهتر، شماره کارت های ثبت شده با آن را هنگام پرداخت به پرداخت کننده پیشنهاد می دهد. قبل از صدا زدن متد purchase برای خرید، می توان با استفاده از متد setGateway درگاه مورد استفاده را تغییر داد.

    $invoice = new Invoice(10000);

    return PaymentGateway::setGateway('mellat.app')
            ->purchase($invoice, function (string $transactionId) {
                // Save transaction_id and do stuff...
            })->view();

تایید پرداخت

بعد از بازگشت کاربر از درگاه پرداخت، صورتحسابی با شماره تراکنش و مبلغ موردنظر تشکیل داده و با استفاده از متد verify در PaymentGateway موفقیت آمیز بودن آن را بررسی می کنید. دقت کنید که اگر صورتحساب مربوط به درگاه پیش فرض نیست، قبل از صحت سنجی درگاه را با متد مربوطه تغییر دهید.

    try {
        // Get amount & transaction_id from database or gateway request
        $invoice = new Invoice($amount, $transactionId);
        $receipt = PaymentGateway::verify($invoice);
        // Save receipt data and return response
        //
    } catch (PaymentAlreadyVerifiedException $exception) {
        // Optional: Handle repeated verification request
    } catch (PaymentFailedException $exception) {
        // Handle exception for failed payments
        return $exception->getMessage();
    }

خروجی تایید پرداخت، یک شیء از کلاس Receipt است که می توان از متدهای مختلف آن برای بدست آوردن اطلاعات مختلف استفاده کرد.

  • getInvoiceId: شناسه صورتحساب
  • getTransactionId: شناسه تراکنش
  • getTraceNumber: شماره پیگیری
  • getReferenceId: شماره ارجاع بانکی
  • getCardNo: شماره کارت پرداخت کننده

سایر امکانات

آخرین پرداخت های موفق تایید نشده

با استفاده از متد unverifiedPayments در PaymentGateway می توانید لیست آخرین پرداخت هایی که موفقیت آمیز بودند اما هنوز از سمت پروژه شما verify یا تایید نشده را مشاهده کنید. فعلا فقط درگاه زرین پال از این قابلیت پشتیبانی می کند.

بازگشت وجه

با ارسال صورتحساب به متد refund می توانید پرداخت های تایید شده را به حساب پرداخت کننده برگشت بزنید. قبل از استفاده از این متد در درگاه زرین پال حتما مجوز دسترسی را در تنظیمات درگاه قرار دهید.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].