w3/yapikredi-pos

Yapı Kredi Bank Virtual POS Integration for PHP

Installs: 3

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/w3/yapikredi-pos

dev-master 2025-06-18 20:38 UTC

This package is auto-updated.

Last update: 2025-12-18 21:38:30 UTC


README

Bu paket, Yapı Kredi Bankası'nın Sanal POS sistemi ile kolay kullanımlı bir entegrasyon sağlar ve entegrasyon dokümantasyonunda belirtildiği gibi 3D Secure 2.1 protokolünü uygular.

Kurulum

Paketi composer aracılığıyla kurabilirsiniz:

composer require w3/yapikredi-pos

Kullanım

Temel Yapılandırma

use W3\YapiKrediPos\YapiKrediPos;

// Yapı Kredi POS istemcisini başlatın
$pos = new YapiKrediPos(
    'YOUR_MERCHANT_ID',    // Yapı Kredi Bankası tarafından sağlanan Üye İşyeri ID
    'YOUR_TERMINAL_ID',    // Yapı Kredi Bankası tarafından sağlanan Terminal ID
    'YOUR_POSNET_ID',      // Yapı Kredi Bankası tarafından sağlanan POS Net ID
    'YOUR_MERCHANT_KEY',   // Güvenli iletişim için üye işyeri anahtarı
    'test'                 // Ortam: 'test' veya 'production'
);

Laravel Entegrasyonu

Bu paket Laravel entegrasyonu ile birlikte gelir. Paketi kurduktan sonra, yapılandırma dosyasını yayınlayın:

php artisan vendor:publish --provider="W3\YapiKrediPos\Laravel\YapiKrediPosServiceProvider" --tag="config"

Bu, Laravel uygulamanızda bir config/yapikredi-pos.php dosyası oluşturacaktır. .env dosyanızda aşağıdaki ortam değişkenlerini ayarlayarak paketi yapılandırabilirsiniz:

YAPIKREDI_MERCHANT_ID=your_merchant_id
YAPIKREDI_TERMINAL_ID=your_terminal_id
YAPIKREDI_POSNET_ID=your_posnet_id
YAPIKREDI_MERCHANT_KEY=your_merchant_key
YAPIKREDI_ENVIRONMENT=test

Daha sonra paketi Laravel uygulamanızda kullanabilirsiniz:

// Bağımlılık enjeksiyonu kullanarak
public function checkout(YapiKrediPos $pos)
{
    // $pos örneğini kullanın
}

// Facade kullanarak
use YapiKrediPos;

public function checkout()
{
    $response = YapiKrediPos::threeDSecureAuth()
        ->setOrderId(uniqid('order_'))
        // ... diğer parametreler
        ->send();
}

// Servis konteyneri kullanarak
$pos = app('yapikredi-pos');

3D Secure Ödeme Akışı

Adım 1: 3D Secure Kimlik Doğrulamasını Başlatın

// Bu işlem için benzersiz bir sipariş ID'si oluşturun
$orderId = uniqid('order_');

// 3D Secure kimlik doğrulamasını başlatın
$response = $pos->threeDSecureAuth()
    ->setOrderId($orderId)
    ->setCardNumber('4506349116608409')  // Test kart numarası
    ->setExpiryMonth('12')
    ->setExpiryYear('30')
    ->setCvv('000')
    ->setAmount(100.50)                  // TL cinsinden tutar
    ->setCurrency('TL')                  // Para birimi kodu
    ->setInstallment(0)                  // 0 tek ödeme için, veya taksit sayısı
    ->setReturnUrl('https://your-website.com/payment/callback')
    ->send();

// Kimlik doğrulama isteğinin başarılı olup olmadığını kontrol edin
if ($response->isSuccessful()) {
    // Sipariş ID'sini daha sonra kullanmak üzere oturumda veya veritabanında saklayın
    $_SESSION['order_id'] = $orderId;

    // 3D Secure yönlendirmesi için HTML formunu alın
    echo $response->getRedirectForm('Ödemeye Devam Et');

    // Veya formu manuel olarak oluşturabilirsiniz:
    // echo '<form method="POST" action="' . $response->getFormAction() . '">';
    // echo '<input type="hidden" name="data" value="' . $response->getFormData() . '">';
    // echo '<button type="submit">Ödemeye Devam Et</button>';
    // echo '</form>';
} else {
    // Kimlik doğrulama hatasını işleyin
    echo 'Hata: ' . $response->getErrorMessage();
}

Adım 2: 3D Secure Geri Dönüşünü İşleyin

// Geri dönüş URL işleyicinizde:

// Bankanın yanıtından 3D Secure verilerini alın
$threeDSecureData = $_POST['data'] ?? '';

// Sipariş ID'sini oturumdan veya veritabanından alın
$orderId = $_SESSION['order_id'] ?? '';

// Ödemeyi tamamlayın
try {
    $response = $pos->threeDSecurePayment()
        ->setOrderId($orderId)
        ->setThreeDSecureData($threeDSecureData)
        ->setAmount(100.50)              // Kimlik doğrulamada kullanılan tutarla eşleşmelidir
        ->setCurrency('TL')              // Kimlik doğrulamada kullanılan para birimiyle eşleşmelidir
        ->setInstallment(0)              // Kimlik doğrulamada kullanılan taksit sayısıyla eşleşmelidir
        ->send();

    // Ödemenin başarılı olup olmadığını kontrol edin
    if ($response->isSuccessful()) {
        // Ödeme başarılı
        echo 'Ödeme başarılı!';
        echo 'İşlem ID: ' . $response->getTransactionId();
        echo 'Yetkilendirme Kodu: ' . $response->getAuthCode();
    } else {
        // Ödeme başarısız
        echo 'Ödeme başarısız: ' . $response->getErrorMessage();
    }
} catch (\W3\YapiKrediPos\Exception\PaymentException $e) {
    // Ödeme istisnasını işleyin
    echo 'Ödeme hatası: ' . $e->getMessage();
    echo 'Hata kodu: ' . $e->getErrorCode();
} catch (\W3\YapiKrediPos\Exception\ConnectionException $e) {
    // Bağlantı istisnasını işleyin
    echo 'Bağlantı hatası: ' . $e->getMessage();
} catch (\W3\YapiKrediPos\Exception\ValidationException $e) {
    // Doğrulama istisnasını işleyin
    echo 'Doğrulama hatası: ' . $e->getMessage();
}

Hata Yönetimi

Paket, farklı hata senaryoları için farklı türde istisnalar fırlatır:

  • ValidationException: İstek parametreleri geçersiz olduğunda fırlatılır
  • ConnectionException: Yapı Kredi POS API'sine bağlanırken bir hata olduğunda fırlatılır
  • PaymentException: Ödeme reddedildiğinde veya başarısız olduğunda fırlatılır
  • YapiKrediPosException: Diğer tüm hatalar için temel istisna sınıfı

Özellikler

  • Yapı Kredi Bankası'nın POSNET sistemi ile 3D Secure 2.1 entegrasyonu
  • Hem 3D hem de 3D olmayan işlemler için destek
  • Kolay yapılandırma ve kurulum
  • Kapsamlı hata yönetimi
  • Laravel ve diğer PHP çerçeveleriyle uyumlu

Gereksinimler

  • PHP 7.4 veya daha yüksek
  • ext-curl
  • ext-json
  • ext-simplexml

Lisans

MIT Lisansı (MIT). Daha fazla bilgi için lütfen Lisans Dosyasına bakın.

Katkıda Bulunanlar