1. Go to this page and download the library: Download furkanmeclis/laravel-paytr 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/ */
furkanmeclis / laravel-paytr example snippets
use FurkanMeclis\Paytr\Payment;
use FurkanMeclis\Paytr\Enums\TransactionType;
use FurkanMeclis\Paytr\Request\Basket;
use FurkanMeclis\Paytr\Request\Order;
use FurkanMeclis\Paytr\Request\Product;
public function startPayment()
{
// 1. Ödeme nesnesini Service Container veya `new` ile oluşturun
$payment = app(Payment::class); // veya new Payment(config('paytr.credentials'), config('paytr.options'));
// 2. İşlem tipini ve diğer seçenekleri belirleyin
$payment->getOption()
->setTransactionType(TransactionType::IFRAME)
->setTestMode(true); // .env'deki ayarı geçersiz kılar
// 3. Sepeti ve ürünleri oluşturun
$basket = new Basket();
$product1 = (new Product())->setName('T-Shirt')->setPrice(100);
$product2 = (new Product())->setName('Mug')->setPrice(50.50);
$basket->addProduct($product1, 1); // 1 adet T-Shirt
$basket->addProduct($product2, 2); // 2 adet Mug
// 4. Sipariş ve kullanıcı bilgilerini ayarlayın
$order = new Order();
$order->setUserName('Furkan Meclis')
->setUserAddress('Test Adres, No: 1, Daire: 2, İstanbul')
->setEmail('[email protected]')
->setUserPhone('5551234567')
->setUserIp(request()->ip())
->setMerchantOrderId('SIPARIS' . time())
->setPaymentAmount(201.00) // Sepet toplamı ile aynı olmalı: 100 + (50.50 * 2)
->setBasket($basket);
// 5. Siparişi ödeme nesnesine ekleyin ve API'yi çağırın
$payment->setOrder($order);
$response = $payment->call()->getResponse();
if ($response->isSuccess() && $response->isHtml()) {
// Başarılı olursa, Paytr'dan dönen iframe HTML'ini sayfada gösterin
return $response->getHtml();
}
// Hata durumunda
return "Hata: " . $response->getMessage();
}
// ... (use ifadeleri önceki örnekle aynı)
// İşlem tipini DIRECT olarak değiştirin
$payment->getOption()->setTransactionType(TransactionType::DIRECT);
// Sipariş oluştururken kart bilgilerini de ekleyin
$order->setCardOwner("TEST KULLANICI")
->setCardNumber("4355084355084358") // Test kart numarası
->setCardExpireMonth("12")
->setCardExpireYear("24")
->setCardCvv("000");
// ... (diğer kullanıcı bilgileri)
// API çağrısı ve yanıtı işleme
$response = $payment->call()->getResponse();
if ($response->isSuccess()) {
// Direct API'den JSON yanıt döner
return response()->json($response->getContent());
}
return response()->json(['error' => $response->getMessage()], 400);
// ... (use ifadeleri önceki örnekle aynı)
// İşlem tipini IFRAME_TRANSFER olarak değiştirin
$payment->getOption()->setTransactionType(TransactionType::IFRAME_TRANSFER);
// Kart bilgileri gerekmez, bu yüzden Order nesnesinden kartla ilgili satırları kaldırabilirsiniz.
// ... (siparişin geri kalanını ayarlayın)
$response = $payment->call()->getResponse();
if ($response->isSuccess() && $response->isHtml()) {
// Başarılı olursa, Paytr'dan dönen havale/EFT talimatlarını içeren iframe'i gösterin
return $response->getHtml();
}
// routes/web.php
use Illuminate\Http\Request;
use FurkanMeclis\Paytr\Payment;
Route::post('/paytr-callback', function () {
$payment = app(Payment::class);
// 1. Hash kontrolü yap
if (!$payment->checkHash()) {
return response('HASH MISMATCH', 401);
}
// 2. Gelen isteği al ve durumu kontrol et
$callbackData = request()->all();
if ($callbackData['status'] === 'success') {
// Ödeme başarılı. Sipariş durumunu veritabanında güncelle.
// $orderId = $callbackData['merchant_oid'];
// ...
} else {
// Ödeme başarısız. Hata mesajını logla.
// $errorMessage = $callbackData['failed_reason_msg'];
// ...
}
// 3. Paytr'a "OK" yanıtı gönder. Bu zorunludur.
return response('OK', 200);
});
// routes/web.php
use Illuminate\Http\Request;
use FurkanMeclis\Paytr\Request\PaymentVerification;
Route::post('/paytr-callback', function (Request $request) {
$verification = new PaymentVerification($request);
// 1. Hash kontrolü yap
if (!$verification->isVerified()) {
return response('HASH MISMATCH', 401);
}
// 2. Durumu kontrol et
if ($verification->isSuccess()) {
// Ödeme başarılı.
// $orderId = $verification->getMerchantOid();
} else {
// Ödeme başarısız.
// $errorMessage = $verification->getFailedReasonMessage();
}
// 3. Paytr'a "OK" yanıtı gönder.
return $verification->getProcessedResponse();
});
// Iframe'de sadece en fazla 6 taksit göster
$payment->getOption()->setMaxInstallment(6);
// Direct API'de 3 taksit yap
$payment->getOption()->setInstallmentCount(3);
use FurkanMeclis\Paytr\Enums\Currency;
$payment->getOption()->setCurrency(Currency::EUR);
use FurkanMeclis\Paytr\Request\Payment as RequestPayment;
$paymentRequest = new RequestPayment();
$paymentRequest->setUserIp(request()->ip());
$paymentRequest->setMerchantOid('SIPARIS_ALT_123');
// ... tüm diğer bilgileri setter metotları ile tek tek ayarlayın ...
$response = $paymentRequest->create();