PHP code example of samdevxuz / algorix-pay

1. Go to this page and download the library: Download samdevxuz/algorix-pay library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

samdevxuz / algorix-pay example snippets


use AlgorixPay\Events\PaymentReceived;
use Illuminate\Support\Facades\Event;

Event::listen(function (PaymentReceived $event): void {
    $payment = $event->payment;

    $payment->amountTiyin;     // int — 1 so'm = 100 tiyin
    $payment->currency;        // 'UZS' | 'RUB' | 'USD' | 'EUR'
    $payment->transactionId;   // ?string — bot-provided receipt/transaction id
    $payment->senderMasked;    // ?string — '8600****1234' (when present)
    $payment->receiverMasked;  // ?string — '9860****5678' (your card, when present)
    $payment->receivedAt;      // ?string — ISO 8601 UTC, from Telegram message.date
    $payment->rawText;         // string  — original bot message

    $event->bankMessageId;     // 'clickuz:12345' — UNIQUE per bot message
    $event->bankSource;        // 'clickuz'
});

// config/app.php
'aliases' => [
    'AlgorixPay' => \AlgorixPay\Facades\AlgorixPay::class,
],

use AlgorixPay\Facades\AlgorixPay;

$pending = AlgorixPay::expect(50_000)         // so'mda
    ->currency('UZS')
    ->forOrder($order)                         // Eloquent model, string ID, yoki array
    ->expiresInMinutes(15)
    ->create();

$pending->amountTiyin;   // 5_000_037 — to'liq summa (tiyin)
$pending->humanAmount;   // "50 000.37 so'm" — checkout sahifasida ko'rsating
$pending->expiresAt;     // ISO-8601 UTC
$pending->reference;     // log korrelyatsiya uchun

use AlgorixPay\Events\PaymentMatched;
use Illuminate\Support\Facades\Event;

Event::listen(function (PaymentMatched $event): void {
    $order = $event->pending->resolvePayable();    // Eloquent model qaytadi
    $order?->markPaid($event->payment->transactionId);

    // $event->pending  → PendingPayment (sizning expectation)
    // $event->payment  → ParsedPayment (bank xabaridan)
    // $event->bankMessageId, $event->bankSource
});

number_format($payment->amountTiyin / 100, 0, '.', ' ').' so\'m';

namespace App\Algorix;

use AlgorixPay\Drivers\AbstractRegexDriver;

final class AnorDriver extends AbstractRegexDriver
{
    public function __construct(string $source = 'anorbank_bot')
    {
        parent::__construct($source);
    }

    protected function incomingMarkers(): array
    {
        return ['hisobingizga', 'tushdi', 'зачислен'];
    }

    protected function amountPatterns(): array
    {
        return [
            '/([0-9][0-9 .,]*)\s*(?:so\'?m|sum|сум|UZS)\b/iu',
        ];
    }

    protected function transactionPatterns(): array
    {
        return [
            '/(?:tranzaksiya|транзакция)\s*[:#№]\s*([A-Za-z0-9][A-Za-z0-9\-]{4,})/iu',
        ];
    }
}

'drivers' => [
    'anor' => [
        'enabled' => true,
        'source' => 'anorbank_bot',
        'class' => \App\Algorix\AnorDriver::class,
    ],
],
bash
php artisan pay:listen