A laravel package for working with paystack api
iamolayemi/laravel-paystack is a Laravel package for a laravel package for working with paystack api.
It currently has 4 GitHub stars and 650 downloads on Packagist (latest version v1.0.1).
Install it with composer require iamolayemi/laravel-paystack.
Discover more Laravel packages by iamolayemi
or browse all Laravel packages to compare alternatives.
Last updated
A comprehensive Laravel package for seamless integration with the Paystack payment gateway. This package provides an expressive and convenient way to interact with the Paystack API within your Laravel application.
You can install the package via Composer:
composer require iamolayemi/laravel-paystack
The package will automatically register itself if you're using Laravel's auto-discovery feature.
Add your Paystack credentials to your .env file:
PAYSTACK_SECRET_KEY=sk_test_xxxxxxxxxxxxxxxxxxxxx
PAYSTACK_PUBLIC_KEY=pk_test_xxxxxxxxxxxxxxxxxxxxx
PAYSTACK_CALLBACK_URL=https://yourdomain.com/paystack/callback
PAYSTACK_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxxx
php artisan vendor:publish --provider="Iamolayemi\Paystack\PaystackServiceProvider"
use Iamolayemi\Paystack\Facades\Paystack;
// Initialize a payment
$paymentData = [
'amount' => 500000, // 5000 NGN in kobo
'email' => '[email protected]',
'reference' => 'PAY_' . uniqid(),
'callback_url' => 'https://yourdomain.com/payment/callback',
];
$response = Paystack::transaction()
->initialize($paymentData)
->response();
if ($response['status']) {
$authorizationUrl = $response['data']['authorization_url'];
// Redirect user to $authorizationUrl
}
// Using the helper function
$response = paystack()->transaction()
->initialize($paymentData)
->response();
// Get only the authorization URL
$authorizationUrl = Paystack::transaction()
->initialize($paymentData)
->response('data.authorization_url');
// Or use the dedicated method
$authorizationUrl = Paystack::transaction()
->initialize($paymentData)
->authorizationURL();
// Verify a transaction
$reference = 'PAY_xxxxxxxxx';
$verification = Paystack::transaction()
->verify($reference)
->response();
if ($verification['status'] && $verification['data']['status'] === 'success') {
// Payment was successful
$amount = $verification['data']['amount'];
$customerEmail = $verification['data']['customer']['email'];
}
The package provides access to all Paystack API endpoints:
Paystack::transaction()->initialize($data);
Paystack::transaction()->verify($reference);
Paystack::transaction()->list($params);
Paystack::transaction()->fetch($id);
Paystack::customer()->create($data);
Paystack::customer()->list($params);
Paystack::customer()->fetch($emailOrCode);
Paystack::customer()->update($code, $data);
Paystack::transfer()->initiate($data);
Paystack::transfer()->finalize($data);
Paystack::transfer()->list($params);
Paystack::transfer()->fetch($code);
Paystack::plan()->create($data);
Paystack::plan()->list($params);
Paystack::subscription()->create($data);
Paystack::subscription()->list($params);
The package provides comprehensive error handling with custom exception classes:
use Iamolayemi\Paystack\Exceptions\PaystackApiException;
use Iamolayemi\Paystack\Exceptions\PaystackValidationException;
use Iamolayemi\Paystack\Exceptions\PaystackConnectionException;
try {
$response = Paystack::transaction()->initialize($data)->response();
} catch (PaystackValidationException $e) {
// Handle validation errors
$errors = $e->getErrors();
} catch (PaystackApiException $e) {
// Handle API errors
$message = $e->getMessage();
$endpoint = $e->getEndpoint();
} catch (PaystackConnectionException $e) {
// Handle connection errors
$url = $e->getUrl();
}
# Run all tests
composer test
# Run with coverage
composer test-coverage
# Run specific test
vendor/bin/phpunit --filter=TransactionTest
use Illuminate\Support\Facades\Http;
Http::fake([
'api.paystack.co/transaction/initialize' => Http::response([
'status' => true,
'message' => 'Authorization URL created',
'data' => [
'authorization_url' => 'https://checkout.paystack.com/0x234567',
'reference' => 'TEST_REF_123',
],
], 200),
]);
For detailed documentation, visit https://laravel-paystack.netlify.app
# Clone the repository
git clone https://github.com/iamolayemi/laravel-paystack.git
cd laravel-paystack
# Install dependencies
composer install
# Run all checks to ensure everything is working
make ci
The project uses a comprehensive Makefile for development tasks:
# Show all available commands
make help
# Install dependencies
make install
# Development workflow
make dev-setup # Complete development setup
make dev-install # Install development dependencies
# Run all tests
make test
# Run tests with coverage report
make test-coverage
# Run specific test file
vendor/bin/phpunit tests/Unit/TransactionEndpointTest.php
# Run tests with specific filter
vendor/bin/phpunit --filter=testTransactionInitialization
# Run static analysis with PHPStan
make analyse
# Fix code style issues automatically
make fix
# Check code style without fixing
make fix-dry-run
# Run all code quality checks
make check
# Check for security vulnerabilities
make security-check
# Validate composer.json
make validate
# Run complete CI pipeline (test + analyse + style + security)
make ci
# Run all checks (test + analyse + style)
make check
# Clean build artifacts
make clean
# Update dependencies
make update
# Update only composer.lock
make update-lock
# Build the package for production
make build
# Generate documentation
make docs
# Build documentation (if using docs package)
cd docs && npm install && npm run build
# Build Docker image
make docker-build
# Run tests in Docker
make docker-test
# Run shell in Docker container
make docker-shell
# Release patch version (1.0.0 -> 1.0.1)
make release-patch
# Release minor version (1.0.0 -> 1.1.0)
make release-minor
# Release major version (1.0.0 -> 2.0.0)
make release-major
make dev-setupmake testmake analysemake fixmake cigit commit -m "Your message"git pushThe project enforces high code quality standards:
# Run all tests
make test
# Run with coverage (generates HTML report)
make test-coverage
# Run specific test suite
vendor/bin/phpunit --testsuite=Unit
vendor/bin/phpunit --testsuite=Feature
# Run tests with verbose output
vendor/bin/phpunit --verbose
# Run tests with stop on failure
vendor/bin/phpunit --stop-on-failure
# Run PHPStan analysis
make analyse
# Run with specific level
vendor/bin/phpstan analyse --level=8
# Generate baseline (for ignoring existing errors)
vendor/bin/phpstan analyse --generate-baseline
# Fix all code style issues
make fix
# Check what would be fixed
make fix-dry-run
# Fix specific file
vendor/bin/pint src/Endpoints/Transaction.php
# If tests fail, try cleaning and reinstalling
make clean
composer install
make test
# If PHPStan fails, check configuration
vendor/bin/phpstan analyse --debug
# If style check fails, auto-fix
make fix
For the best development experience:
.editorconfig.php-cs-fixer.phpConsider setting up pre-commit hooks:
# Create pre-commit hook
cat > .git/hooks/pre-commit << 'EOF'
#!/bin/sh
make ci
EOF
chmod +x .git/hooks/pre-commit
We welcome contributions! Please see our Contributing Guide for details.
composer installmake testmake ciIf you discover any bugs, please create an issue on GitHub.
If you discover any security-related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.