alphaolomi / laravel-azampay
Laravel Azampay
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.5
- illuminate/contracts: ^10.0||^11.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
This package is auto-updated.
Last update: 2024-09-30 15:59:09 UTC
README
Laravel Azampay
Laravel Axampay 为 Azampay 的支付服务提供了一种表达性强、流畅的接口。它处理几乎所有模板化的支付和账单,您无需手动操作。
安装
先决条件
- PHP 8.1+
- Laravel v10+
- Composer
您可以通过 Composer 安装此包
composer require alphaolomi/laravel-azampay
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="azampay-config"
设置
将以下内容添加到您的 .env 文件中
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"
用法
检查 API
MNO 检查
使用 AzampayService
类进行移动端检查
注意:配置将自动加载。
use Alphaolomi\Azampay\AzampayService; $azampay = new AzampayService(); $data = $azampay->mobileCheckout([ 'amount' => 1000, 'currency' => 'TZS', 'accountNumber' => '0625933171', 'externalId' => '08012345678', 'provider' => 'Mpesa', ]);
响应
array:3 [▼
"success" => true
"transactionId" => "b85e971981844a6f8888b42579655b8f"
"message" => "Your request has been received and is being processed."
]
使用外观类进行 MNO 检查
use Alphaolomi\Azampay\Facades\Azampay; $data = Azampay::mobileCheckout([ 'amount' => 1000, 'currency' => 'TZS', 'accountNumber' => '0625933171', 'externalId' => '08012345678', 'provider' => 'Mpesa', ]);
响应
array:3 [▼
"success" => true
"transactionId" => "b85e971981844a6f8888b42579655b8f"
"message" => "Your request has been received and is being processed."
]
银行检查
使用 AzampayService 类进行银行检查
use Alphaolomi\Azampay\AzampayService; $azampay = new AzampayService(); $data = $azampay->bankCheckout([ 'amount' => 1000, 'currencyCode' => 'TZS', 'merchantAccountNumber' => '34567890987654', 'merchantMobileNumber' => '08012345678', 'merchantName' => 'alphaolomi@gmail.com', 'otp' => '1234', 'provider' => 'CRDB', 'referenceId' => '24345345', ]);
响应
array:3 [▼ "success" => true "transactionId" => "b85e971981844a6f8888b42579655b8f" "message" => "Your request has been received and is being processed." ]
使用外观类进行银行检查
use Alphaolomi\Azampay\Facades\Azampay; $data = Azampay::bankCheckout([ 'amount' => 1000, 'currencyCode' => 'TZS', 'merchantAccountNumber' => '34567890987654', 'merchantMobileNumber' => '08012345678', 'merchantName' => 'alphaolomi@gmail.com', 'otp' => '1234', 'provider' => 'CRDB', 'referenceId' => '24345345', ]); # Response [ 'transactionId' => 'string', 'message' => 'string' ]
获取支付合作伙伴
使用 AzampayService 类获取支付合作伙伴
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" ], // ... ]
使用外观类获取支付合作伙伴
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" ], // ... ]
检查后
使用 AzampayService 类进行检查后操作
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' ]
使用外观类进行检查后操作
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'
回调路由和事件
该包有一个处理来自 Azampay 的回调的路由。默认情况下启用。
每次接收到 Azampay 的回调时,该包将触发事件 AzampayCallback::class
。您可以为该事件创建一个监听器,并在事件触发时处理回调数据。
注册路由
此包有一个处理来自 Azampay 的回调的路由。默认情况下启用。
在您的 App\Providers\EventServiceProvider
中注册 AzampayCallback::class
事件的监听器。
php artisan make:listener AzampayCallbackListener
在您的 App\Listeners\AzampayCallbackListener
类中,添加 handle
方法以处理事件。
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 // ... } // ...
use Alphaolomi\Azampay\Events\AzampayCallback; use App\Listeners\AzampayCallbackListener; /** * The event listener mappings for the application. * * @var array */ protected $listen = [ AzampayCallback::class => [ AzampayCallbackListener::class, ], ];
现在,每次接收到 Azampay 的回调时,该包将调用 AzampayCallbackListener
类的 handle
方法,并传递回调数据。
支付分配 API
创建转账
使用 AzampayService 类创建转账
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 ] ]
使用外观类创建转账
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 ] ]
名称查找
使用 AzampayService 类进行名称查找
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' ]
使用外观类进行名称查找
use Alphaolomi\Azampay\Facades\Azampay; $data = Azampay::nameLookup([ 'bankName' => 'string', 'accountNumber' => 'string', ]); # Response [ 'name' => 'string', 'message' => 'string', 'success' => true, 'accountNumber' => 'string', 'bankName' => 'string' ]
获取交易状态
使用 AzampayService 类获取交易状态
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 ] ]
使用外观类获取交易状态
use Alphaolomi\Azampay\Facades\Azampay; $data = Azampay::getTransactionStatus([ 'bankName' => 'CRDB', 'pgReferenceId' => '10' ]); # Response [ [ 'data': 'Transaction successful.', 'message': 'Request successful.', 'success': true, 'statusCode': 200 ] ]
Azampay 文档
您可以在以下链接中找到更多关于 azampay 的详细信息:Azampay 文档。
测试
composer test
变更日志
请参阅 变更日志 了解最近更改的详细信息。
贡献
请参阅 贡献指南 了解详细信息。
安全漏洞
请参阅 我们的安全策略 了解如何报告安全漏洞。
致谢
许可
MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。
支持我们
如果您发现此包很有用,您可以通过关注此存储库并与他人分享来支持我们。