Skip to content

Instantly share code, notes, and snippets.

@selahattinunlu
Last active April 14, 2017 10:36
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save selahattinunlu/1361eb51e305ede9b6a9 to your computer and use it in GitHub Desktop.
Save selahattinunlu/1361eb51e305ede9b6a9 to your computer and use it in GitHub Desktop.
PayU Ortak Ödeme Sayfasına Yönlendirmek
<div style="display: none;">
<?php
require(public_path() . '/app/libraries/payu/PayuLiveUpdate.class.php');
if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
$liveUpdate = new PayuLu('PAYUDEMO', 'P5@F8*3!m0+?^9s3&u8('); // test için bu hesap bilgilerini kullanabilirsiniz.
$liveUpdate->setTestMode();
} else {
$liveUpdate = new PayuLu('secret','secret'); // Size verilen hesap bilgilerinizi gireceksiniz.
}
//$liveUpdate->setDebug(PayuLu::DEBUG_ALL);
$liveUpdate->setLanguage('TR'); // Ortak Ödeme Sayfasının Dilini Belirliyoruz.
$liveUpdate->setOrderRef('sipariş kodu');
$liveUpdate->setOrderTimeout(''); // timeout süresi belirleyebiliriz.
$liveUpdate->setTimeoutUrl(''); // timeout sonunda hangi urle yönlendirmek istiyorsak buraya yazabiliriz.
$liveUpdate->setPaymentCurrency("TRY"); // kullandığımız para birimi
$liveUpdate->setInstalments("2,3,4,5,6,7,8,9,10,11,12"); // taksit seçenekleri.. 10 11 ve 12 sanırım artık iptal olduğu için gözükmüyordu.
/**
* DİKKAAAT!
*
* $totalPrice => Sepetin toplam tutarı
* Config::get('app.freeShippingLimit') => Ücretsiz kargo limiti
*
* Bu bölümdeki değişkenleri kendi değişkenleriniz ile değiştirmeyi
* unutmayın.
*
* Not: Eğer kargo bedeli eklemeyecekseniz $liveUpdate->setOrderShipping("9") satırını silin gitsin.
*
*/
if ($totalPrice < Config::get('app.freeShippingLimit')) {
$liveUpdate->setOrderShipping("9"); // Kargo bedeli
}
$liveUpdate->setBackRef("http://websiteniz.com/order/thank-you/?orderCode=" . "siparis-kodunuz"); // sipariş kodu değişkenini eklemeyi unutmayın.
//$liveUpdate->setGlobalDiscount('1000'); // Genel İndirim
/**
* Kullanıcının sepetindeki ürünleri tek tek ekliyoruz.
*
* NOT::: en son girilen kdv oranı ile ilgili onların gönderdiği form.php örneğinde "67" yazıyordu. Kafanız karışmasın
* bu bölüme ödenecek vergi tutarını değil kdv oranını giriyoruz.
*/
foreach ($products as $product) {
$liveUpdate->addProduct(new PayuProduct(
$product->title, // Ürünün başlığı, adı
$product->modelCode, // Ürün kodu
'',
$product->getTotalPrice(), // kdv dahil birim fiyat
'GROSS', // dökümantasyonda bu bölüme BRÜT yazmamız söyleniyordu ama GROSS yazılacak. !!!
$product->pivot->quantity, // bu ürünün kaç adet sipariş edildiği
18 // kdv oranı
));
}
// Fatura Adresi İçin Parametreler
$billing = new PayuAddress();
$billing->setFirstName($billingAddress->firstname);
$billing->setLastName($billingAddress->lastname);
$billing->setEmail($user->email);
$billing->setAddress($billingAddress->content);
$billing->setCity($billingAddress->town); //Ilce/Semt
$billing->setState($billingAddress->city->name); //Sehir
$billing->setCountryCode("TR");
// Teslimat Adresi İçin Parametreler
$delivery = new PayuAddress();
$delivery->setFirstName($deliveryAddress->firstname);
$delivery->setLastName($deliveryAddress->lastname);
$delivery->setEmail($user->email);
$delivery->setAddress($deliveryAddress->content);
$delivery->setCity($deliveryAddress->town); //Ilce/Semt
$delivery->setState($deliveryAddress->city->name); //Sehir
$delivery->setCountryCode("TR");
// Daha Sonra üstte tanımladığımız adresleri liveUpdate sınıfına set ediyoruz.
$liveUpdate->setBillingAddress($billing);
$liveUpdate->setDeliveryAddress($delivery);
// üstteki adresler varken bunu niye tanımlamak zorundayım anlamasam da tanımlamayınca hata veriyor.
// Pek de kurcalamak istemedim burayı çözen olursa paylaşmasını istiyorum :))
$liveUpdate->setDestinationAddress(new PayuAddress());
// Ödeme sayfasına yönlendirecek butonda yazacak olan metin.
$liveUpdate->setButtonName('Ödeme Yap');
// $t değişkenine girdiğimiz bilgilerle birlikte formu render ettiriyoruz. Hash'i ve gerekli diğer alanları oluşturuyor
$t = $liveUpdate->renderPaymentForm();
/**
* Burada ekrana yazdırıyoruz ve müşteri "Ödeme Yap" butonuna tıklayınca ödeme sayfasına gidiyor. Lakin burada müşteriye
* ekstra tıklama yaptırmak yerine ben bu bölümü "display:none" ile gizledim. Javascript yardımı ile de sahte bir tıklama yaptırarak
* ödeme sayfasına yönlendirmeyi gerçekleştirdim. Bu javascript kodları da biraz aşağıda mevcut. :)
*/
echo $t;
?>
</div>
<script>
$(function() {
setTimeout(function() {
$('input[type="submit"]').click(); // fake click
}, 4000);
});
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment