https://github.com/stephenjude/laravel-payment-gateways
A simple Laravel API implementation for all payment providers.
https://github.com/stephenjude/laravel-payment-gateways
Last synced: 3 months ago
JSON representation
A simple Laravel API implementation for all payment providers.
- Host: GitHub
- URL: https://github.com/stephenjude/laravel-payment-gateways
- Owner: stephenjude
- License: mit
- Created: 2022-05-21T09:44:19.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-03-25T18:42:16.000Z (over 1 year ago)
- Last Synced: 2024-04-13T21:53:20.812Z (about 1 year ago)
- Language: PHP
- Homepage:
- Size: 203 KB
- Stars: 93
- Watchers: 5
- Forks: 16
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Laravel Payment Gateways
[](https://packagist.org/packages/stephenjude/laravel-payment-gateways)
[](https://github.com/stephenjude/laravel-payment-gateways/actions?query=workflow%3Arun-tests+branch%3Amain)
[](https://github.com/stephenjude/laravel-payment-gateways/actions?query=workflow%3A"Check+%26+fix+styling"+branch%3Amain)
[](https://packagist.org/packages/stephenjude/laravel-payment-gateways)A simple Laravel implementation for all payment providers. This package supports
Paystack, Monnify, Pay4Me Pay, Seerbit Flutterwave, Klasha, and Stripe.## Use Case
Have you had to implement limited SDKs for accepting payments on your mobile app?
That's the problem this package solved.With this package, you can generate a payment link and
return it to your mobile app API call and the payment can be completed on the in-app browser.When the customer completes their payment, this package verifies the payment and executes the code defined inside your
custom closure.The closure should look like this:
```php
use Stephenjude\PaymentGateway\DataObjects\TransactionData;function (TransactionData $payment){
$order->update([
'status' => $payment->status,
'amount' => $payment->amount,
'currency' => $payment->currency
]);
$customer->notify(new OrderPaymentNotification($order));
}
```If you are using this package on the web this closure is the place where you can return a redirect after updating the customer order or sending a notification.
## Installation
You can install the package via Composer:
```bash
composer require stephenjude/laravel-payment-gateways
```You can publish the config file with:
```bash
php artisan vendor:publish --tag="payment-gateways-config"
```Optionally, you can publish the views using
```bash
php artisan vendor:publish --tag="payment-gateways-views"
```## Usage
This package currently supports `paystack`, `monnify`, `pay4me`, `seerbit`, `flutterwave`, `klasha` and `stripe`.### How to initialize a payment session
```php
use Stephenjude\PaymentGateway\PaymentGateway;
use Stephenjude\PaymentGateway\DataObjects\TransactionData;$provider = PaymentGateway::make('paystack')
$paymentSession = $provider->initializeCheckout([
'currency' => 'NGN', // required
'amount' => 100, // required
'email' => '[email protected]', // required
'meta' => [ 'name' => 'Stephen Jude', 'phone' => '081xxxxxxxxx'],
'closure' => function (TransactionData $payment){
/*
* Payment verification happens immediately after the customer makes payment.
* The payment data obtained from the verification will be injected into this closure.
*/
logger('payment details', [
'currency' => $payment->currency,
'amount' => $payment->amount,
'status' => $payment->status,
'reference' => $payment->reference,
'provider' => $payment->provider,
'date' => $payment->date,
]);
},
]);$paymentSession->provider;
$paymentSession->checkoutUrl;
$paymentSession->expires;
```
### Accessing payment transaction data
```php$provider = PaymentGateway::make('paystack');
$transactions = $provider->listTransactions(); // Returns array
$transaction = $provider->findTransaction(REFERENCE); // Returns Stephenjude\PaymentGateway\DataObjects\TransactionData
$transaction->provider;
$transaction->email;
$transaction->amount;
$transaction->currency;
$transaction->reference;
$transaction->status;
$transaction->date;
```### Pawapay Setup
Required Env Variables
```
PAWAPAY_SECRET=
```
Checkout```php
use \Stephenjude\PaymentGateway\Enums\Provider;
use \Stephenjude\PaymentGateway\PaymentGateway;$pawapay = PaymentGateway::make(Provider::PAWAPAY())->initializeCheckout([
"amount" => 15,
"country" => "ZMB",
'meta' => [
"description" => "Note of 4 to 22 chars",
"reason" => "Ticket to festival"
]
]);
```### Pay4Me Setup
```
PAY4ME_PUBLIC=
PAY4ME_SECRET=
```### Monnify Setup
```
MONNIFY_PUBLIC=
MONNIFY_SECRET=
MONNIFY_CONTRACT_CODE=
```### Pay4Me Setup
```
SEERBIT_PUBLIC=
SEERBIT_SECRET=
```### Paystack Setup
```
PAYSTACK_PUBLIC=
PAYSTACK_SECRET=
```
### Flutterwave Setup
```
FLUTTERWAVE_PUBLIC=
FLUTTERWAVE_SECRET=
```### Klasha Setup
```
KLASHA_PUBLIC=
KLASHA_SECRET=
```### Stripe Setup
```
STRIPE_PUBLIC=
STRIPE_SECRET=
```
## Testing```bash
composer test
```## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
## Contributing
Please see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details.
## Security Vulnerabilities
Please review [our security policy](../../security/policy) on how to report security vulnerabilities.
## Credits
- [stephenjude](https://github.com/stephenjude)
- [All Contributors](../../contributors)## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.