Skip to content

morpheusadam/anypay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’³ Anypay β€” Multi-Gateway PHP / Laravel Payment Library

A comprehensive PHP & Laravel payment library that connects 40+ payment gateways behind one unified API β€” purchase, pay, and verify online transactions with a single, consistent interface.

License Stars Forks Last commit Repo size

PHP Laravel Composer 40+ gateways


πŸ“– Overview

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.


✨ Features

  • πŸ”Œ 40+ payment gateways out of the box β€” one driver-based interface for all of them.
  • 🧩 Unified API β€” the same purchase(), pay(), and verify() 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 Anypay facade (also usable in plain PHP).
  • πŸ’³ Cards, wallets & installments β€” supports standard card gateways plus BNPL / installment providers.

🏦 Supported Gateways

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

πŸ› οΈ Tech Stack

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\)

Tech stack


πŸš€ Getting Started

Prerequisites

  • PHP 7.2+ and Composer

Installation

composer require morpheusadam/anypay

In Laravel, the service provider and Anypay facade are auto-discovered β€” no manual registration required.


πŸ“¦ Usage

Create and pay an invoice

$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();

Quick pay with the payWith helper

$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();
}

Verify a payment (on the callback)

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();
}

Using the Laravel facade with a published config

use Morpheusadam\Anypay\Facades\Anypay;

$invoice = (new Invoice)->amount(1000);

Anypay::via('driverName')->purchase($invoice, function ($driver, $transactionId) {
    // store $transactionId against the order
});

🀝 Contributing

Contributions are welcome! Open an issue or submit a pull request to add a gateway driver, fix a bug, or improve the docs.

πŸ“œ License

Distributed under the MIT License. See the LICENSE file for full terms.


πŸ‘€ Author β€” Morpheus Adam

Web developer & cheerful hacker Β· PHP Β· Laravel Β· Go

GitHub Website Email

⭐ If Anypay simplified your checkout, consider giving it a star! ⭐

About

Comprehensive PHP & Laravel payment library: integrate 40+ payment gateways (Iranian banks/PSPs, wallets, BNPL, plus PayPal & Bitpay) through one unified purchase/pay/verify API.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages