CAPI LIST servisinden dönen require_cvv, utoken ve ctoken değerlerinin kullanımı.
1- Ödeme işlemini yapan kullanıcının kayıtlı kart listesi alınarak kullanıcının önüne listelenlir.
2-Kullanıcı listelenen kartlar arasından ödeme yapacağı kartı seçer.
3-Kullanıcının seçtiği karta ait require_cvv parametresi kontrol edilip eğer 1 ise CVV gireceği alan gösterilir.
4-Kullanıcının seçtiği kartın ctoken bilgisi ve kullanıcının utoken bilgisi ödeme isteğinde gönderilir.
Token üretiminde kullanılacak veriler
Alan adı / tipi | Açıklama | Zorunlu | Kısıtlar |
---|---|---|---|
merchant_id (integer) | Mağaza No: PayTR tarafından size verilen Mağaza numarası | ||
user_ip (string) | Müşteri ip: İstek anında aldığınız müşteri ip numarası(Önemli: Lokal makinenizde yapacağınız denemelerde mutlaka dış IP adresini gönderdiğinizden emin olun) | Evet | En fazla 39 karakter (ipv4) |
merchant_oid (string) | Mağaza sipariş no: Satış işlemi için belirlediğiniz benzersiz sipariş numarası.(Not: Sipariş no ödeme sonuç bildirimi esnasında geri dönen değerler arasındadır) | Evet | En fazla 64 karakter,Alfa numerik |
email (string) | Müşteri eposta adresi: Müşterinin sisteminizde kayıtlı olan veya form aracılığıyla aldığınız eposta adresi | Evet | En fazla 100 karakter |
payment_amount(integer) | Ödeme tutarı: Siparişe ait toplam ödeme tutarı | Evet | Ayraç olarak yalnızca nokta(.) gönderilmelidir |
payment_type(string) | Ödeme tipi | Evet | ('card') |
installment_count(int) | Taksit sayısı | Evet | 0, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12 |
currency(string) | Para birimi | Hayır | TL, EUR, USD, GBP, RUB(Boş ise TL kabul edilir) |
test_mode | Mağaza canlı modda iken test işlem yapmak için 1 olarak gönderilebilir | Hayır | 0 veya 1 |
non_3d | Non 3D işlem yapabilmek için 1 gönderilebilir | Evet | 0 veya 1 |
merchant_salt | PayTR Mağaza Paneli > Destek & Kurulum > Entegrasyon Bilgileri sayfası üzerinden ulaşabileceğiniz, mağazanıza özgü değer. | Evet | - |
merchant_key | PayTR Mağaza Paneli > Destek & Kurulum > Entegrasyon Bilgileri sayfası üzerinden ulaşabileceğiniz, mağazanıza özgü değer. | Evet | - |
POST REQUEST içeriğinde gönderilecek değerler:
Alan adı / tipi | Açıklama | Zorunlu | Kısıtlar |
---|---|---|---|
merchant_id (integer) | Mağaza no: PayTR tarafından size verilen Mağaza numarası | Evet | |
paytr_token (string) | paytr_token: İsteğin sizden geldiğine ve içeriğin değişmediğine emin olmamız için oluşturacağınız değerdir | Evet | Hesaplama ile ilgili olarak örnek kodlara bakmalısınız |
user_ip (string) | Müşteri ip: İstek anında aldığınız müşteri ip numarası (Önemli: Lokal makinenizde yapacağınız denemelerde mutlaka dış IP adresini gönderdiğinizden emin olun) | Evet | En fazla 39 karakter (ipv4) |
merchant_oid (string) | Mağaza sipariş no: Satış işlemi için belirlediğiniz benzersiz sipariş numarası. (Not: Sipariş no ödeme sonuç bildirimi esnasında geri dönen değerler arasındadır) | Evet | En fazla 64 karakter, Alfa numerik |
email (string) | Müşteri eposta adresi: Müşterinin sisteminizde kayıtlı olan veya form aracılığıyla aldığınız eposta adresi | Evet | En fazla 100 karakter |
payment_type(string) | Ödeme tipi | Evet | ('card') |
require_cvv | Kullanıcının seçtiği karta ait require_cvv parametresi kontrol edilip eğer 1 ise CVV gireceği alan gösterilir | Evet(Açıklama dikkatli okunmalı.) | - |
payment_amount (double), ondalık olarak nokta (.) ve noktadan sonra iki hane | Ödeme tutarı: Siparişe ait toplam ödeme tutarı | Evet | Örn: 100.99 veya 150 veya 1500.35 |
installment_count(int) | Taksit sayısı | Evet | 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |
card_type(string) | Kart tipi (Taksitli işlemlerde kullanmak üzere) | Hayır | advantage, axess, combo, bonus, cardfinans, maximum, paraf, world |
currency(string) | Para birimi | Hayır | TL(veya TRY), EUR, USD (Boş ise TL kabul edilir) |
client_lang(string) | Ödeme sürecinde kullanılacak dil | Hayır | Türkçe için tr veya İngilizce için en (Boş gönderilirse tr geçerli olur) |
test_mode | Mağaza canlı modda iken test işlem yapmak için 1 olarak gönderilebilir | Hayır | 0 veya 1 |
non_3d | Non 3D işlem yapabilmek için 1 gönderilebilir | Evet | 0 veya 1 |
non3d_test_failed | Non 3D işlemde, başarısız işlem durumunu test etmek için 1 gönderilir (test_mode ve non_3d değerleri 1 ise dikkate alınır!) | Hayır | 0 veya 1 |
merchant_ok_url(string) | Müşterinin başarılı ödeme sonrası yönledirileceği sayfa (Örn.Siparişlerim takip sayfası)(Uyarı: Müşteri bu sayfaya ulaştığında henüz sipariş onaylanmış olmaz) | Evet | En fazla 400 karakter Uyarı: Tam URL olmalıdır |
merchant_fail_url(string) | Müşterinin ödemesi sırasında beklenmeyen bir hatada yönlendirileceği sayfa | Evet | En fazla 400 karakter Uyarı: Tam URL olmalıdır |
user_name (string) | Müşteri adı ve soyadı: Müşterinin sisteminizde kayıtlı olan veya form aracılığıyla aldığınız adı ve soyadı | Evet | En fazla 60 karakter |
user_address (string) | Müşteri adresi: Müşterinin sipariş sırasında ilettiği adresi | Evet | En fazla 400 karakter |
user_phone (string) | Müşteri telefon numarası: Müşterinin sipariş sırasında ilettiği telefon numarası | Evet | En fazla 20 karakter |
user_basket (string) | Sepet içeriği: Müşterinin siparişindeki ürün/hizmet bilgilerini içermelidir | Evet | JSON tipinde(Örnek kodları inceleyin) |
debug_on (int) | Hata döndür: PayTR’a yanlış veya eksik bilgi iletilmesi durumunda sistemden hata mesajı döndürülmesi için 1 gönderilmelidir | Hayır | 0 veya 1(Entegrasyon ve test sürecinde hataları tespit etmek için mutlaka 1 |
utoken | Kullanıcıya ait kartı kaydederken servisten tarafınıza dönen ve sizin sistemininiz üzerinden kullacınızla eşleştirdiğiniz değer | Evet | |
ctoken | CAPI LIST servisinden dönen kullanıcının kayıtlı kartına ait ctoken değeri | Evet |
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
</head>
<?php
## Kullanıcının ödeme yaparken kayıtlı kartını kullanması için örnek kodlar ##
$merchant_id = 'MAGAZA_NO';
$merchant_key = 'XXXXXXXXXXX';
$merchant_salt = 'YYYYYYYYYYY';
$merchant_ok_url="http://site-ismi/basarili";
$merchant_fail_url="http://site-ismi/basarisiz";
$user_basket = htmlentities(json_encode(array(
array("Altis Renkli Deniz Yatağı - Mavi", "18.00", 1),
array("Pharmasol Güneş Kremi 50+ Yetişkin & Bepanthol Cilt Bakım Kremi", "33,25", 2),
array("Bestway Çocuklar İçin Plaj Seti Beach Set ÇANTADA DENİZ TOPU-BOT-KOLLUK", "45,42", 1)
)));
srand(time(null));
$merchant_oid = rand();
$test_mode="0";
//3d'siz işlem
$non_3d="0";
//non3d işlemde, başarısız işlemi test etmek için 1 gönderilir (test_mode ve non_3d değerleri 1 ise dikkate alınır!)
$non3d_test_failed="0";
if( isset( $_SERVER["HTTP_CLIENT_IP"] ) ) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
} elseif( isset( $_SERVER["HTTP_X_FORWARDED_FOR"] ) ) {
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
$ip = $_SERVER["REMOTE_ADDR"];
}
$user_ip = $ip;
$email = "testnon3d@paytr.com";
// 100.99 TL ödeme
$payment_amount = "100.99";
$currency="TL";
//
$payment_type = "card";
// $card_type = "bonus"; // Alabileceği değerler; advantage, axess, bonus, cardfinans, maximum, paraf, world
// $installment_count = "5";
$post_url = "https://www.paytr.com/odeme";
$hash_str = $merchant_id . $user_ip . $merchant_oid . $email . $payment_amount . $payment_type . $installment_count. $currency. $test_mode. $non_3d;
$token = base64_encode(hash_hmac('sha256',$hash_str.$merchant_salt,$merchant_key,true));
## CAPI LIST servisinden dönen require_cvv, utoken ve ctoken değerlerinin kullanımı ##
## Ödeme işlemini yapan kullanıcının kayıtlı kart listesi alınarak kullanıcının önüne listelenlir. ##
## Kullanıcı listelenen kartlar arasından ödeme yapacağı kartı seçer ##
## Kullanıcının seçtiği karta ait require_cvv parametresi kontrol edilip eğer 1 ise CVV gireceği alan gösterilir ##
## Kullanıcının seçtiği kartın ctoken bilgisi ve kullanıcının utoken bilgisi ödeme isteğinde gönderilir. ##
$utoken = "";
$ctoken = "";
$require_cvv = "";
?>
<body>
<form action="<?php echo $post_url;?>" method="post">
<!-- CVV gereklilik kontrolü yapılıyor -->
<?php if($require_cvv == 1) { ?>
Kart Güvenlik Kodu: <input type="text" name="cvv" value=""><br>
<?php } ?>
<input type="hidden" name="merchant_id" value="<?php echo $merchant_id;?>">
<input type="hidden" name="user_ip" value="<?php echo $user_ip;?>">
<input type="hidden" name="merchant_oid" value="<?php echo $merchant_oid;?>">
<input type="hidden" name="email" value="<?php echo $email;?>">
<input type="hidden" name="payment_type" value="<?php echo $payment_type;?>">
<input type="hidden" name="payment_amount" value="<?php echo $payment_amount;?>">
<input type="hidden" name="installment_count" value="0">
<input type="hidden" name="currency" value="<?php echo $currency;?>">
<input type="hidden" name="test_mode" value="<?php echo $test_mode;?>">
<input type="hidden" name="non_3d" value="<?php echo $non_3d;?>">
<input type="hidden" name="merchant_ok_url" value="<?php echo $merchant_ok_url;?>">
<input type="hidden" name="merchant_fail_url" value="<?php echo $merchant_fail_url;?>">
<input type="hidden" name="user_name" value="Paytr Test">
<input type="hidden" name="user_address" value="test test test">
<input type="hidden" name="user_phone" value="05555555555">
<input type="hidden" name="user_basket" value="<?php echo $user_basket; ?>">
<input type="hidden" name="debug_on" value="1">
<input type="hidden" name="paytr_token" value="<?php echo $token; ?>">
<input type="hidden" name="non3d_test_failed" value="<?php echo $non3d_test_failed; ?>">
<input type="hidden" name="installment_count" value="<?php echo $installment_count; ?>">
<input type="hidden" name="card_type" value="<?php echo $card_type; ?>">
<input type="hidden" name="utoken" value="<?php echo $utoken; ?>">
<input type="hidden" name="ctoken" value="<?php echo $ctoken; ?>">
<br />
<input type="submit" value="Submit">
</form>
</body>
</html>
Stored Card Servisi örnek kodlarını indirmek için tıklayın.