{"id":19870313,"url":"https://github.com/alphaolomi/laravel-azampay","last_synced_at":"2025-05-02T08:31:44.137Z","repository":{"id":61500083,"uuid":"541393793","full_name":"alphaolomi/laravel-azampay","owner":"alphaolomi","description":"Laravel Azampay","archived":false,"fork":false,"pushed_at":"2024-04-29T18:12:02.000Z","size":662,"stargazers_count":25,"open_issues_count":3,"forks_count":10,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-21T05:14:16.983Z","etag":null,"topics":["azam-pay","azampay","azampesa","hacktoberfest","laravel","laravel-package","php"],"latest_commit_sha":null,"homepage":"https://alphaolomi.github.io/laravel-azampay/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alphaolomi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-26T03:32:16.000Z","updated_at":"2024-06-10T17:51:55.660Z","dependencies_parsed_at":"2023-02-01T01:46:07.654Z","dependency_job_id":"bd77f5eb-f752-4529-98ce-d85f942c246c","html_url":"https://github.com/alphaolomi/laravel-azampay","commit_stats":{"total_commits":26,"total_committers":4,"mean_commits":6.5,"dds":0.6923076923076923,"last_synced_commit":"bb3e529f965334bba0865fe5f388acf01bd9e545"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphaolomi%2Flaravel-azampay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphaolomi%2Flaravel-azampay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphaolomi%2Flaravel-azampay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphaolomi%2Flaravel-azampay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alphaolomi","download_url":"https://codeload.github.com/alphaolomi/laravel-azampay/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252008845,"owners_count":21679648,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azam-pay","azampay","azampesa","hacktoberfest","laravel","laravel-package","php"],"created_at":"2024-11-12T16:08:34.861Z","updated_at":"2025-05-02T08:31:43.828Z","avatar_url":"https://github.com/alphaolomi.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"/art/azampay-logo.png\" width=\"300\" title=\"Azampay Logo\" alt=\"Azampay Logo\"\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\u003ch1\u003eLaravel Azampay\u003c/h1\u003e\n\n\u003ca href=\"https://packagist.org/packages/alphaolomi/laravel-azampay\"\u003e\n    \u003cimg src=\"https://img.shields.io/packagist/v/alphaolomi/laravel-azampay.svg?style=flat-square\" alt=\"Latest Version on Packagist\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://github.com/alphaolomi/laravel-azampay/actions/workflows/tests.yml\"\u003e\n    \u003cimg src=\"https://github.com/alphaolomi/laravel-azampay/actions/workflows/tests.yml/badge.svg\" alt=\"GitHub Tests Action Status\"\u003e\n\u003c/a\u003e\n\n\u003ca href='https://github.com/alphaolomi/laravel-azampay/actions?query=workflow%3A\"Fix+PHP+code+style+issues\"+branch%3Amain'\u003e\n    \u003cimg src=\"https://github.com/alphaolomi/laravel-azampay/actions/workflows/fix-php-code-style-issues.yml/badge.svg\" alt=\"GitHub Code Style Action Status\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://packagist.org/packages/alphaolomi/laravel-azampay\"\u003e\n    \u003cimg src=\"https://img.shields.io/packagist/dt/alphaolomi/laravel-azampay.svg?style=flat-square\" alt=\"Total Downloads\"\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n\n\nLaravel Axampay provides an expressive, fluent interface to Azampay's payments services. It handles almost all of the boilerplate payments \u0026 billing \nso you don't have to.\n \n## Installation\n\n### Prerequisites\n\n- PHP 8.1+\n- Laravel v10+\n- Composer\n\nYou can install the package via Composer:\n\n```bash\ncomposer require alphaolomi/laravel-azampay\n```\n\nYou can publish the config file with:\n\n```bash\nphp artisan vendor:publish --tag=\"azampay-config\"\n```\n\n## Setup\n\nAdd the following to your .env file\n\n```bash\nAZAMPAY_APP_NAME=\"your_app_name\"\nAZAMPAY_CLIENT_ID=\"your_client_id\"\nAZAMPAY_CLIENT_SECRET=\"your_client_secret\"\nAZAMPAY_ENVIRONMENT=\"sandbox\"\nAZAMPAY_TOKEN=\"Your_Token\"\n```\n\n## Usage\n\n## Checkout API\n\n### MNO Checkout\n\nMobile checkout using `AzampayService` Class\n\n\u003e NOTE: Configs are loaded automatically.\n\n```php\nuse Alphaolomi\\Azampay\\AzampayService;\n\n$azampay = new AzampayService();\n\n$data = $azampay-\u003emobileCheckout([\n    'amount' =\u003e 1000,\n    'currency' =\u003e 'TZS',\n    'accountNumber' =\u003e '0625933171',\n    'externalId' =\u003e '08012345678',\n    'provider' =\u003e 'Mpesa',\n]);\n```\n\n### Response\n\n```\narray:3 [▼\n  \"success\" =\u003e true\n  \"transactionId\" =\u003e \"b85e971981844a6f8888b42579655b8f\"\n  \"message\" =\u003e \"Your request has been received and is being processed.\"\n]\n```\n\nMNO checkout using Facade Class\n\n```php\nuse Alphaolomi\\Azampay\\Facades\\Azampay;\n\n$data = Azampay::mobileCheckout([\n    'amount' =\u003e 1000,\n    'currency' =\u003e 'TZS',\n    'accountNumber' =\u003e '0625933171',\n    'externalId' =\u003e '08012345678',\n    'provider' =\u003e 'Mpesa',\n]);\n```\n\n### Response\n\n```\narray:3 [▼\n  \"success\" =\u003e true\n  \"transactionId\" =\u003e \"b85e971981844a6f8888b42579655b8f\"\n  \"message\" =\u003e \"Your request has been received and is being processed.\"\n]\n```\n\n### Bank Checkout\n\nBank checkout using AzampayService Class\n\n```php\nuse Alphaolomi\\Azampay\\AzampayService;\n\n$azampay = new AzampayService();\n\n$data = $azampay-\u003ebankCheckout([\n        'amount' =\u003e 1000,\n        'currencyCode' =\u003e 'TZS',\n        'merchantAccountNumber' =\u003e '34567890987654',\n        'merchantMobileNumber' =\u003e '08012345678',\n        'merchantName' =\u003e 'alphaolomi@gmail.com',\n        'otp' =\u003e '1234',\n        'provider' =\u003e 'CRDB',\n        'referenceId' =\u003e '24345345',\n    ]);\n```\n\n### Response\n\n```php\narray:3 [▼\n  \"success\" =\u003e true\n  \"transactionId\" =\u003e \"b85e971981844a6f8888b42579655b8f\"\n  \"message\" =\u003e \"Your request has been received and is being processed.\"\n]\n```\n\nBank checkout using Facade Class\n\n```php\nuse Alphaolomi\\Azampay\\Facades\\Azampay;\n\n$data = Azampay::bankCheckout([\n        'amount' =\u003e 1000,\n        'currencyCode' =\u003e 'TZS',\n        'merchantAccountNumber' =\u003e '34567890987654',\n        'merchantMobileNumber' =\u003e '08012345678',\n        'merchantName' =\u003e 'alphaolomi@gmail.com',\n        'otp' =\u003e '1234',\n        'provider' =\u003e 'CRDB',\n        'referenceId' =\u003e '24345345',\n    ]);\n\n# Response\n[ 'transactionId' =\u003e 'string', 'message' =\u003e 'string' ]\n\n```\n\n### Get payment partners\n\nGet payment partners using AzampayService Class\n\n```php\nuse Alphaolomi\\Azampay\\AzampayService;\n\n$azampay = new AzampayService();\n\n$data = $azampay-\u003egetPaymentPartners();\n\n# Response\n[\n    [\n        'id' =\u003e \"6ebafc56-6d4d-4265-a8d4-c0e1e7806c19\",\n        'logoUrl' =\u003e 'https://azampay-sarafutest.s3.eu-central-1.amazonaws.com/azampesa.png',\n        'partnerName' =\u003e 'Azampesa',\n        'provider' =\u003e 5,\n        'vendorName' =\u003e 'string',\n        'paymentVendorId' =\u003e '1213c943-b30e-4c9e-ac2f-d34796f01d2d',\n        'paymentPartnerId' =\u003e '70cd6bba-7f81-4ac8-9276-d5c0a189f2d4',\n        \"paymentAcknowledgmentRoute\": \"url\",\n        'currency' =\u003e 'TZS',\n        \"status\" =\u003e  \"1\",\n        \"vendorType\" =\u003e  \"seller\"\n    ],\n    // ...\n]\n```\n\nGet payment partners using Facade Class\n\n```php\nuse Alphaolomi\\Azampay\\Facades\\Azampay;\n\n$data = Azampay::getPaymentPartners();\n\n# Response\n[\n    [\n        'id' =\u003e \"6ebafc56-6d4d-4265-a8d4-c0e1e7806c19\",\n        'logoUrl' =\u003e 'https://azampay-sarafutest.s3.eu-central-1.amazonaws.com/azampesa.png',\n        'partnerName' =\u003e 'Azampesa',\n        'provider' =\u003e 5,\n        'vendorName' =\u003e 'string',\n        'paymentVendorId' =\u003e '1213c943-b30e-4c9e-ac2f-d34796f01d2d',\n        'paymentPartnerId' =\u003e '70cd6bba-7f81-4ac8-9276-d5c0a189f2d4',\n        \"paymentAcknowledgmentRoute\": \"url\",\n        'currency' =\u003e 'TZS',\n        \"status\" =\u003e  \"1\",\n        \"vendorType\" =\u003e  \"seller\"\n    ],\n    // ...\n]\n```\n\n### Post Checkout\n\nPost checkout using AzampayService Class\n\n```php\nuse Alphaolomi\\Azampay\\AzampayService;\n\n$azampay = new AzampayService();\n\n$data = $azampay-\u003epostCheckout([\n        'appName' =\u003e 'azampay',\n        'clientId' =\u003e 'e9b57fab-1850',\n        'vendorId' =\u003e 'e9b57fab-1850-44d4-8499-71fd15c845a0',\n        'language' =\u003e 'en',\n        'currency' =\u003e 'TZS',\n        'externalId' =\u003e 'e9b57fab-44d4-71fd15c845a6',\n        'requestOrigin' =\u003e 'dukaspace.com',\n        'redirectFailURL' =\u003e 'dukaspace.com/failure',\n        'redirectSuccessURL' =\u003e 'dukaspace.com/success',\n        'vendorName' =\u003e 'dukaspace',\n        'amount' =\u003e 50000,\n        'cart' =\u003e [\n            'items' =\u003e [\n                [\n                    'name' =\u003e 'dukaspace',\n                ],\n            ],\n        ],\n    ]);\n\n# Response\n[ 'transactionId' =\u003e 'string', 'message' =\u003e 'string' ]\n\n\n```\n\nPost checkout using Facade Class\n\n```php\nuse Alphaolomi\\Azampay\\Facades\\Azampay;\n\n$data = Azampay::postCheckout([\n        'appName' =\u003e 'azampay',\n        'clientId' =\u003e 'e9b57fab-1850',\n        'vendorId' =\u003e 'e9b57fab-1850-44d4-8499-71fd15c845a0',\n        'language' =\u003e 'en',\n        'currency' =\u003e 'TZS',\n        'externalId' =\u003e 'e9b57fab-44d4-71fd15c845a6',\n        'requestOrigin' =\u003e 'dukaspace.com',\n        'redirectFailURL' =\u003e 'dukaspace.com/failure',\n        'redirectSuccessURL' =\u003e 'dukaspace.com/success',\n        'vendorName' =\u003e 'dukaspace',\n        'amount' =\u003e 50000,\n        'cart' =\u003e [\n            'items' =\u003e [\n                [\n                    'name' =\u003e 'dukaspace',\n                ],\n            ],\n        ],\n    ]);\n\n# Response\n'string'\n\n```\n\n### Callback route and event\n\nThe packages has a route for handling callback from Azampay. The\nroute is `/api/v1/Checkout/Callback` and named `checkout_payment_callback`.\n\nWhenever a callback is received from Azampay, the package will\ndispatch Event `AzampayCallback::class` . You can create a\nlistener and do further processing with the callback data which will\nbe passed when the event get dispatched.\n\n#### Registering the route\n\nThis package has a route for handling callback from Azampay. Its enabled by default.\n\nOn your `App\\Providers\\EventServiceProvider` register a listener\nfor `AzampayCallback::class` event.\n\n\n```bash\nphp artisan make:listener AzampayCallbackListener\n```\n\n\nIn your `App\\Listeners\\AzampayCallbackListener` class, add the update the `handle` method to handle the event.\n\n```php\nuse Alphaolomi\\Azampay\\Events\\AzampayCallback;\n// ...\n\npublic function handle(AzampayCallback $event)\n{\n    // Handle the event\n    // Example save the callback data to database\n    \n    // $event-\u003edata \n    // See https://developerdocs.azampay.co.tz/redoc#tag/Checkout-API/operation/Callback\n    // for callback data structure\n    // ...\n}\n\n// ...\n```\n\n\n```php\nuse Alphaolomi\\Azampay\\Events\\AzampayCallback;\nuse App\\Listeners\\AzampayCallbackListener;\n\n/**\n * The event listener mappings for the application.\n *\n * @var array\n */\nprotected $listen = [\n    AzampayCallback::class =\u003e [\n        AzampayCallbackListener::class,\n    ],\n];\n```\n\nNow, whenever a callback is received from Azampay, the package will call the `handle` method of the `AzampayCallbackListener` class. with the callback data.\n\n## Disbursement API\n\n### Create transfer\n\nCreate transfer using AzampayService Class\n\n```php\nuse Alphaolomi\\Azampay\\AzampayService;\n\n$azampay = new AzampayService();\n\n$data = $azampay-\u003ecreateTransfer([\n        'source' =\u003e [\n            'countryCode' =\u003e 'string',\n            'fullName' =\u003e 'string',\n            'bankName' =\u003e 'tigo',\n            'accountNumber' =\u003e 'string',\n            'currency' =\u003e 'string',\n        ],\n        'destination' =\u003e [\n            'countryCode' =\u003e 'string',\n            'fullName' =\u003e 'string',\n            'bankName' =\u003e 'tigo',\n            'accountNumber' =\u003e 'string',\n            'currency' =\u003e 'string',\n        ],\n        'transferDetails' =\u003e [\n            'type' =\u003e 'string',\n            'amount' =\u003e 0,\n            'date' =\u003e '2019-08-24T141522Z',\n        ],\n        'externalReferenceId' =\u003e 'string',\n        'remarks' =\u003e 'string',\n    ]);\n\n# Response\n[\n    [\n        'data' =\u003e 'Transaction successful.',\n        'message' =\u003e 'Request successful.',\n        'success' =\u003e true,\n        'statusCode' =\u003e 200\n    ]\n]\n```\n\nCreate transfer using Facade Class\n\n```php\nuse Alphaolomi\\Azampay\\Facades\\Azampay;\n\n$data = Azampay::createTransfer([\n        'source' =\u003e [\n            'countryCode' =\u003e 'string',\n            'fullName' =\u003e 'string',\n            'bankName' =\u003e 'tigo',\n            'accountNumber' =\u003e 'string',\n            'currency' =\u003e 'string',\n        ],\n        'destination' =\u003e [\n            'countryCode' =\u003e 'string',\n            'fullName' =\u003e 'string',\n            'bankName' =\u003e 'tigo',\n            'accountNumber' =\u003e 'string',\n            'currency' =\u003e 'string',\n        ],\n        'transferDetails' =\u003e [\n            'type' =\u003e 'string',\n            'amount' =\u003e 0,\n            'date' =\u003e '2019-08-24T141522Z',\n        ],\n        'externalReferenceId' =\u003e 'string',\n        'remarks' =\u003e 'string',\n    ]);\n\n# Response\n[\n    [\n        'data' =\u003e 'Transaction successful.',\n        'message' =\u003e 'Request successful.',\n        'success' =\u003e true,\n        'statusCode' =\u003e 200\n    ]\n]\n\n```\n\n### Name lookup\n\nName lookup using AzampayService Class\n\n```php\nuse Alphaolomi\\Azampay\\AzampayService;\n\n$azampay = new AzampayService();\n\n$data = $azampay-\u003enameLookup([\n    'bankName' =\u003e 'string',\n    'accountNumber' =\u003e 'string',\n]);\n\n# Response\n[\n    'name' =\u003e 'string',\n    'message' =\u003e 'string',\n    'success' =\u003e true,\n    'accountNumber' =\u003e 'string',\n    'bankName' =\u003e 'string'\n]\n```\n\nName lookup using Facade Class\n\n```php\nuse Alphaolomi\\Azampay\\Facades\\Azampay;\n\n$data = Azampay::nameLookup([\n        'bankName' =\u003e 'string',\n        'accountNumber' =\u003e 'string',\n    ]);\n\n# Response\n[\n    'name' =\u003e 'string',\n    'message' =\u003e 'string',\n    'success' =\u003e true,\n    'accountNumber' =\u003e 'string',\n    'bankName' =\u003e 'string'\n]\n\n```\n\n### Get transaction status\n\nGet transaction status using AzampayService Class\n\n```php\nuse Alphaolomi\\Azampay\\AzampayService;\n\n$azampay = new AzampayService();\n\n$data = $azampay-\u003egetTransactionStatus([\n    'bankName' =\u003e 'CRDB',\n    'pgReferenceId' =\u003e '10'\n]);\n\n# Response\n[\n    [\n        'data': 'Transaction successful.',\n        'message': 'Request successful.',\n        'success': true,\n        'statusCode': 200\n    ]\n]\n```\n\nGet transaction status using Facade Class\n\n```php\nuse Alphaolomi\\Azampay\\Facades\\Azampay;\n\n$data = Azampay::getTransactionStatus([\n    'bankName' =\u003e 'CRDB',\n    'pgReferenceId' =\u003e '10'\n]);\n\n# Response\n[\n    [\n        'data': 'Transaction successful.',\n        'message': 'Request successful.',\n        'success': true,\n        'statusCode': 200\n    ]\n]\n\n```\n\n### Azampay documentation\n\nYou can find more details about azampay on their documentation\nin this link [Azampay Documentation](https://developerdocs.azampay.co.tz/redoc).\n\n## Testing\n\n```bash\ncomposer test\n```\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n## Contributing\n\nPlease see [CONTRIBUTING](CONTRIBUTING.md) for details.\n\n## Security Vulnerabilities\n\nPlease review [our security policy](../../security/policy) on how to report security vulnerabilities.\n\n## Credits\n\n- [Alpha Olomi](https://github.com/alphaolomi)\n- [Omakei](https://github.com/omakei)\n- [All Contributors](../../contributors)\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n\n## Support us\n\nIf you find this package useful, you can support us by staring this repository and sharing it with others.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falphaolomi%2Flaravel-azampay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falphaolomi%2Flaravel-azampay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falphaolomi%2Flaravel-azampay/lists"}