emleons / pesapal-php
General-purpose Pesapal PHP integration library — Easily authenticate, create payment orders, handle IPNs, and check transaction status with minimal setup.
v1.0.0
2025-08-11 00:39 UTC
Requires
- guzzlehttp/guzzle: ^7.9
README
Please Check the Official Pesapal API Documentation: https://developer.pesapal.com/
A modern PHP wrapper for the Pesapal v3 API, providing easy integration with Pesapal's payment services. This SDK implements all core API endpoints with PHP best practices.
Features
- Complete API Coverage: All essential Pesapal API v3 endpoints implemented
- Automatic Token Handling: OAuth tokens managed automatically
- Sandbox Support: Built-in sandbox mode for testing
- Strict Typing: PHP 7.4+ type declarations for reliability
- PSR Standards: Works with most php FrameWork Laravel, Codeigniter 4, Symfony ..
Installation
composer require emleons/pesapal-php
Basic Usage
use Emleons\PesapalPhp\Pesa; $pesa = new Pesa([ 'consumer_key' => 'your_key_here', 'consumer_secret' => 'your_secret_here', 'is_sandbox' => true // Set false for production ]); // Register IPN URL (GET or POST) $ipnResponse = $pesa->registerIpnUrl( 'https://yourdomain.com/ipn', 'POST' ); // Submit payment $payment = $pesa->makeThePayment( [ "id" => $randomString, "currency" => "TZS", "amount" => 10000.00, "description" => "Payment description goes here", "callback_url" => "http://localhost:8080/pesapal/pin.php", "redirect_mode" => "", "notification_id" => "030bf9b0-a5d7-4cbd-b5cb-dbb88f03b75e", "branch" => "Store Name - HQ", "billing_address" => [ "email_address" => "john.doe@example.com", "phone_number" => "0723xxxxxx", "country_code" => "KE", "first_name" => "John", "middle_name" => "", "last_name" => "Doe", "line_1" => "Pesapal Limited", "line_2" => "", "city" => "", "state" => "", "postal_code" => "", "zip_code" => "" ] ] ); // Get More Methods from Pesa class
Official API Reference
For complete API specifications and required parameters, always refer to the: 👉 Official Pesapal API Documentation
Particularly useful sections:
Testing with Sandbox
- Get sandbox credentials from Pesapal Developer Portal
- Set
is_sandbox => true
Security Notice
Always:
- Validate all user inputs before API calls
- Use HTTPS for all callbacks
- Regularly check Pesapal's security advisories
This unofficial SDK is maintained by emleonstz as an open source project.
Pesapal is not responsible for this implementation.