Anypay is a comprehensive PHP and Laravel payment library for handling multiple payment-gateway integrations through a single, unified API. Instead of learning a different SDK for every bank or gateway, you write your checkout flow once and switch providers by changing a driver name β Anypay gives developers a simple, uniform payment experience with consistent purchase β pay β verify semantics across every gateway.
The package bundles 40+ drivers, covering the major Iranian bank and PSP gateways (Mellat, Melli/Sadad, Saman, Parsian, Pasargad, Saderat, Zarinpal, IDPay, Zibal and many more), popular wallet and installment (BNPL) providers (Azki, Etebarino, Walleta, Digipay, Vandar, Toman), and international gateways such as PayPal and Bitpay. It ships with Laravel auto-discovery (service provider + facade) and works equally well in plain PHP projects.
π Keywords: PHP payment gateway, Laravel payment library, multi-gateway payment, online payment integration, unified payment API, Iran payment gateway, Iranian bank integration, Zarinpal, Mellat, Saman, PayPal PHP, payment processing library, BNPL installment payment.
- π 40+ payment gateways out of the box β one driver-based interface for all of them.
- π§© Unified API β the same
purchase(),pay(), andverify()flow regardless of gateway. - π Robust error handling β dedicated exceptions for invalid payments, failed purchases, and missing drivers/invoices.
- βοΈ Dynamic configuration β pass settings inline or load them from a published config file.
- πͺ Trackable payment events β hook into each stage of the payment lifecycle.
- π§± Laravel-ready β auto-registered service provider and
Anypayfacade (also usable in plain PHP). - π³ Cards, wallets & installments β supports standard card gateways plus BNPL / installment providers.
The following drivers are bundled under src/Drivers/:
| Aqayepardakht | Asanpardakht | Atipay | Azki (installment) |
| Behpardakht (Mellat) | Bitpay | Digipay | Etebarino (installment) |
| Fanavacard | Gooyapay | IDPay | Irankish |
| Jibit | Local | Minipay | Nextpay |
| Omidpay | Parsian | Pasargad | Payfa |
| Pay.ir | PayPal | Payping | Paystar |
| Poolam | Rayanpay | Sadad (Melli) | Saman |
| SEP (Saman Electronic) | Sepehr (Saderat) | Sepordeh | Sizpay |
| Toman | Vandar | Walleta (installment) | Yekpay |
| Zarinpal | Zibal |
| Component | Technology |
|---|---|
| Language | PHP β₯ 7.2 |
| Framework | Laravel (service provider + facade; works standalone too) |
| HTTP client | Guzzle |
| Utilities | Carbon (dates), Ramsey UUID, chillerlan/php-cache |
| Install | Composer (PSR-4: Morpheusadam\Anypay\) |
- PHP 7.2+ and Composer
composer require morpheusadam/anypayIn Laravel, the service provider and Anypay facade are auto-discovered β no manual registration required.
$config = ['driver' => 'gatewayName', 'api_key' => 'your_api_key'];
$anypay = new Morpheusadam\Anypay\Anypay($config);
$invoice = new Morpheusadam\Anypay\Invoice();
$invoice->amount(1000); // amount in Rials
$anypay->via('gatewayName')->purchase($invoice)->pay();$config = ['api_key' => 'your_api_key'];
$gateway = 'gatewayName';
$amount = 1000; // amount in Rials
try {
$anypay = new Morpheusadam\Anypay\Anypay($config);
$response = $anypay->payWith($gateway, $amount, $config);
echo $response->getContent(); // payment response details
} catch (Exception $e) {
echo 'Payment error: ' . $e->getMessage();
}try {
$anypay = new Morpheusadam\Anypay\Anypay($config);
$receipt = $anypay->verify();
echo 'Payment confirmed. Transaction ID: ' . $receipt->getTransactionId();
} catch (Exception $e) {
echo 'Verification error: ' . $e->getMessage();
}use Morpheusadam\Anypay\Facades\Anypay;
$invoice = (new Invoice)->amount(1000);
Anypay::via('driverName')->purchase($invoice, function ($driver, $transactionId) {
// store $transactionId against the order
});Contributions are welcome! Open an issue or submit a pull request to add a gateway driver, fix a bug, or improve the docs.
Distributed under the MIT License. See the LICENSE file for full terms.