PHPackages                             enessvg/laravel-paynet - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. enessvg/laravel-paynet

ActiveLibrary[Payment Processing](/categories/payments)

enessvg/laravel-paynet
======================

Paynet Payment Gateway Laravel SDK

v2.0.2(2mo ago)216↓66.7%MITPHPPHP ^8.2

Since Feb 17Pushed 2mo agoCompare

[ Source](https://github.com/enessvg/laravel-paynet)[ Packagist](https://packagist.org/packages/enessvg/laravel-paynet)[ RSS](/packages/enessvg-laravel-paynet/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (8)Versions (9)Used By (0)

Laravel Paynet
==============

[](#laravel-paynet)

Paynet Payment Gateway için Laravel paketi. PHP 8.2+ ve Laravel 10/11/12 uyumlu.

Kurulum
-------

[](#kurulum)

```
composer require enessvg/laravel-paynet
```

Yapılandırma
------------

[](#yapılandırma)

Config dosyasını yayınlayın:

```
php artisan vendor:publish --tag=paynet-config
```

`.env` dosyanıza aşağıdaki değişkenleri ekleyin:

```
PAYNET_SECRET_KEY=your_secret_key_here
PAYNET_PUBLIC_KEY=your_public_key_here
PAYNET_IS_LIVE=false
PAYNET_TDS_RETURN_URL=https://your-domain.com/payment/callback
```

Kullanım
--------

[](#kullanım)

### Facade ile Kullanım

[](#facade-ile-kullanım)

```
use Paynet\Facades\Paynet;
use Paynet\DTOs\PaymentParams;
use Paynet\Support\PaynetTools;

// Direkt ödeme (3D Secure olmadan)
$params = new PaymentParams(
    amount: PaynetTools::formatWithDecimalSeparator(123.45),
    referenceNo: PaynetTools::generateReferenceNo('ORD-'),
    domain: 'www.acme.com',
    pan: '5400617004770430',
    month: '12',
    year: '25',
    cvc: '123',
    cardHolder: 'John Doe',
    instalment: 1,
);

$result = Paynet::payment($params);

if ($result->code === 0) {
    // Ödeme başarılı
    $transactionId = $result->xactId;
} else {
    // Hata
    $errorMessage = $result->bankErrorMessage ?? $result->message;
}
```

### Dependency Injection ile Kullanım

[](#dependency-injection-ile-kullanım)

```
use Paynet\PaynetClient;
use Paynet\DTOs\PaymentParams;

class PaymentController extends Controller
{
    public function __construct(
        private readonly PaynetClient $paynet
    ) {}

    public function processPayment(Request $request)
    {
        $params = new PaymentParams(
            amount: '123,45',
            referenceNo: PaynetTools::generateReferenceNo('ORD-'),
            domain: 'www.acme.com',
            pan: $request->card_number,
            month: $request->expire_month,
            year: $request->expire_year,
            cvc: $request->cvc,
            cardHolder: $request->card_holder,
        );

        return $this->paynet->payment($params);
    }
}
```

### 3D Secure Ödeme

[](#3d-secure-ödeme)

```
use Paynet\Facades\Paynet;
use Paynet\DTOs\TdsInitialParams;
use Paynet\DTOs\TdsChargeParams;
use Paynet\Enums\ResultCode;

// Adım 1: 3D Secure başlat
$params = new TdsInitialParams(
    amount: '123,45',
    referenceNo: PaynetTools::generateReferenceNo('ORD-'),
    domain: 'www.acme.com',
    returnUrl: config('paynet.tds_return_url'),
    pan: '5400617004770430',
    month: '12',
    year: '25',
    cvc: '123',
    cardHolder: 'John Doe',
);

$result = Paynet::tdsInitial($params);

if ($result->code === ResultCode::Successful) {
    // Session'a kaydet
    session(['paynet_session_id' => $result->sessionId]);
    session(['paynet_token_id' => $result->tokenId]);

    // 3D sayfasına yönlendir
    return redirect($result->postUrl);
}

// Adım 2: Callback'de ödemeyi onayla
public function callback(Request $request)
{
    $params = new TdsChargeParams(
        sessionId: $request->paynet_session_id,
        tokenId: $request->paynet_token_id,
    );

    $result = Paynet::tdsCharge($params);

    if ($result->isSucceed) {
        return view('payment.success', ['transaction' => $result]);
    }

    return view('payment.error', ['error' => $result->bankErrorMessage]);
}
```

### Taksit/Oran Sorgulama

[](#taksitoran-sorgulama)

```
use Paynet\Facades\Paynet;
use Paynet\DTOs\RatioParams;

$params = new RatioParams(
    amount: '1000,00',
    bin: '540061', // Kartın ilk 6 hanesi (opsiyonel)
);

$result = Paynet::getRatios($params);

if ($result->code === 0 && isset($result->banks)) {
    foreach ($result->banks as $bank) {
        echo "Banka: {$bank->bankName}\n";
        foreach ($bank->ratios as $ratio) {
            echo "  {$ratio->instalment} Taksit: %{$ratio->ratio}\n";
        }
    }
    // Veya HTML tablo olarak
    // echo $result->toHtmlTable();
} else {
    echo $result->message;
}
```

### İşlem Sorgulama

[](#i̇şlem-sorgulama)

```
use Paynet\Facades\Paynet;
use Paynet\DTOs\CheckTransactionParams;

$result = Paynet::checkTransaction(new CheckTransactionParams(
    xactId: '12345678',
));

// veya referans numarası ile
$result = Paynet::checkTransaction(new CheckTransactionParams(
    referenceNo: 'ORD-12345',
));

if ($result->isSucceed) {
    echo "İşlem durumu: Başarılı";
    echo "Tutar: {$result->amount}";
}
```

### Mail/SMS ile Ödeme Linki

[](#mailsms-ile-ödeme-linki)

```
use Paynet\Facades\Paynet;
use Paynet\DTOs\MailOrderParams;

$params = new MailOrderParams(
    amount: '500,00',
    nameSurname: 'Ahmet Yılmaz',
    userName: 'ahmet@example.com',
    email: 'ahmet@example.com',
    sendMail: true,
    phone: '05551234567',
    sendSms: true,
    expireDate: 24, // 24 saat geçerli
    succeedUrl: route('payment.success'),
    errorUrl: route('payment.error'),
);

$result = Paynet::createMailOrder($params);

if ($result->isSuccessful()) {
    $paymentUrl = $result->url;
}
```

### Paynet JS Widget ile Kullanım (v1)

[](#paynet-js-widget-ile-kullanım-v1)

```
// Blade view

    @csrf

// Controller
use Paynet\Facades\Paynet;
use Paynet\DTOs\ChargeParams;
use Paynet\Support\PaynetTools;

public function charge(Request $request)
{
    $params = new ChargeParams(
        sessionId: $request->session_id,
        tokenId: $request->token_id,
        amount: (string) PaynetTools::formatWithoutDecimalSeparator(session('amount')),
    );

    $result = Paynet::charge($params);

    if ($result->isSucceed) {
        return redirect()->route('payment.success');
    }

    return back()->withErrors(['payment' => $result->bankErrorMessage]);
}
```

### Kart Saklama

[](#kart-saklama)

#### saveCard

[](#savecard)

```
use Paynet\Facades\Paynet;
use Paynet\DTOs\SaveCardParams;

$response = Paynet::saveCard(new SaveCardParams(
    cardDesc: 'Kisisel Kartim',
    cardHolder: 'John Doe',
    cardNumber: '4355080000000000',
    expireMonth: '12',
    expireYear: '30',
    cvv: '123',
    userUniqueId: 'user-123',
));

$data = $response->json();

if (($data['code'] ?? 1) === 0) {
    $cardOwnerId = $data['card_owner_id'] ?? null;
}
```

#### listCards

[](#listcards)

```
use Paynet\Facades\Paynet;
use Paynet\DTOs\CardListParams;

$response = Paynet::listCards(new CardListParams(
    cardOwnerId: 'abc45adc20-91ba-4a29-a599-0eb18177247e',
    limit: 10,
));

$data = $response->json();

if (($data['code'] ?? 1) === 0) {
    $cards = $data['Data'] ?? [];
}
```

#### updateCardDescription

[](#updatecarddescription)

```
use Paynet\Facades\Paynet;
use Paynet\DTOs\CardDescUpdateParams;

$response = Paynet::updateCardDescription(new CardDescUpdateParams(
    cardOwnerId: 'abc45adc20-91ba-4a29-a599-0eb18177247e',
    cardHash: 'abcdef-8014-435e-8bcc-daf4592f3431',
    cardDesc: 'Yeni Kart Aciklamasi',
));

$data = $response->json();

if (($data['code'] ?? 1) === 0) {
    $message = $data['message'] ?? 'Basarili Islem';
}
```

#### deleteCard

[](#deletecard)

```
use Paynet\Facades\Paynet;
use Paynet\DTOs\DeleteCardParams;

$response = Paynet::deleteCard(new DeleteCardParams(
    cardOwnerId: 'abc45adc20-91ba-4a29-a599-0eb18177247e',
    cardHash: 'abcdef-8014-435e-8bcc-daf4592f3431',
));

$data = $response->json();

if (($data['code'] ?? 1) === 0) {
    $message = $data['message'] ?? 'Basarili Islem';
}
```

#### Saklı Kart - OTP Gönderme

[](#saklı-kart---otp-gönderme)

```
$params = new SavedCardOtpParams(
    userGsm: '...',
    otpSessionId: '...'
);

$response = Paynet::sendOtpForSavedCard($params);

$data = $response->json();

if (($data['code'] ?? 1) === 0) {
    $message = $data['message'] ?? 'Basarili Islem';
}
```

#### Saklı Kart - OTP Kontrol

[](#saklı-kart---otp-kontrol)

```
$params = new SavedCardOtpCheckParams(
    userGsm: '...',
    otpSessionId: '...',
    otpCode: '...'
)

$response = Paynet::checkOtpForSavedCard($params);

$data = $response->json();

if (($data['code'] ?? 1) === 0) {
    $message = $data['message'] ?? 'Basarili Islem';
}
```

Yardımcı Fonksiyonlar
---------------------

[](#yardımcı-fonksiyonlar)

```
use Paynet\Support\PaynetTools;

// Tutar formatlama
$formatted = PaynetTools::formatWithDecimalSeparator(123.45); // "123,45"
$cents = PaynetTools::formatWithoutDecimalSeparator(123.45);  // 12345

// Kart doğrulama
$isValid = PaynetTools::validateCardNumber('5400617004770430'); // true
$isValidExpiry = PaynetTools::validateExpiryDate('12', '25');   // true
$isValidCvc = PaynetTools::validateCvc('123');                  // true

// Kart maskeleme
$masked = PaynetTools::maskCardNumber('5400617004770430'); // "540061******0430"

// BIN numarası
$bin = PaynetTools::getCardBin('5400617004770430'); // "540061"

// Benzersiz referans numarası
$refNo = PaynetTools::generateReferenceNo('ORD-'); // "ORD-17082532451234"
```

Enum Kullanımı
--------------

[](#enum-kullanımı)

```
use Paynet\Enums\ResultCode;
use Paynet\Enums\TransactionType;

// Sonuç kodu kontrolü
if ($result->code === ResultCode::Successful) {
    // Başarılı
}

// Açıklama alma
$description = ResultCode::Successful->description(); // "İşlem başarılı"

// İşlem tipi
$params->transactionType = TransactionType::Sale;     // Satış
$params->transactionType = TransactionType::Refund;   // İade
```

Hata Yönetimi
-------------

[](#hata-yönetimi)

```
use Paynet\Exceptions\PaynetException;

try {
    $result = Paynet::payment($params);
} catch (PaynetException $e) {
    // Bağlantı veya yapılandırma hatası
    Log::error('Paynet Error: ' . $e->getMessage(), [
        'result_code' => $e->resultCode?->value,
        'bank_error' => $e->bankErrorMessage,
    ]);
}
```

Test Kartları
-------------

[](#test-kartları)

Altta ki linkten detaylı bir şekilde ulaşabilirsiniz

Lisans
------

[](#lisans)

MIT

###  Health Score

41

—

FairBetter than 89% of packages

Maintenance84

Actively maintained with recent releases

Popularity10

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

8

Last Release

82d ago

Major Versions

v1.0.4 → v2.0.02026-02-24

### Community

Maintainers

![](https://www.gravatar.com/avatar/b68f9696f9300f9c28cdbaaa2976a14cf5682074b878c5f2bf566bc952da80fc?d=identicon)[enessvg](/maintainers/enessvg)

---

Top Contributors

[![enessvg](https://avatars.githubusercontent.com/u/133034948?v=4)](https://github.com/enessvg "enessvg (14 commits)")

---

Tags

laravelpaymentgatewayposcredit-cardpaynet

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/enessvg-laravel-paynet/health.svg)

```
[![Health](https://phpackages.com/badges/enessvg-laravel-paynet/health.svg)](https://phpackages.com/packages/enessvg-laravel-paynet)
```

###  Alternatives

[sebdesign/laravel-viva-payments

A Laravel package for integrating the Viva Payments gateway

4845.9k](/packages/sebdesign-laravel-viva-payments)[omalizadeh/laravel-multi-payment

A driver-based laravel package for online payments via multiple gateways

491.1k](/packages/omalizadeh-laravel-multi-payment)[henryejemuta/laravel-monnify

A laravel package to seamlessly integrate monnify api within your laravel application

132.1k](/packages/henryejemuta-laravel-monnify)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
