descom/payment-gateway

Payment Gateway for Laravel App

3.5.0 2024-04-18 14:29 UTC

README

DPG is a package to Laravel that allows you to integrate the Payment Gateway into your application. This package use Omnipay to integrate the payment gateway.

tests analyze style-fix

Installation

composer require descom/payment-gateway

You can install any module to Omnipay, sample:

composer require descom/omnipay-offline-dummy

Usage

Create a Payment Method

<?php

use Descom\Payment\Payment;
use Omnipay\OfflineDummy\Gateway as OfflineDummyGateway;

Payment::for(new OfflineDummyGateway())
            ->name('Method Name')
            ->config([
                'return_url' => 'http:/www.localhost/checkout/success',
                'cancel_url' => 'http:/www.localhost/checkout/cancel',
                'request' => [
                    'notify_url' => 'http:/api.localhost/payment/paymentdemo/notify',
                    'return_url' => 'http:/api.localhost/payment/{parameterId}/redirect',
                ],
            ]))
            ->transformer() // Optional, you can use your own transformer with interface Descom\Payment\Transformers\Transformer
            ->create('paymentdemo');

Access a Payment Method

<?php
use Descom\Payment\Payment;

$payment = Payment::find('paymentdemo');

Create Transaction

<?php
use Descom\Payment\Payment;
use Descom\Payment\Transaction;

$payment = Payment::find('paymentdemo');

$transaction = Transaction::for($payment)->create([
    'amount' => '10.00',
    'merchant_id' => 'order_1',
]);

You optionally can add a relation of a external model:

<?php
use Descom\Payment\Payment;
use Descom\Payment\Transaction;

$payment = Payment::find('paymentdemo');

$transaction = Transaction::for($payment)
    ->model(Order::find(1))
    ->create([
        'amount' => '10.00',
        'merchant_id' => 'order_1',
    ]);
## Capture Notification

Create Listener to events:

- `Descom\Payment\Events\TransactionPaid`
- `Descom\Payment\Events\TransactionDenied`