myckhel / laravel-paystack
laravel-paystack 的描述。
Requires
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^6.0
This package is auto-updated.
Last update: 2024-09-12 17:08:40 UTC
README
在您的 Laravel 项目中使用 Paystack Apis。
虽然存在其他库,但此库旨在解决灵活性和在 Laravel Job 范围内调用 Paystack Apis 的问题。
安装
composer require binkode/laravel-paystack
设置
此包将自动注册一个服务提供者。
您需要发布配置文件
php artisan vendor:publish --provider="Binkode\Paystack\PaystackServiceProvider"
发布配置
这是配置文件 paystack.php
的默认内容
<?php return [ "public_key" => env("PAYSTACK_PUBLIC_KEY"), "secret_key" => env("PAYSTACK_SECRET_KEY"), "url" => env("PAYSTACK_URL", 'https://api.paystack.co'), "merchant_email" => env("PAYSTACK_MERCHANT_EMAIL"), "route" => [ "middleware" => ["paystack_route_disabled", "api"], // For injecting middleware to the package's routes "prefix" => "api", // For injecting middleware to the package's routes "hook_middleware" => ["validate_paystack_hook", "api"] ], ];
更新 env
更新您的项目的 .env
文件以包含其凭证
PAYSTACK_PUBLIC_KEY=XXXXXXXXXXXXXXXXXXXX PAYSTACK_SECRET_KEY=XXXXXXXXXXXXXXXXXXXX PAYSTACK_URL=https://api.paystack.co PAYSTACK_MERCHANT_EMAIL=username@email.extension
使用方法
交易
use Binkode\Paystack\Support\Transaction; Transaction::list($params); Transaction::initialize($params); Transaction::verify($reference, $params); Transaction::fetch($transaction, $params); Transaction::charge_authorization($params); Transaction::check_authorization($params); Transaction::viewTimeline($id_or_reference, $params); Transaction::totals($params); Transaction::export($params); Transaction::partial_debit($params);
交易拆分
use Binkode\Paystack\Support\Split; Split::create($params); Split::list($params); Split::fetch($split, $params); Split::update($split, $params); Split::add($split, $params); Split::remove($split, $params);
Apple Pay
use Binkode\Paystack\Support\ApplePay; ApplePay::createDomain($params); ApplePay::listDomains($params); ApplePay::removeDomain($params);
子账户
use Binkode\Paystack\Support\SubAccount; SubAccount::create($params); SubAccount::list($params); SubAccount::fetch($subaccount, $params); SubAccount::update($subaccount, $params);
客户
use Binkode\Paystack\Support\Customer; Customer::create($params); Customer::list($params); Customer::fetch($customer, $params); Customer::update($customer, $params); Customer::identification($customer, $params); Customer::set_risk_action($customer, $params); Customer::deactivate_authorization($params);
专用虚拟账户
use Binkode\Paystack\Support\DedicatedVirtualAccount; DedicatedVirtualAccount::create($params); DedicatedVirtualAccount::list($params); DedicatedVirtualAccount::fetch($dedicated_account, $params); DedicatedVirtualAccount::remove($dedicated_account, $params); DedicatedVirtualAccount::split($params); DedicatedVirtualAccount::removeSplit($params); DedicatedVirtualAccount::providers($params);
计划
use Binkode\Paystack\Support\Plan; Plan::create($params); Plan::list($params); Plan::fetch($plan, $params); Plan::update($plan, $params);
订阅
use Binkode\Paystack\Support\Subscription; Subscription::create($params); Subscription::list($params); Subscription::fetch($plan, $params); Subscription::enable($params); Subscription::disable($params); Subscription::link($code, $params); Subscription::sendUpdateSubscription($code, $params);
产品
use Binkode\Paystack\Support\Product; Product::create($params); Product::list($params); Product::fetch($product, $params); Product::update($product, $params);
支付页面
use Binkode\Paystack\Support\Page; Page::create($params); Page::list($params); Page::fetch($page, $params); Page::update($page, $params); Page::checkSlug($slug, $params); Page::addProduct($page, $params);
发票
use Binkode\Paystack\Support\Invoice; Invoice::create($params); Invoice::list($params); Invoice::fetch($invoice, $params); Invoice::update($invoice, $params); Invoice::verify($code, $params); Invoice::notify($code, $params); Invoice::totals($params); Invoice::finalize($code, $params); Invoice::archive($code, $params);
结算
use Binkode\Paystack\Support\Settlement; Settlement::list($params); Settlement::transactions($settlement, $params);
转账接收者
use Binkode\Paystack\Support\Recipient; Recipient::create($params); Recipient::bulkCreate($params); Recipient::list($params); Recipient::fetch($recipient, $params); Recipient::update($recipient, $params); Recipient::remove($recipient, $params);
转账
use Binkode\Paystack\Support\Transfer; Transfer::initiate($params); Transfer::finalize($params); Transfer::bulkCreate($params); Transfer::list($params); Transfer::fetch($transfer, $params); Transfer::fetch($reference, $params);
转账控制
use Binkode\Paystack\Support\TransferControl; TransferControl::balance($params); TransferControl::balanceLedger($params); TransferControl::resendTransfersOTP($params); TransferControl::disableTransfersOTP($params); TransferControl::finalizeDisableOTP($params); TransferControl::enableTransfersOTP($params);
批量收费
use Binkode\Paystack\Support\BulkCharge; BulkCharge::initiate($params); BulkCharge::list($params); BulkCharge::fetch($bulkcharge, $params); BulkCharge::fetchChargesBatch($bulkcharge, $params); BulkCharge::pauseChargesBatch($bulkcharge, $params); BulkCharge::resumeChargesBatch($bulkcharge, $params);
控制面板
use Binkode\Paystack\Support\ControlPanel; ControlPanel::fetchPaymentSessionTimeout($params); ControlPanel::updatePaymentSessionTimeout($params);
收费
use Binkode\Paystack\Support\Charge; Charge::create($params); Charge::submitPin($params); Charge::submitOtp($params); Charge::submitPhone($params); Charge::submitBirthday($params); Charge::submitAddress($params); Charge::checkPending($reference, $params);
争议
use Binkode\Paystack\Support\Dispute; Dispute::list($params); Dispute::fetch($dispute, $params); Dispute::listTransaction($dispute, $params); Dispute::update($dispute, $params); Dispute::addEvidence($dispute, $params); Dispute::getUploadURL($dispute, $params); Dispute::resolve($dispute, $params); Dispute::export($params);
退款
use Binkode\Paystack\Support\Refund; Refund::create($params); Refund::list($params); Refund::fetch($refund, $params);
验证
use Binkode\Paystack\Support\Verification; Verification::resolve($params); Verification::validateAccount($params); Verification::resolveCardBIN($bin, $params);
杂项
use Binkode\Paystack\Support\Miscellaneous; Miscellaneous::listBanks($params); Miscellaneous::listProviders($params); Miscellaneous::listCountries($params); Miscellaneous::listStates($params);
使用 WebHook 路由
Laravel paystack 提供了一个预定义的端点,用于监听和验证来自 paystack 的 webhook 事件。它在每个传入的钩子事件上发出 Binkode\Paystack\Events\Hook
,这些事件可以被监听。钩子请求通过使用 paystack 的配置 secret_key
验证 validate_paystack_hook
中间件来验证传入的请求。
设置 Paystack Webhook
查看官方页面以了解有关 paystack webhook 的更多信息 laravel-paystack 暴露了 hooks
api 端点,在设置期间使用端点 url 作为 paystack webhook url。
| POST | /hooks | | Binkode\Paystack\Http\Controllers\HookController@hook | api |
监听 laravel-paystack 钩子事件
您可以在设置后通过在您的 Laravel 项目的 EventServiceProvider
文件中注册事件来开始监听传入的 paystack webhooks。
php artisan make:listener PaystackWebHookListener --event=Binkode\Paystack\Events\Hook
<?php namespace App\Listeners; use Binkode\Paystack\Events\Hook; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Support\Facades\Log; class PaystackWebHookListener { /** * Handle the event. * * @param Binkode\Paystack\Events\Hook $event * @return void */ public function handle(Hook $event) { Log::debug($event->event); /* { "event":"charge.success", "data": { "id":302961, "domain":"live", "status":"success", "reference":"qTPrJoy9Bx", "amount":10000, "message":null, "gateway_response":"Approved by Financial Institution", "paid_at":"2016-09-30T21:10:19.000Z", "created_at":"2016-09-30T21:09:56.000Z", "channel":"card", "currency":"NGN", "ip_address":"41.242.49.37", "metadata":0, "log":{ "time_spent":16, "attempts":1, "authentication":"pin", "errors":0, "success":false, "mobile":false, "input":[], "channel":null, "history":[ { "type":"input", "message":"Filled these fields: card number, card expiry, card cvv", "time":15 }, { "type":"action", "message":"Attempted to pay", "time":15 }, { "type":"auth", "message":"Authentication Required: pin", "time":16 } ] }, "fees":null, "customer":{ "id":68324, "first_name":"BoJack", "last_name":"Horseman", "email":"bojack@horseman.com", "customer_code":"CUS_qo38as2hpsgk2r0", "phone":null, "metadata":null, "risk_action":"default" }, "authorization":{ "authorization_code":"AUTH_f5rnfq9p", "bin":"539999", "last4":"8877", "exp_month":"08", "exp_year":"2020", "card_type":"mastercard DEBIT", "bank":"Guaranty Trust Bank", "country_code":"NG", "brand":"mastercard", "account_name": "BoJack Horseman" }, "plan":{} } } */ } }
<?php namespace App\Providers; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Event; use Binkode\Paystack\Events\Hook; use App\Listeners\PaystackWebHookListener; class EventServiceProvider extends ServiceProvider { /** * The event listener mappings for the application. * * @var array */ protected $listen = [ ... Hook::class => [ PaystackWebHookListener::class, ], ];
使用内置路由
通过从 paystack 的路由配置中删除
paystack_route_disabled
中间件来启用内置路由。
POST apple-pay/domain .............. Binkode\Paystack\Http\Controllers\ApplePayController@createDomain GET|HEAD apple-pay/domain ............... Binkode\Paystack\Http\Controllers\ApplePayController@listDomains DELETE apple-pay/domain .............. Binkode\Paystack\Http\Controllers\ApplePayController@removeDomain GET|HEAD balance ..................... Binkode\Paystack\Http\Controllers\TransferControlController@balance GET|HEAD balance/ledger ........ Binkode\Paystack\Http\Controllers\TransferControlController@balanceLedger GET|HEAD bank ........................ Binkode\Paystack\Http\Controllers\MiscellaneousController@listBanks GET|HEAD bank/resolve ................... Binkode\Paystack\Http\Controllers\VerificationController@resolve POST bank/validate .......... Binkode\Paystack\Http\Controllers\VerificationController@validateAccount GET|HEAD banks ................... Binkode\Paystack\Http\Controllers\MiscellaneousController@listProviders POST bulkcharge ...................... Binkode\Paystack\Http\Controllers\BulkChargeController@initiate GET|HEAD bulkcharge .......................... Binkode\Paystack\Http\Controllers\BulkChargeController@list GET|HEAD bulkcharge/pause/{bulkcharge} Binkode\Paystack\Http\Controllers\BulkChargeController@pauseCharge… GET|HEAD bulkcharge/resume/{bulkcharge} Binkode\Paystack\Http\Controllers\BulkChargeController@resumeChar… GET|HEAD bulkcharge/{bulkcharge} ............ Binkode\Paystack\Http\Controllers\BulkChargeController@fetch GET|HEAD bulkcharge/{bulkcharge}/charges Binkode\Paystack\Http\Controllers\BulkChargeController@fetchChar… POST charge ................................ Binkode\Paystack\Http\Controllers\ChargeController@create POST charge/submit_address .......... Binkode\Paystack\Http\Controllers\ChargeController@submitAddress POST charge/submit_birthday ........ Binkode\Paystack\Http\Controllers\ChargeController@submitBirthday POST charge/submit_otp .................. Binkode\Paystack\Http\Controllers\ChargeController@submitOtp POST charge/submit_phone .............. Binkode\Paystack\Http\Controllers\ChargeController@submitPhone POST charge/submit_pin .................. Binkode\Paystack\Http\Controllers\ChargeController@submitPin GET|HEAD charge/{reference} .............. Binkode\Paystack\Http\Controllers\ChargeController@checkPending GET|HEAD country ................. Binkode\Paystack\Http\Controllers\MiscellaneousController@listCountries POST customer ............................ Binkode\Paystack\Http\Controllers\CustomerController@create GET|HEAD customer .............................. Binkode\Paystack\Http\Controllers\CustomerController@list POST customer/deactivate_authorization Binkode\Paystack\Http\Controllers\CustomerController@deactivat… POST customer/set_risk_action ... Binkode\Paystack\Http\Controllers\CustomerController@set_risk_action GET|HEAD customer/{customer} .................. Binkode\Paystack\Http\Controllers\CustomerController@fetch PUT customer/{customer} ................. Binkode\Paystack\Http\Controllers\CustomerController@update POST customer/{customer}/identification Binkode\Paystack\Http\Controllers\CustomerController@identifi… GET|HEAD decision/bin/{bin} ...... Binkode\Paystack\Http\Controllers\VerificationController@resolveCardBIN POST dedicated_account .... Binkode\Paystack\Http\Controllers\DedicatedVirtualAccountController@create GET|HEAD dedicated_account ...... Binkode\Paystack\Http\Controllers\DedicatedVirtualAccountController@list GET|HEAD dedicated_account/available_providers Binkode\Paystack\Http\Controllers\DedicatedVirtualAccountC… POST dedicated_account/split Binkode\Paystack\Http\Controllers\DedicatedVirtualAccountController@split DELETE dedicated_account/split Binkode\Paystack\Http\Controllers\DedicatedVirtualAccountController@remo… GET|HEAD dedicated_account/{dedicated_account} Binkode\Paystack\Http\Controllers\DedicatedVirtualAccountC… DELETE dedicated_account/{dedicated_account} Binkode\Paystack\Http\Controllers\DedicatedVirtualAccountC… GET|HEAD dispute ................................ Binkode\Paystack\Http\Controllers\DisputeController@list GET|HEAD dispute/transaction/{dispute} Binkode\Paystack\Http\Controllers\DisputeController@listTransaction GET|HEAD dispute/{dispute} ..................... Binkode\Paystack\Http\Controllers\DisputeController@fetch PUT dispute/{dispute} .................... Binkode\Paystack\Http\Controllers\DisputeController@update POST dispute/{dispute}/evidence ...... Binkode\Paystack\Http\Controllers\DisputeController@addEvidence GET|HEAD dispute/{dispute}/export ............. Binkode\Paystack\Http\Controllers\DisputeController@export PUT dispute/{dispute}/resolve ........... Binkode\Paystack\Http\Controllers\DisputeController@resolve GET|HEAD dispute/{dispute}/upload_url ... Binkode\Paystack\Http\Controllers\DisputeController@getUploadURL POST hooks ..................................... Binkode\Paystack\Http\Controllers\HookController@hook GET|HEAD integration/payment_session_timeout Binkode\Paystack\Http\Controllers\ControlPanelController@fet… PUT integration/payment_session_timeout Binkode\Paystack\Http\Controllers\ControlPanelController@upd… POST page .................................... Binkode\Paystack\Http\Controllers\PageController@create GET|HEAD page ...................................... Binkode\Paystack\Http\Controllers\PageController@list GET|HEAD page/check_slug_availability/{slug} .. Binkode\Paystack\Http\Controllers\PageController@checkSlug GET|HEAD page/{page} .............................. Binkode\Paystack\Http\Controllers\PageController@fetch PUT page/{page} ............................. Binkode\Paystack\Http\Controllers\PageController@update POST page/{page}/product ................. Binkode\Paystack\Http\Controllers\PageController@addProduct POST paymentrequest ....................... Binkode\Paystack\Http\Controllers\InvoiceController@create GET|HEAD paymentrequest ......................... Binkode\Paystack\Http\Controllers\InvoiceController@list POST paymentrequest/archive/{invoice_code} Binkode\Paystack\Http\Controllers\InvoiceController@archive POST paymentrequest/finalize/{invoice_code} Binkode\Paystack\Http\Controllers\InvoiceController@final… POST paymentrequest/notify/{invoice_code} . Binkode\Paystack\Http\Controllers\InvoiceController@notify GET|HEAD paymentrequest/totals ................ Binkode\Paystack\Http\Controllers\InvoiceController@totals GET|HEAD paymentrequest/verify/{invoice_code} . Binkode\Paystack\Http\Controllers\InvoiceController@verify GET|HEAD paymentrequest/{invoice} .............. Binkode\Paystack\Http\Controllers\InvoiceController@fetch PUT paymentrequest/{invoice} ............. Binkode\Paystack\Http\Controllers\InvoiceController@update POST plan .................................... Binkode\Paystack\Http\Controllers\PlanController@create GET|HEAD plan ...................................... Binkode\Paystack\Http\Controllers\PlanController@list GET|HEAD plan/{plan} .............................. Binkode\Paystack\Http\Controllers\PlanController@fetch PUT plan/{plan} ............................. Binkode\Paystack\Http\Controllers\PlanController@update POST product .............................. Binkode\Paystack\Http\Controllers\ProductController@create GET|HEAD product ................................ Binkode\Paystack\Http\Controllers\ProductController@list GET|HEAD product/{product} ..................... Binkode\Paystack\Http\Controllers\ProductController@fetch PUT product/{product} .................... Binkode\Paystack\Http\Controllers\ProductController@update POST refund ................................ Binkode\Paystack\Http\Controllers\RefundController@create GET|HEAD refund .................................. Binkode\Paystack\Http\Controllers\RefundController@list GET|HEAD refund/{refund} ........................ Binkode\Paystack\Http\Controllers\RefundController@fetch GET|HEAD settlement .......................... Binkode\Paystack\Http\Controllers\SettlementController@list GET|HEAD settlement/{settlement}/transactions Binkode\Paystack\Http\Controllers\SettlementController@tran… POST split .................................. Binkode\Paystack\Http\Controllers\SplitController@create GET|HEAD split .................................... Binkode\Paystack\Http\Controllers\SplitController@list GET|HEAD split/{split} ........................... Binkode\Paystack\Http\Controllers\SplitController@fetch PUT split/{split} .......................... Binkode\Paystack\Http\Controllers\SplitController@update POST split/{split}/subaccount/add .............. Binkode\Paystack\Http\Controllers\SplitController@add POST split/{split}/subaccount/remove ........ Binkode\Paystack\Http\Controllers\SplitController@remove POST subaccount ........................ Binkode\Paystack\Http\Controllers\SubAccountController@create GET|HEAD subaccount .......................... Binkode\Paystack\Http\Controllers\SubAccountController@list GET|HEAD subaccount/{subaccount} ............ Binkode\Paystack\Http\Controllers\SubAccountController@fetch PUT subaccount/{subaccount} ........... Binkode\Paystack\Http\Controllers\SubAccountController@update POST subscription .................... Binkode\Paystack\Http\Controllers\SubscriptionController@create GET|HEAD subscription ...................... Binkode\Paystack\Http\Controllers\SubscriptionController@list POST subscription/disable ........... Binkode\Paystack\Http\Controllers\SubscriptionController@disable POST subscription/enable ............. Binkode\Paystack\Http\Controllers\SubscriptionController@enable POST subscription/{code}/manage/email Binkode\Paystack\Http\Controllers\SubscriptionController@sendUp… GET|HEAD subscription/{code}/manage/link ... Binkode\Paystack\Http\Controllers\SubscriptionController@link GET|HEAD subscription/{subscription} ...... Binkode\Paystack\Http\Controllers\SubscriptionController@fetch GET|HEAD transaction ........................ Binkode\Paystack\Http\Controllers\TransactionController@list POST transaction/charge_authorization Binkode\Paystack\Http\Controllers\TransactionController@charge_… POST transaction/check_authorization Binkode\Paystack\Http\Controllers\TransactionController@check_au… GET|HEAD transaction/export ............... Binkode\Paystack\Http\Controllers\TransactionController@export POST transaction/initialize ....... Binkode\Paystack\Http\Controllers\TransactionController@initialize POST transaction/partial_debit . Binkode\Paystack\Http\Controllers\TransactionController@partial_debit GET|HEAD transaction/timeline/{id_or_reference} Binkode\Paystack\Http\Controllers\TransactionController@v… GET|HEAD transaction/totals ............... Binkode\Paystack\Http\Controllers\TransactionController@totals GET|HEAD transaction/verify/{reference} ... Binkode\Paystack\Http\Controllers\TransactionController@verify GET|HEAD transaction/{transaction} ......... Binkode\Paystack\Http\Controllers\TransactionController@fetch POST transfer .......................... Binkode\Paystack\Http\Controllers\TransferController@initiate GET|HEAD transfer .............................. Binkode\Paystack\Http\Controllers\TransferController@list POST transfer/bulk ................... Binkode\Paystack\Http\Controllers\TransferController@bulkCreate POST transfer/disable_otp Binkode\Paystack\Http\Controllers\TransferControlController@disableTransfer… POST transfer/disable_otp_finalize Binkode\Paystack\Http\Controllers\TransferControlController@finali… POST transfer/enable_otp Binkode\Paystack\Http\Controllers\TransferControlController@enableTransfersO… POST transfer/finalize_transfer ........ Binkode\Paystack\Http\Controllers\TransferController@finalize POST transfer/resend_otp Binkode\Paystack\Http\Controllers\TransferControlController@resendTransfersO… GET|HEAD transfer/verify/{reference} ......... Binkode\Paystack\Http\Controllers\TransferController@verify GET|HEAD transfer/{transfer} .................. Binkode\Paystack\Http\Controllers\TransferController@fetch POST transferrecipient .................. Binkode\Paystack\Http\Controllers\RecipientController@create GET|HEAD transferrecipient .................... Binkode\Paystack\Http\Controllers\RecipientController@list POST transferrecipient/bulk ......... Binkode\Paystack\Http\Controllers\RecipientController@bulkCreate GET|HEAD transferrecipient/{transferrecipient} Binkode\Paystack\Http\Controllers\RecipientController@fetch PUT transferrecipient/{transferrecipient} Binkode\Paystack\Http\Controllers\RecipientController@upda… DELETE transferrecipient/{transferrecipient} Binkode\Paystack\Http\Controllers\RecipientController@remo…
更新日志
请参阅 CHANGELOG 了解最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
致谢
安全性
如果您发现任何与安全相关的问题,请通过电子邮件 binkode1@hotmail.com 而不是使用问题跟踪器。
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。