PHPackages                             hasokeyk/paytr-php - 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. hasokeyk/paytr-php

ActiveLibrary[Payment Processing](/categories/payments)

hasokeyk/paytr-php
==================

PayTR PHP Library

1.0.1(6mo ago)00MITPHP

Since Nov 13Pushed 6mo agoCompare

[ Source](https://github.com/Hasokeyk/paytr-php)[ Packagist](https://packagist.org/packages/hasokeyk/paytr-php)[ RSS](/packages/hasokeyk-paytr-php/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

PayTR PHP Kütüphanesi
=====================

[](#paytr-php-kütüphanesi)

Bu kütüphane, PayTR ödeme sistemini PHP uygulamalarınıza kolayca entegre etmenizi sağlar. Iframe, Direkt Ödeme, BIN Sorgulama ve Callback işlemleri gibi temel PayTR özelliklerini destekler.

Kurulum
-------

[](#kurulum)

Kütüphaneyi projenize Composer ile ekleyebilirsiniz:

```
composer require hasokeyk/paytr-php
```

Kullanım
--------

[](#kullanım)

### 1. PayTR Bilgilerini Yapılandırma

[](#1-paytr-bilgilerini-yapılandırma)

Öncelikle PayTR mağaza bilgileriniz olan `merchant_id`, `merchant_key` ve `merchant_salt` değerlerini ayarlamanız gerekmektedir. Bu bilgileri PayTR panelinizden edinebilirsiniz.

```
require_once __DIR__.'/vendor/autoload.php';

use Paytr\Paytr;
use Paytr\PaytrFactory;

$merchant_id   = 'XXXXXX'; // PayTR Mağaza ID'niz
$merchant_key  = 'YYYYYYYYYYYYYY'; // PayTR Mağaza Anahtarınız
$merchant_salt = 'ZZZZZZZZZZZZZZ'; // PayTR Mağaza Parolanız

$paytr = new Paytr($merchant_id, $merchant_key, $merchant_salt);

// Test modunu aktif etmek için (isteğe bağlı)
// $paytr->set_test_mode(true);
```

### 2. Iframe Ödeme

[](#2-iframe-ödeme)

Iframe ödeme yöntemi ile müşterilerinizi PayTR ödeme sayfasına yönlendirmeden, kendi siteniz içerisinde ödeme alabilirsiniz.

```
// ... yukarıdaki yapılandırma kodları ...

$payment = PaytrFactory::create('iframe', $paytr);

$data = [
    'user_ip'           => $_SERVER['REMOTE_ADDR'], // Müşterinin IP adresi
    'merchant_oid'      => 'SIPARIS_'.time(), // Sipariş ID'si (her sipariş için benzersiz olmalı)
    'email'             => 'test@example.com', // Müşterinin e-posta adresi
    'payment_amount'    => 100, // Ödenecek tutar (kuruş cinsinden, örn: 1 TL için 100)
    'currency'          => 'TRY', // Para birimi
    'user_basket'       => base64_encode(json_encode([ // Sepet bilgileri
                                                   ['Ürün 1', '10.00', 1],
                                                   ['Ürün 2', '90.00', 1],
    ])),
    'user_name'         => 'Test Kullanıcı', // Müşterinin adı
    'user_address'      => 'Test Adres Mah. Test Cad. No:1 Test İlçe/Test İl', // Müşterinin adresi
    'user_phone'        => '05XXXXXXXXX', // Müşterinin telefonu
    'merchant_ok_url'   => 'http://localhost/callback.php', // Başarılı ödeme sonrası yönlendirilecek sayfa URL'si
    'merchant_fail_url' => 'http://localhost/callback.php', // Başarısız ödeme sonrası yönlendirilecek sayfa URL'si
    'debug_on'          => 1, // Hata ayıklama modu (0 veya 1)
    'lang'              => 'tr', // Dil (tr veya en)
    // Diğer opsiyonel parametreler PayTR dokümantasyonunda bulunabilir.
];

$iframe_html = $payment->run($data);

echo $iframe_html; // Bu HTML kodunu sayfanızda bir div içine yerleştirin
```

### 3. Direkt Ödeme (Kart Bilgileri ile)

[](#3-direkt-ödeme-kart-bilgileri-ile)

Müşteriden kart bilgilerini alarak doğrudan ödeme yapmak için kullanılır. 3D Secure yönlendirmesi gerekebilir.

```
// ... yukarıdaki yapılandırma kodları ...

$payment = PaytrFactory::create('direct', $paytr);

$data = [
    'user_ip'           => $_SERVER['REMOTE_ADDR'],
    'merchant_oid'      => 'SIPARIS_'.time(),
    'email'             => 'test@example.com',
    'payment_amount'    => 100,
    'currency'          => 'TRY',
    'user_basket'       => base64_encode(json_encode([
                                                   ['Ürün 1', '10.00', 1],
    ])),
    'user_name'         => 'Test Kullanıcı',
    'user_address'      => 'Test Adres',
    'user_phone'        => '05XXXXXXXXX',
    'merchant_ok_url'   => 'http://localhost/callback.php',
    'merchant_fail_url' => 'http://localhost/callback.php',
    'debug_on'          => 1,
    'lang'              => 'tr',

    // Kart bilgileri (test modu aktif değilse gerçek kart bilgileri girilmelidir)
    'cc_owner'          => 'KART SAHIBI ADI',
    'card_number'       => 'XXXXXXXXXXXXXXXX', // Kart Numarası
    'expiry_month'      => 'AA', // Son Kullanma Ayı (örn: 01)
    'expiry_year'       => 'YY', // Son Kullanma Yılı (örn: 29)
    'cvv'               => 'XXX', // CVV Kodu
];

$result = $payment->run($data);

// 3D Secure kontrolü
$html_3d = $payment->handle_3d_secure($result);

if ($html_3d) {
    echo $html_3d; // 3D Secure sayfasına yönlendirme için HTML
} elseif ($result['status'] == 'success') {
    echo 'Ödeme başarılı! Sipariş ID: ' . $result['merchant_oid'];
    // Siparişinizi onaylayın
} else {
    echo 'Ödeme başarısız: ' . $result['reason'];
    // Siparişinizi iptal edin
}
```

### 4. PayTR Callback (Geri Bildirim) İşlemleri

[](#4-paytr-callback-geri-bildirim-i̇şlemleri)

PayTR, ödeme tamamlandığında (başarılı veya başarısız) `merchant_ok_url` veya `merchant_fail_url` olarak belirttiğiniz adrese bir POST isteği gönderir. Bu isteği işlemek için aşağıdaki gibi bir `callback.php` dosyası oluşturabilirsiniz:

```
// ... yukarıdaki yapılandırma kodları ...

// Direkt API callback'i için
$direct_payment = PaytrFactory::create('direct', $paytr);
$callback_data = $direct_payment->handle_callback($_POST);

// Eğer Direkt API callback değilse, diğer yöntemleri deneyin
if (!$callback_data) {
    $link_payment = PaytrFactory::create('link', $paytr);
    $callback_data = $link_payment->handle_callback($_POST);
}

if (!$callback_data) {
    $iframe_payment = PaytrFactory::create('iframe', $paytr);
    $callback_data = $iframe_payment->handle_callback($_POST);
}

if (!$callback_data) {
    $bank_transfer_iframe_payment = $paytr->bank_transfer_iframe();
    $callback_data = $bank_transfer_iframe_payment->handle_callback($_POST);
}

if (!$callback_data) {
    die('OK'); // Geçersiz callback veya hash doğrulaması başarısız
}

if ($callback_data['status'] == 'success') {
    // Ödeme başarılı
    // merchant_oid: $callback_data['merchant_oid']
    // Ödeme tutarı: $callback_data['payment_amount']
    // Siparişinizi onaylayın, veritabanınızı güncelleyin vb.
    echo 'Ödeme başarılı. Sipariş ID: ' . $callback_data['merchant_oid'];
} else {
    // Ödeme başarısız
    // merchant_oid: $callback_data['merchant_oid']
    // Hata nedeni: $callback_data['failed_reason_msg']
    // Siparişinizi iptal edin veya başarısız olarak işaretleyin.
    echo 'Ödeme başarısız. Sipariş ID: ' . $callback_data['merchant_oid'] . ' Neden: ' . $callback_data['failed_reason_msg'];
}

// PayTR'a callback'in alındığını bildirmek için "OK" çıktısı gönderin
echo 'OK';
```

### 5. BIN Sorgulama

[](#5-bin-sorgulama)

Kartın BIN numarasına göre banka ve kart bilgilerini sorgulamak için kullanılır.

```
// ... yukarıdaki yapılandırma kodları ...

$bin_number = '545616'; // Sorgulanacak BIN numarası

$result = $paytr->bin_lookup($bin_number);

if ($result['status'] == 'success') {
    echo 'BIN sorgulama başarılı: ' . print_r($result, true) . '';
} else {
    echo 'BIN sorgulama başarısız: ' . $result['reason'];
}
```

Dokümantasyon
-------------

[](#dokümantasyon)

Bu kütüphanenin kullanımı için en iyi kaynak, bu README dosyasındaki örnekler ve `examples` klasöründeki detaylı örnek dosyalardır. PayTR API'si hakkında daha fazla bilgi için [PayTR Geliştirici Dokümantasyonu](https://www.paytr.com/entegrasyon/php-api) adresini ziyaret edebilirsiniz.

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance68

Regular maintenance activity

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

 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

Unknown

Total

1

Last Release

186d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9233d07f62445c2737c5f65145dae2195e462b685cfd79490ff6039359308443?d=identicon)[hasokeyk](/maintainers/hasokeyk)

---

Top Contributors

[![Hasokeyk](https://avatars.githubusercontent.com/u/5509767?v=4)](https://github.com/Hasokeyk "Hasokeyk (3 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/hasokeyk-paytr-php/health.svg)

```
[![Health](https://phpackages.com/badges/hasokeyk-paytr-php/health.svg)](https://phpackages.com/packages/hasokeyk-paytr-php)
```

###  Alternatives

[omnipay/paypal

PayPal gateway for Omnipay payment processing library

3156.8M53](/packages/omnipay-paypal)[eduardokum/laravel-boleto

Biblioteca com boletos para o laravel

626351.9k2](/packages/eduardokum-laravel-boleto)[tbbc/money-bundle

This is a Symfony bundle that integrates moneyphp/money library (Fowler pattern): https://github.com/moneyphp/money.

1961.9M](/packages/tbbc-money-bundle)[2checkout/2checkout-php

2Checkout PHP Library

83740.3k2](/packages/2checkout-2checkout-php)[smhg/sepa-qr-data

Generate QR code data for SEPA payments

61717.2k5](/packages/smhg-sepa-qr-data)[omnipay/dummy

Dummy driver for the Omnipay payment processing library

271.2M33](/packages/omnipay-dummy)

PHPackages © 2026

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