stephenjude / providus-sdk
Providus Bank 收集API的Laravel SDK
2.0.0
2024-03-11 10:55 UTC
Requires
- php: ^8.1|^8.2|^8.3
- archtechx/enums: ^0.3|^1.0
- illuminate/contracts: ^9.0|^10.0|^11.0
- spatie/laravel-package-tools: ^1.13.0
- spatie/laravel-webhook-client: ^3.1
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0|^7.0
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpunit/phpunit: ^9.5|^10.0
README
Providus Bank 收集API的Laravel SDK
安装
您可以通过composer安装此包
composer require stephenjude/providus-sdk
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="providus-sdk-config"
这是已发布配置文件的内容
return [ 'id' => env('PROVIDUS_ID'), 'secret' => env('PROVIDUS_SECRET'), 'base_url' => env('PROVIDUS_BASE_URL', 'http://154.113.16.142:8088/AppDevAPI/api/'), /** * Set SDK to demo mode. This mode makes use of the demo signature provided by Providus bank. */ 'demo_mode' => env('PROVIDUS_DEMO', false), /** * Auth signature used for demo requests */ 'demo_signature' => 'BE09BEE831CF262226B426E39BD1092AF84DC63076D4174FAC78A2261F9A3D6E59744983B8326B69CDF2963FE314DFC89635CFA37A40596508DD6EAAB09402C7', 'webhook' => [ /** * This secret is used to verify that the payload has not been tampered with. */ 'signing_secret' => env('PROVIDUS_SECRET'), /** * The name of the header containing the signature. */ 'signature_header_name' => 'X-Auth-Signature', /** * This class will verify that the content of the signature header is valid. * It should implement \Providus\Providus\SignatureValidator\SignatureValidator */ 'signature_validator' => \Providus\Providus\SignatureValidator\DefaultSignatureValidator::class, /** * The classname of the controller to be used to process the webhook. * This should be set to a class that extends \Providus\Providus\Http\Controllers\WebhookController::class */ 'controller' => \Providus\Providus\Http\Controllers\WebhookController::class, /** * The route path that maps the webhook request to the webhook controller. */ 'path' => '/internals/webhook/providus/events', ], ];
用法
初始化Providus API
$bank = new \Providus\Providus\Providus(); $bank->verifyTransactionBySessionId(SETTLEMENT_ID); //Or use Facade use \Providus\Providus\Facades\Providus; Providus::verifyTransactionBySessionId(SETTLEMENT_ID);
创建动态账户号码
$accountDetails = $bank->createDynamicAccountNumber('customer_name'); $accountDetails->accountName; $accountDetails->accountNumber;
创建预留账户号码
$accountDetails = $bank->createReservedAccountNumber('customer_name', 'customer_bvn'); $accountDetails->accountName; $accountDetails->accountNumber; $accountDetails->bvn;
更新账户名称
$accountDetails = $bank->updateAccountName('customer_updated_name', 'customer_account_number'); $accountDetails->accountName; $accountDetails->accountNumber;
将账户号码列入黑名单
$bank->blacklistAccountNumber('customer_account_number');
使用会话或结算ID验证交易
$transaction = $bank->verifyTransactionBySessionId('session_id'); $transaction = $bank->verifyTransactionBySettlementId('settlement_id'); $transaction->sessionId; $transaction->settlementId; $transaction->accountNumber; $transaction->currency; $transaction->transactionAmount; $transaction->transactionReference; $transaction->transactionDate; $transaction->feeAmount; $transaction->settledAmount; $transaction->sourceAccountNumber; $transaction->sourceAccountNumber; $transaction->sourceBankName; $transaction->remarks; $transaction->channelId;
Webhook控制器
您必须创建一个控制器类,该类继承自本包提供的基Webhook控制器。更新Providus配置文件以使用您自己定义的控制器。
/** * The classname of the controller to be used to process the webhook. * This should be set to a class that extends \Providus\Providus\Http\Controllers\WebhookController::class */ 'controller' => App\Http\Controllers\ProvidusWebhookController::class,
按照以下方式更新您的控制器以返回有效的响应给Providus,对于成功和重复响应。此包为您处理拒绝响应。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Providus\Providus\Http\Controllers\WebhookController; class ProvidusWebhookController extends WebhookController { public function handle(Request $request) { parent::handle($request); if ($this->sessionHasDuplicate($request->input('sessionId'))) { return $this->duplicateResponse($request); } // Webhook request is valid, so you can do your thing here. return $this->successfulResponse($request); } public function sessionHasDuplicate(string $sessionId){ // Check if session ID has duplicate. A duplicate sessions is for transaction you have already processed previously. } }
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献指南。
安全漏洞
请参阅我们的安全策略以了解如何报告安全漏洞。
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。