Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alphaolomi/laravel-azampay
Laravel Azampay
https://github.com/alphaolomi/laravel-azampay
azam-pay azampay azampesa hacktoberfest laravel laravel-package php
Last synced: about 2 months ago
JSON representation
Laravel Azampay
- Host: GitHub
- URL: https://github.com/alphaolomi/laravel-azampay
- Owner: alphaolomi
- License: mit
- Created: 2022-09-26T03:32:16.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-29T18:12:02.000Z (9 months ago)
- Last Synced: 2024-05-21T05:14:16.983Z (8 months ago)
- Topics: azam-pay, azampay, azampesa, hacktoberfest, laravel, laravel-package, php
- Language: PHP
- Homepage: https://alphaolomi.github.io/laravel-azampay/
- Size: 646 KB
- Stars: 25
- Watchers: 2
- Forks: 10
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
Laravel Axampay provides an expressive, fluent interface to Azampay's payments services. It handles almost all of the boilerplate payments & billing
so you don't have to.
## Installation### Prerequisites
- PHP 8.1+
- Laravel v10+
- ComposerYou can install the package via Composer:
```bash
composer require alphaolomi/laravel-azampay
```You can publish the config file with:
```bash
php artisan vendor:publish --tag="azampay-config"
```## Setup
Add the following to your .env file
```bash
AZAMPAY_APP_NAME="your_app_name"
AZAMPAY_CLIENT_ID="your_client_id"
AZAMPAY_CLIENT_SECRET="your_client_secret"
AZAMPAY_ENVIRONMENT="sandbox"
AZAMPAY_TOKEN="Your_Token"
```## Usage
## Checkout API
### MNO Checkout
Mobile checkout using `AzampayService` Class
> NOTE: Configs are loaded automatically.
```php
use Alphaolomi\Azampay\AzampayService;$azampay = new AzampayService();
$data = $azampay->mobileCheckout([
'amount' => 1000,
'currency' => 'TZS',
'accountNumber' => '0625933171',
'externalId' => '08012345678',
'provider' => 'Mpesa',
]);
```### Response
```
array:3 [▼
"success" => true
"transactionId" => "b85e971981844a6f8888b42579655b8f"
"message" => "Your request has been received and is being processed."
]
```MNO checkout using Facade Class
```php
use Alphaolomi\Azampay\Facades\Azampay;$data = Azampay::mobileCheckout([
'amount' => 1000,
'currency' => 'TZS',
'accountNumber' => '0625933171',
'externalId' => '08012345678',
'provider' => 'Mpesa',
]);
```### Response
```
array:3 [▼
"success" => true
"transactionId" => "b85e971981844a6f8888b42579655b8f"
"message" => "Your request has been received and is being processed."
]
```### Bank Checkout
Bank checkout using AzampayService Class
```php
use Alphaolomi\Azampay\AzampayService;$azampay = new AzampayService();
$data = $azampay->bankCheckout([
'amount' => 1000,
'currencyCode' => 'TZS',
'merchantAccountNumber' => '34567890987654',
'merchantMobileNumber' => '08012345678',
'merchantName' => '[email protected]',
'otp' => '1234',
'provider' => 'CRDB',
'referenceId' => '24345345',
]);
```### Response
```php
array:3 [▼
"success" => true
"transactionId" => "b85e971981844a6f8888b42579655b8f"
"message" => "Your request has been received and is being processed."
]
```Bank checkout using Facade Class
```php
use Alphaolomi\Azampay\Facades\Azampay;$data = Azampay::bankCheckout([
'amount' => 1000,
'currencyCode' => 'TZS',
'merchantAccountNumber' => '34567890987654',
'merchantMobileNumber' => '08012345678',
'merchantName' => '[email protected]',
'otp' => '1234',
'provider' => 'CRDB',
'referenceId' => '24345345',
]);# Response
[ 'transactionId' => 'string', 'message' => 'string' ]```
### Get payment partners
Get payment partners using AzampayService Class
```php
use Alphaolomi\Azampay\AzampayService;$azampay = new AzampayService();
$data = $azampay->getPaymentPartners();
# Response
[
[
'id' => "6ebafc56-6d4d-4265-a8d4-c0e1e7806c19",
'logoUrl' => 'https://azampay-sarafutest.s3.eu-central-1.amazonaws.com/azampesa.png',
'partnerName' => 'Azampesa',
'provider' => 5,
'vendorName' => 'string',
'paymentVendorId' => '1213c943-b30e-4c9e-ac2f-d34796f01d2d',
'paymentPartnerId' => '70cd6bba-7f81-4ac8-9276-d5c0a189f2d4',
"paymentAcknowledgmentRoute": "url",
'currency' => 'TZS',
"status" => "1",
"vendorType" => "seller"
],
// ...
]
```Get payment partners using Facade Class
```php
use Alphaolomi\Azampay\Facades\Azampay;$data = Azampay::getPaymentPartners();
# Response
[
[
'id' => "6ebafc56-6d4d-4265-a8d4-c0e1e7806c19",
'logoUrl' => 'https://azampay-sarafutest.s3.eu-central-1.amazonaws.com/azampesa.png',
'partnerName' => 'Azampesa',
'provider' => 5,
'vendorName' => 'string',
'paymentVendorId' => '1213c943-b30e-4c9e-ac2f-d34796f01d2d',
'paymentPartnerId' => '70cd6bba-7f81-4ac8-9276-d5c0a189f2d4',
"paymentAcknowledgmentRoute": "url",
'currency' => 'TZS',
"status" => "1",
"vendorType" => "seller"
],
// ...
]
```### Post Checkout
Post checkout using AzampayService Class
```php
use Alphaolomi\Azampay\AzampayService;$azampay = new AzampayService();
$data = $azampay->postCheckout([
'appName' => 'azampay',
'clientId' => 'e9b57fab-1850',
'vendorId' => 'e9b57fab-1850-44d4-8499-71fd15c845a0',
'language' => 'en',
'currency' => 'TZS',
'externalId' => 'e9b57fab-44d4-71fd15c845a6',
'requestOrigin' => 'dukaspace.com',
'redirectFailURL' => 'dukaspace.com/failure',
'redirectSuccessURL' => 'dukaspace.com/success',
'vendorName' => 'dukaspace',
'amount' => 50000,
'cart' => [
'items' => [
[
'name' => 'dukaspace',
],
],
],
]);# Response
[ 'transactionId' => 'string', 'message' => 'string' ]```
Post checkout using Facade Class
```php
use Alphaolomi\Azampay\Facades\Azampay;$data = Azampay::postCheckout([
'appName' => 'azampay',
'clientId' => 'e9b57fab-1850',
'vendorId' => 'e9b57fab-1850-44d4-8499-71fd15c845a0',
'language' => 'en',
'currency' => 'TZS',
'externalId' => 'e9b57fab-44d4-71fd15c845a6',
'requestOrigin' => 'dukaspace.com',
'redirectFailURL' => 'dukaspace.com/failure',
'redirectSuccessURL' => 'dukaspace.com/success',
'vendorName' => 'dukaspace',
'amount' => 50000,
'cart' => [
'items' => [
[
'name' => 'dukaspace',
],
],
],
]);# Response
'string'```
### Callback route and event
The packages has a route for handling callback from Azampay. The
route is `/api/v1/Checkout/Callback` and named `checkout_payment_callback`.Whenever a callback is received from Azampay, the package will
dispatch Event `AzampayCallback::class` . You can create a
listener and do further processing with the callback data which will
be passed when the event get dispatched.#### Registering the route
This package has a route for handling callback from Azampay. Its enabled by default.
On your `App\Providers\EventServiceProvider` register a listener
for `AzampayCallback::class` event.```bash
php artisan make:listener AzampayCallbackListener
```In your `App\Listeners\AzampayCallbackListener` class, add the update the `handle` method to handle the event.
```php
use Alphaolomi\Azampay\Events\AzampayCallback;
// ...public function handle(AzampayCallback $event)
{
// Handle the event
// Example save the callback data to database
// $event->data
// See https://developerdocs.azampay.co.tz/redoc#tag/Checkout-API/operation/Callback
// for callback data structure
// ...
}// ...
``````php
use Alphaolomi\Azampay\Events\AzampayCallback;
use App\Listeners\AzampayCallbackListener;/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
AzampayCallback::class => [
AzampayCallbackListener::class,
],
];
```Now, whenever a callback is received from Azampay, the package will call the `handle` method of the `AzampayCallbackListener` class. with the callback data.
## Disbursement API
### Create transfer
Create transfer using AzampayService Class
```php
use Alphaolomi\Azampay\AzampayService;$azampay = new AzampayService();
$data = $azampay->createTransfer([
'source' => [
'countryCode' => 'string',
'fullName' => 'string',
'bankName' => 'tigo',
'accountNumber' => 'string',
'currency' => 'string',
],
'destination' => [
'countryCode' => 'string',
'fullName' => 'string',
'bankName' => 'tigo',
'accountNumber' => 'string',
'currency' => 'string',
],
'transferDetails' => [
'type' => 'string',
'amount' => 0,
'date' => '2019-08-24T141522Z',
],
'externalReferenceId' => 'string',
'remarks' => 'string',
]);# Response
[
[
'data' => 'Transaction successful.',
'message' => 'Request successful.',
'success' => true,
'statusCode' => 200
]
]
```Create transfer using Facade Class
```php
use Alphaolomi\Azampay\Facades\Azampay;$data = Azampay::createTransfer([
'source' => [
'countryCode' => 'string',
'fullName' => 'string',
'bankName' => 'tigo',
'accountNumber' => 'string',
'currency' => 'string',
],
'destination' => [
'countryCode' => 'string',
'fullName' => 'string',
'bankName' => 'tigo',
'accountNumber' => 'string',
'currency' => 'string',
],
'transferDetails' => [
'type' => 'string',
'amount' => 0,
'date' => '2019-08-24T141522Z',
],
'externalReferenceId' => 'string',
'remarks' => 'string',
]);# Response
[
[
'data' => 'Transaction successful.',
'message' => 'Request successful.',
'success' => true,
'statusCode' => 200
]
]```
### Name lookup
Name lookup using AzampayService Class
```php
use Alphaolomi\Azampay\AzampayService;$azampay = new AzampayService();
$data = $azampay->nameLookup([
'bankName' => 'string',
'accountNumber' => 'string',
]);# Response
[
'name' => 'string',
'message' => 'string',
'success' => true,
'accountNumber' => 'string',
'bankName' => 'string'
]
```Name lookup using Facade Class
```php
use Alphaolomi\Azampay\Facades\Azampay;$data = Azampay::nameLookup([
'bankName' => 'string',
'accountNumber' => 'string',
]);# Response
[
'name' => 'string',
'message' => 'string',
'success' => true,
'accountNumber' => 'string',
'bankName' => 'string'
]```
### Get transaction status
Get transaction status using AzampayService Class
```php
use Alphaolomi\Azampay\AzampayService;$azampay = new AzampayService();
$data = $azampay->getTransactionStatus([
'bankName' => 'CRDB',
'pgReferenceId' => '10'
]);# Response
[
[
'data': 'Transaction successful.',
'message': 'Request successful.',
'success': true,
'statusCode': 200
]
]
```Get transaction status using Facade Class
```php
use Alphaolomi\Azampay\Facades\Azampay;$data = Azampay::getTransactionStatus([
'bankName' => 'CRDB',
'pgReferenceId' => '10'
]);# Response
[
[
'data': 'Transaction successful.',
'message': 'Request successful.',
'success': true,
'statusCode': 200
]
]```
### Azampay documentation
You can find more details about azampay on their documentation
in this link [Azampay Documentation](https://developerdocs.azampay.co.tz/redoc).## Testing
```bash
composer test
```## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
## Contributing
Please see [CONTRIBUTING](CONTRIBUTING.md) for details.
## Security Vulnerabilities
Please review [our security policy](../../security/policy) on how to report security vulnerabilities.
## Credits
- [Alpha Olomi](https://github.com/alphaolomi)
- [Omakei](https://github.com/omakei)
- [All Contributors](../../contributors)## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
## Support us
If you find this package useful, you can support us by staring this repository and sharing it with others.