PHP code example of yakupeyisan / codeigniter4-tr-virtualpos

1. Go to this page and download the library: Download yakupeyisan/codeigniter4-tr-virtualpos 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/ */

    

yakupeyisan / codeigniter4-tr-virtualpos example snippets


use Yakupeyisan\CodeIgniter4\VirtualPos\VirtualPos;
use Yakupeyisan\CodeIgniter4\VirtualPos\Models\PaymentRequest;

// VirtualPos instance oluştur (varsayılan hesap ile)
$virtualPos = new VirtualPos();

// Ödeme isteği oluştur
$request = new PaymentRequest(
    orderId: 'ORDER-' . time(),
    amount: 100.00,
    cardNumber: '5406670000000001',
    cardHolderName: 'John Doe',
    cardExpiryMonth: '12',
    cardExpiryYear: '25',
    cardCvv: '123'
);

// Müşteri bilgileri
$request->setCustomer(
    name: 'John Doe',
    email: '[email protected]',
    phone: '5551234567'
);

// Fatura adresi
$request->setBillingAddress(
    address: 'Test Mahallesi, Test Sokak No:1',
    city: 'İstanbul',
    country: 'TR',
    zipCode: '34000'
);

// 3D Secure ödeme başlat
$response = $virtualPos->pay3D($request);

if ($response->status === 'pending') {
    // HTML içeriği göster (3D Secure formu)
    echo $response->htmlContent;
}

use Yakupeyisan\CodeIgniter4\VirtualPos\VirtualPos;

$virtualPos = new VirtualPos();

// Callback verilerini al
$callbackData = $this->request->getPost();

// Callback'i işle
$response = $virtualPos->handleCallback($callbackData);

if ($response->success) {
    // Ödeme başarılı
    echo "Ödeme başarılı! Transaction ID: " . $response->transactionId;
} else {
    // Ödeme başarısız
    echo "Ödeme başarısız: " . $response->errorMessage;
}

$response = $virtualPos->status('ORDER-1234567890');

if ($response->success) {
    echo "Ödeme durumu: " . $response->status;
}

$response = $virtualPos->cancel('ORDER-1234567890');

if ($response->success) {
    echo "İptal işlemi başarılı";
}

$response = $virtualPos->refund(
    orderId: 'ORDER-1234567890',
    amount: 50.00,
    transactionId: 'TXN-1234567890'
);

if ($response->success) {
    echo "İade işlemi başarılı";
}

$installments = $virtualPos->getInstallments(1000.00);

foreach ($installments as $installment) {
    echo "Taksit: " . $installment['installment'] . " - Faiz: " . $installment['interest'];
}

// app/Config/VirtualPos.php
public array $get724 = [
    'defaultAccount' => 'ziraat_a',
    'accounts' => [
        'ziraat_a' => [
            'clientId' => 'ziraat_a_client_id',
            'storeKey' => 'ziraat_a_store_key',
            'storeType' => '3d',
            'bank' => 'ziraat',
        ],
        'ziraat_b' => [
            'clientId' => 'ziraat_b_client_id',
            'storeKey' => 'ziraat_b_store_key',
            'storeType' => '3d',
            'bank' => 'ziraat',
        ],
    ],
];

// Ziraat A hesabı ile (varsayılan)
$virtualPos = new VirtualPos();
$response = $virtualPos->pay3D($request);

// Ziraat B hesabı ile
$virtualPos = new VirtualPos(null, 'ziraat_b');
$response = $virtualPos->pay3D($request);

// veya withAccount metodu ile
$virtualPos = new VirtualPos();
$virtualPosZiraatB = $virtualPos->withAccount('ziraat_b');
$response = $virtualPosZiraatB->pay3D($request);



namespace App\Controllers;

use Yakupeyisan\CodeIgniter4\VirtualPos\VirtualPos;
use Yakupeyisan\CodeIgniter4\VirtualPos\Models\PaymentRequest;

class Payment extends BaseController
{
    public function pay()
    {
        $virtualPos = new VirtualPos();
        
        $request = new PaymentRequest(
            orderId: 'ORDER-' . time(),
            amount: 100.00,
            cardNumber: $this->request->getPost('card_number'),
            cardHolderName: $this->request->getPost('card_holder_name'),
            cardExpiryMonth: $this->request->getPost('card_expiry_month'),
            cardExpiryYear: $this->request->getPost('card_expiry_year'),
            cardCvv: $this->request->getPost('card_cvv')
        );
        
        $request->setCustomer(
            name: $this->request->getPost('customer_name'),
            email: $this->request->getPost('customer_email'),
            phone: $this->request->getPost('customer_phone')
        );
        
        $response = $virtualPos->pay3D($request);
        
        if ($response->status === 'pending') {
            return view('payment_form', ['htmlContent' => $response->htmlContent]);
        }
        
        return redirect()->back()->with('error', $response->errorMessage);
    }
    
    public function callback()
    {
        $virtualPos = new VirtualPos();
        $response = $virtualPos->handleCallback($this->request->getPost());
        
        if ($response->success) {
            // Ödeme başarılı - veritabanına kaydet
            return redirect()->to('/payment/success');
        }
        
        return redirect()->to('/payment/fail');
    }
}

use Yakupeyisan\CodeIgniter4\VirtualPos\Exceptions\PaymentException;
use Yakupeyisan\CodeIgniter4\VirtualPos\Exceptions\ConfigurationException;

try {
    $response = $virtualPos->pay3D($request);
} catch (ConfigurationException $e) {
    // Yapılandırma hatası
    log_message('error', 'VirtualPos Config Error: ' . $e->getMessage());
} catch (PaymentException $e) {
    // Ödeme hatası
    log_message('error', 'VirtualPos Payment Error: ' . $e->getMessage());
    log_message('error', 'Error Code: ' . $e->getErrorCode());
}
bash
cp vendor/yakupeyisan/codeigniter4-tr-virtualpos/src/Config/VirtualPos.php app/Config/VirtualPos.php