voxyfy/anadolupay

Unified Laravel 12 payment gateway abstraction for Turkish providers.

Maintainers

Package info

github.com/Voxyfy/anadolupay

pkg:composer/voxyfy/anadolupay

Fund package maintenance!

:vendor_name

Statistics

Installs: 4

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.0 2026-01-18 13:40 UTC

This package is not auto-updated.

Last update: 2026-03-02 12:47:25 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

AnadoluPay is a Laravel payment abstraction layer for Turkish payment providers. It orchestrates payment flows and normalizes responses, while leaving UI rendering and final business decisions to the consuming application.

Gereksinimler

  • PHP 8.2 veya üzeri
  • Laravel 12.x

Kurulum

composer require voxyfy/anadolupay

Laravel auto-discovery varsayılan olarak aktiftir; ek bir adım gerekmez.

Konfigürasyon dosyasını yayınlamak isterseniz:

php artisan vendor:publish --tag="anadolupay-config"

Yapılandırma

Iyzico 3DS için gerekli ortam değişkenleri:

IYZICO_API_KEY=xxx
IYZICO_SECRET_KEY=xxx
IYZICO_BASE_URL=https://sandbox-api.iyzipay.com
IYZICO_CALLBACK_URL=https://example.com/anadolupay/callback/iyzico

Notlar:

  • IYZICO_BASE_URL sandbox veya production host olabilir.
  • IYZICO_CALLBACK_URL dışarıdan erişilebilir olmalıdır.

3DS Ödeme Başlatma (iyzico)

Akış özeti:

  • Uygulama createPayment(...) ile 3DS başlatma isteği yapar.
  • Iyzico threeDSHtmlContent döner (base64 HTML).
  • Uygulama bu HTML'i decode edip kullanıcıya render eder.
  • 3DS tamamlanınca callback URL'inize yönlendirme yapılır.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Voxyfy\AnadoluPay\DTO\CreatePaymentData;
use Voxyfy\AnadoluPay\Facades\AnadoluPay;

class PaymentController extends Controller
{
    public function pay(Request $request)
    {
        $data = new CreatePaymentData(
            amount: 100.00,
            currency: 'TRY',
            orderId: 'SIPARIS-123',
            customer: [
                'name' => 'Ahmet Yilmaz',
                'email' => 'ahmet@example.com',
                'phone' => '+905551112233',
                'card' => [
                    'cardHolderName' => 'Ahmet Yilmaz',
                    'cardNumber' => '5528790000000008',
                    'expireYear' => '2030',
                    'expireMonth' => '12',
                    'cvc' => '123',
                ],
            ],
            successUrl: 'https://example.com/success',
            failUrl: 'https://example.com/fail',
        );

        $response = AnadoluPay::driver('iyzico')->createPayment($data);

        $threeDsHtml = $response->raw['threeDSHtmlContent'] ?? null;

        return response()->json([
            'threeDSHtmlContent' => $threeDsHtml,
        ]);
    }
}

threeDSHtmlContent Render Etme

threeDSHtmlContent base64-encoded bir HTML dokümanıdır, bir URL değildir. AnadoluPay bunu render etmez veya decode etmez; bu sorumluluk uygulamanızdadır.

$response = AnadoluPay::driver('iyzico')->createPayment($data);

$html = base64_decode($response->raw['threeDSHtmlContent']);

return response($html);

Callback ve Webhook Doğrulama

  • Iyzico redirect callback'inde status, paymentId, conversationData, mdStatus alanları gelir.
  • Gateway bu payload'u doğrular, ardından 3DS auth çağrısını yapar ve sonucu normalize eder.
  • Webhook bildirimleri için de verify(...) çağrısı aynı şekilde çalışır.
  • İmza doğrulaması etkinse imza yoksa veya eşleşmezse InvalidSignatureException fırlatılır.
  • İmza doğrulaması ayarı: IYZICO_VALIDATE_SIGNATURE (lokalde false yapılabilir).

AnadoluPay yalnızca doğrulama ve normalizasyon yapar. Sipariş onayı, stok düşme, fatura kesme gibi iş kuralları uygulama tarafında yönetilmelidir.

Basit bir callback örneği:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Voxyfy\AnadoluPay\DTO\VerifyPaymentData;
use Voxyfy\AnadoluPay\Facades\AnadoluPay;

class IyzicoCallbackController extends Controller
{
    public function handle(Request $request)
    {
        $result = AnadoluPay::driver('iyzico')->verify(new VerifyPaymentData(
            payload: $request->all(),
            headers: $request->headers->all(),
            rawBody: $request->getContent(),
        ));

        return response()->json([
            'success' => $result->success,
            'status' => $result->status,
            'paymentId' => $result->paymentId,
        ]);
    }
}

Testler

composer test

Değişiklik Günlüğü

Son değişiklikler hakkında daha fazla bilgi için CHANGELOG dosyasına bakın.

Katkıda Bulunma

Katkılarınızı bekliyoruz! Detaylar için CONTRIBUTING dosyasına bakın.

Güvenlik Açıkları

Bir güvenlik açığı keşfederseniz, lütfen security@voxyfy.com adresine e-posta gönderin.

Lisans

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