Korumalı kart saklama

17.000'den fazla web sitesinde online ödeme hizmeti veren iyzico, son kullanıcılara sunduğu korumalı kart saklama hizmeti ile alış veriş deneyimini çok daha hızlı ve güvenilir hale getiriyor. iyzico'nun korumalı kart saklama servisi, müşterilerinizin iyzico platformunda sakladığı tüm kartlarla kredi kartı bilgilerini tekrar girmek zorunda kalmadan alışveriş yapmasına olanak sağlar.

Nasıl mı?

SAKLI KARTI OLAN MÜŞTERİLER İÇİN ÖDEME SÜRECİ

1- Ödeme sayfasına gelen son kullanıcının email ve telefon bilgisi servise gönderilir. Dönen cevap, müşterinizin saklı kartı olup olmadığı bilgisini içerir. Eğer saklı kartı varsa, cevap içinde aynı zamanda OTP(one time password) SMS doğrulama ekranı için gerekli javascript kodu iletilir.

Cevapta kontrol edilmesi gereken ilk parametre: scriptType . Bu parametre iki değer alabilir.

  • CONSUMER_WITH_CARD_EXIST:   Kullanıcının saklı kartı olduğunu belirtir.
  • UCS_CONSENT:   Kullanıcının saklı kartı olmadığını gösterir.

2- Müşterinin saklı kartı olması durumunda (scriptType:CONSUMER_WITH_CARD_EXIST)

Servisten dönen javascript kodu "script" parametresinde bulunur ve aşağıdakine benzer bir değer alır. Bu değer sayfaya bastırılır.

  • "<script type=\"text/javascript\">if (typeof iyziUcsInit == 'undefined') {var iyziUcsInit = {\"baseUrl\":\"https://sandbox-api.iyzipay.com\", \"buyerProtectedConsumer\":false,\"ucsToken\":\"3f971db9-897c-4c74-aa29-ed9b40644b12\",\"scriptType\":\"CONSUMER_WITH_CARD_EXIST\",\"buyerProtectedMerchant\":false,\"maskedGsmNumber\":\"+90********31\",\"gsmNumber\":\"+905557378631\",\"merchantName\":\"Sandbox Merchant Name - 58892\", createTag: function () {var iyziUcsJSTag = document.createElement('script'); iyziUcsJSTag.setAttribute('src', 'https://sandbox-static.iyzipay.com/checkoutform/v2/bundle.js?v=1575919444317'); document.head.appendChild(iyziUcsJSTag);}};if (typeof iyziInit == 'undefined') { iyziUcsInit.createTag(); }}</script>"

Ödeme alanında ilgili yere aşağıdaki div satırı eklenir

  • <div id="ucs-cards"></div>

Bu bilgilerin sayfaya yazdırılması sonucu belirtilen div içine aşağıdaki ekran yüklenir.

Bu aşamada sayfanıza universalCardStorage javascript objesi de yüklenir. Bu değer hakkında aşağıda detaylı bilgi verilmiştir.

Müşteriniz SMS doğrulaması yaptığında sayfa içeriği aşağıdaki şekilde güncellenir ve müşterinizin kartları listelenir.

Bu ekranı bir form olarak düşünebilirsiniz. Uygun gördüğünüz bir alana bir buton ekleyerek, tıklanması durumunda müşterinizin talebi doğrultusunda ödeme alabilirsiniz. Bu işlemi,ilgili buton tıklandığında universalCardStorage objesinin değerlerini kontrol ederek yapabilirsiniz.

universalCardStorage: Korumalı kart saklama servisinin çağırılmasıyla sayfanıza yüklenen bir javascript objesidir. Süreci her aşamada takip edebilmenize ve içindeki değerleri kullanarak ödeme alabilmenize olanak sağlar. Müşteriniz daha önce herhangi bir platformda iyzico bilgilendirme formunu ve KVKK sözleşmesini kabul edip kart saklamışsa registerConsumerCard parametresi true olarak gelir.

Son kullanıcının saklı kartı varsa universalCardStorage objesi koşullara göre aşağıdaki gibi değişir

  • Saklı kartı var ancak henüz SMS doğrulaması yapılmamış (müşteri henüz Kartımı Göster ekranında ilerlememiş)
    universalCardStorage: {registerConsumerCard: true, gsmNumber: "+905557378631", consumerToken: undefined, cardToken: undefined}
    Eğer form submit edildiğinde universalCardStorage objesine ait consumerToken ve cardToken değerleri undefined ise müşterinizin saklı kart ile ödeme seçeneğini seçmemiştir. Bu durumda kendi ödeme formunuz ve standart ödeme isteği ile ilerleyebilirsiniz.

  • Saklı kartı var ve SMS doğrulaması yapılmış (müşteri kayıtlı kartlarının göründüğü ekrana geçmiş)
    universalCardStorage: {registerConsumerCard: true, gsmNumber: "+905557378631", consumerToken: "31ad9-2335a3b", cardToken: "ca9c8360-ca08"}
    Bu durumda form submit edildiğinde universalCardStorage objesine ait consumerToken ve cardToken değerleri tanımlı gelir. Bu değerleri Ajax ile backend'e gönderebilir ve saklı karttan ödeme alabilirsiniz. Ödeme isteğinde kart bilgileri yerine consumerToken, cardToken ve ucsToken bilgisi gönderilir. (ucsToken değeri korumalı kart saklama isteğine dönen cevapta backend tarafında alınır). Detaylı örnek aşağıda paylaşılmıştır.

  • Saklı kartı var, SMS doğrulaması yapılmış ve müşteri yeni bir kart ekle seçeneğini seçmiş
    universalCardStorage: {registerConsumerCard: true, gsmNumber: "+905557378631", consumerToken: "31ad9-2335a3b", cardToken: undefined}
    Form submit edildiğinde consumerToken tanımlı ancak cardToken undefined ise yeni bir kartla ödeme yapılır ve aynı anda kart saklanması sağlanır. Kart bilgilerinin alınması için ödeme formu gösterilir. İstek atarken kart bilgilerine ek olarak registerConsumerCard parametresi true olarak gönderilir.
SAKLI KARTI OLMAYAN MÜŞTERİLER İÇİN KART SAKLAMA VE ÖDEME SÜRECİ

Korumalı kart saklama servisinden dönen cevapta scriptType parametresi UCS_CONSENT değerine sahip ise, müşterinizin iyzico ortamında henüz kartı olmadığını anlayabilirsiniz. Aynı zamanda universalCardStorage objesi içinde registerConsumerCard değeri false olarak gelecektir. Bu noktada kartı saklamak için müşterinize iyizco bilgilendirme formu ve KVKK metnini içeren arayüzü sunmanız gerekmektedir. Bu arayüzü, ödeme formunuzun altına veya ilişkili başka bir alana aşağıdaki div satırı ile ekleyebilirsiniz.

Servisten dönen javascript kodu "script" parametresinde bulunur. Bu değer sayfaya bastırılır

Ödeme alanında ilgili yere aşağıdaki div satırı eklenir

  • <div id="ucs-permission"></div>

İlgili alanda görünecek arayüz aşağıdadır. Müşteriniz KVKK ve bilgilendirme metnini okur ve checkbox'ı seçili hale getirerek bunu onaylar.

Korumalı kart saklama servisi ile sayfanıza tanımlanan universalCardStorage objesinde registerConsumerCard değerinin false olması müşterinin daha önce iyzico ortamında kart saklamadığını gösterir. Gösterilen ekranda checkbox'ın seçilmesi durumunda universalCardStorage objesinde registerConsumerCard değeri true olarak değişecektir. Ödeme formunuz submit edildiğinde bu değeri(universalCardStorage.registerConsumerCard) istek içinde registerConsumerCard parametresine atayabilirsiniz. Bu durumda müşterinizin kartı iyzico ortamında saklanacaktır. İstek örneği aşağıda paylaşılmıştır.

Not: Response sonucunda alınacak UCS token ve universalCardStorage objesi içindeki token bilgileri 30 dakika geçerlidir. Eğer 30 dk. içinde ödeme isteği gönderilmez ise tekrar istek atılıp yeni bir UCS token değeri alınmalıdır.

Servise gönderilmesi gereken parametreler şu şekildedir:

Parametre ismi Tip Zorunluluk Açıklama
locale string hayır iyzico istek sonucunda dönen metinlerin dilini ayarlamak için kullanılır. Varsayılan değeri tr’dir.
conversationId string hayır İstek esnasında gönderip, sonuçta alabileceğiniz bir değer, request/response eşleşmesi yapmak için kullanılabilir.
email string evet Kart sahibinin email adresi
gsmNumber string evet Kart sahibinin telefon numarası


Servisten dönen parametreler şu şekildedir:

Parametre ismi Tip Açıklama
status string Yapılan isteğin sonucunu bildirir. İşlem başarılı ise success, hatalı ise failure döner.
script string Korumalı kart saklama ekranının görünmesi için gerekli javascript kod.
scriptType string Kullanıcının saklı kartının olup olmadığını belirten parametre. CONSUMER_WITH_CARD_EXIST ve UCS_CONSENT değerlerini alabilir.
merchantName string Üye işyeri adı.
maskedGsmNumber string Kart sahibi maskelenmiş telefon numarası.
gsmNumber string Kart sahibi telefon numarası.
buyerProtectedConsumer boolean Müşterinin daha önceden korumalı alışveriş yapıp yapmadığını belirti.
buyerProtectedMerchant boolean Üye işyerine korumalı alışveriş özelliğinin açık olup olmadığını belirtit.
errorCode string İşlem hatalıysa, bu hataya dair belirtilen koddur.
errorMessage string İşlem hatalıysa, bu hataya dair belirtilen mesajdır. Locale parametresine göre dil desteği sunar.
errorGroup string İşlem hatalıysa, bu hataya dair belirtilen gruptur.
locale string İstekte belirtilen locale değeri geri dönülür, varsayılan değeri tr’dir.
systemTime integer Dönen sonucun o anki unix timestamp değeridir.
conversationId string İstek esnasında gönderilmişse, sonuçta aynen geri iletilir.

// create request class
$request = new \Iyzipay\Request\UCSInitializeRequest();
$request->setConversationId("1234566");
$request->setLocale("tr");
$request->setEmail("email@iyzico.com");
$request->setGsmNumber("+905557378631");

// make request
$result = \Iyzipay\Model\UCSInitialize::create($request,Config::options());
//Request
{
    "locale": "tr",
    "conversationId": "123456",    
    "email": "email@iyzico.com",
    "gsmNumber": "+905557378631"
}

//Response
{
  "buyerProtectedConsumer": false,
  "buyerProtectedMerchant": false,
  "gsmNumber": "+905533378631",
  "locale": "tr",
  "maskedGsmNumber": "+90********31",
  "merchantName": "Test Name - 58892",
  "script": "<script type=\"text/javascript\">if (typeof iyziUcsInit == 'undefined') {var iyziUcsInit = {\"baseUrl\":\"https://sandbox-api.iyzipay.com\", \"ucsToken\":\"32b30114-85dd-47a5-a2bd-9071c95bc389\",\"scriptType\":\"UCS_CONSENT\",\"buyerProtectedMerchant\":false,\"maskedGsmNumber\":\"+90********31\",\"gsmNumber\":\"+905533378631\",\"merchantName\":\"Sandbox Merchant Name - 58892\", createTag: function () {var iyziUcsJSTag = document.createElement('script'); iyziUcsJSTag.setAttribute('src', 'https://sandbox-static.iyzipay.com/checkoutform/v2/bundle.js?v=1575969451615'); document.head.appendChild(iyziUcsJSTag);}};if (typeof iyziInit == 'undefined') { iyziUcsInit.createTag(); }}</script>",
  "scriptType": "UCS_CONSENT",
  "status": "success",
  "systemTime": 1575969451615,
  "ucsToken": "32b30114-a2bd-9071c95bc389"
}

Örnek Kodlar

SAKLI KARTLA ÖDEME İSTEĞİ GÖNDERMEK

Parametre İsmi Tip Zorunlu Açıklama
locale String Hayır iyzico istek sonucunda dönen metinlerin dilini ayarlamak için kullanılır. Varsayılan değeri tr’dir. en olarak kullanılabilir.
conversationId String Hayır İstek esnasında gönderip, sonuçta alabileceğiniz bir değer, request/response eşleşmesi yapmak için kullanılabilir. En yaygın kullanış biçimi üye iş yerinin sipariş numarasıdır.
price Decimal Evet Ödeme sepet tutarı. Kırılım (sepetin içerisindeki ürünler) tutarlar toplamı sepet tutarına eşit olmalı.
paidPrice Decimal Evet İndirim vade farkı vs. hesaplanmış POS’tan geçecek nihai tutar. Price değerinden küçük, büyük veya eşit olabilir.
currency String Evet Ödemenin alınacağı para birimi default TL olarak belirlenmiştir. Diğer değerler ise USD, EUR, GBP olmak üzere, farklı para birimleri ile alışverişin hesabınıza tanımlandığından emin olunuz.
installment Integer Evet Taksit bilgisi, tek çekim için 1 gönderilmelidir. Geçerli değerler: 1, 2, 3, 6, 9, 12
basketId String Hayır Üye işyeri tarafından ilgili ödemenin sepetini tanımlamak için kullanılan id'dir. Sipariş numarası ya da anlamlı bir değer olabilir.
paymentChannel String Hayır Ödeme kanalı. Geçerli değerler enum içinde sunulmaktadır: WEB, MOBILE, MOBILE_WEB, MOBILE_IOS, MOBILE_ANDROID, MOBILE_WINDOWS, MOBILE_TABLET, MOBILE_PHONE
paymentGroup String Hayır Ödeme grubu, varsayılan PRODUCT. Geçerli değerler enum içinde sunulmaktadır: PRODUCT, LISTING, SUBSCRIPTION, OTHER.
cardToken String Evet Korumalı kart saklama servisinden dönen card token bilgisi. universalCardStorage objesinden ulaşılabilir
consumerToken String Evet Korumalı kart saklama servisinden dönen consumer token bilgisi. universalCardStorage objesinden ulaşılabilir
ucsToken String Evet Korumalı kart saklama servisinden dönen UCStoken bilgisi. Bu parametre yukarıdaki istekte backend tarafında alınır.
id(Buyer) String Evet Üye işyeri tarafındaki alıcıya ait id.
name(Buyer) String Evet Üye işyeri tarafındaki alıcıya ait ad.
surname(Buyer) String Evet Üye işyeri tarafındaki alıcıya ait soyad.
identityNumber(Buyer) String Evet Üye işyeri tarafındaki alıcıya ait kimlik (TCKN) numarası.
city(Buyer) String Evet Üye işyeri tarafındaki alıcıya ait şehir bilgisi.
country(Buyer) String Evet Üye işyeri tarafındaki alıcıya ait ülke bilgisi.
email(Buyer) String Evet Üye işyeri tarafındaki alıcıya ait e-posta bilgisi. E-posta adresi alıcıya ait geçerli ve erişilebilir bir adres olmalıdır.
gsmNumber(Buyer) String Hayır Üye işyeri tarafındaki alıcıya ait GSM numarası.
ip(Buyer) String Evet Üye işyeri tarafındaki alıcıya ait IP adresi.
registrationAddress(Buyer) String Evet Üye işyeri tarafındaki alıcıya ait kayıt adresi.
zipCode(Buyer) String Hayır Üye işyeri tarafındaki alıcıya ait posta kodu.
registrationDate(Buyer) String Hayır Üye işyeri tarafındaki alıcıya ait kayıt tarihi. Tarih formatı 2015-09-17 23:45:06 şeklinde olmalıdır.
lastLoginDate(Buyer) String Hayır Üye işyeri tarafındaki alıcıya ait son giriş tarihi. Tarih formatı 2015-09-17 23:45:06 şeklinde olmalıdır.
contactName(BillingAddress) String Evet Üye işyeri tarafındaki fatura adresi, ad soyad bilgisi.
city(BillingAddress) String Evet Üye işyeri tarafındaki fatura adresi şehir bilgisi.
country(BillingAddress) String Evet Üye işyeri tarafındaki fatura adresi ülke bilgisi.
address(BillingAddress) String Evet Üye işyeri tarafındaki fatura adresi.
zipCode(BillingAddress) String Hayır Üye işyeri tarafındaki fatura adresi posta kodu.
contactName(ShippingAddress) String Evet Üye işyeri tarafındaki teslimat adresi, ad soyad bilgisi. Sepetteki ürünlerden en az 1 tanesi fiziksel ürün (itemType=PHYSICAL) ise zorunludur.
city(ShippingAddress) String Evet Üye işyeri tarafındaki teslimat adresi şehir bilgisi. Sepetteki ürünlerden en az 1 tanesi fiziksel ürün (itemType=PHYSICAL) ise zorunludur.
country(ShippingAddress) String Evet Üye işyeri tarafındaki teslimat adresi ülke bilgisi. Sepetteki ürünlerden en az 1 tanesi fiziksel ürün (itemType=PHYSICAL) ise zorunludur.
address(ShippingAddress) String Evet Üye işyeri tarafındaki teslimat adresi. Sepetteki ürünlerden en az 1 tanesi fiziksel ürün (itemType=PHYSICAL) ise zorunludur.
zipCode(ShippingAddress) String Hayır Üye işyeri tarafındaki teslimat adresi posta kodu.
id(BasketItems) String Evet Üye işyeri tarafındaki sepetteki ürüne ait id. Not: Bir ödeme isteğine maksimum 500 basketItem eklenebilir.
itemType(BasketItems) String Evet Üye işyeri tarafındaki sepetteki ürüne ait tip. Geçerli enum değerler: PHYSICAL ve VIRTUAL.
name(BasketItems) String Evet Üye işyeri tarafındaki sepetteki ürüne ait isim.
category1(BasketItems) String Evet Üye işyeri tarafındaki sepetteki ürüne ait kategori 1.
category2(BasketItems) String Hayır Üye işyeri tarafındaki sepetteki ürüne ait kategori 2.
price(BasketItems) Decimal Evet Üye işyeri tarafındaki sepetteki ürüne ait tutar. 0 ve 0’dan küçük olamaz; tutarlar toplamı sepet tutarına (price) eşit olmalıdır.

Dönüş parametreleri ise aşağıdaki gibidir:

  • status parametresi işlemin durumu hakkında bilgi verir. success işlem başarılı bir şekilde yapılmış ve para çekilmiş demektir. failure ise işlem başarısız olmuş ve sebebi ile alakalı olarak hata bilgilendirmesi yapılmış anlamına gelmektedir.
  • paymentStatus bu servis için null olarak gelmektedir.
  • paymentid ve paymenttransactionid değerleri mutlaka saklanmalıdır.
  • Eğer işlem failure statüsü ile sonlanmış ise errorCode, errorMessage, errorGroup parametreleri değerler ile dönecektir.

Servisten dönen parametreler şu şekildedir;

Parametre İsmi Tip Açıklama
status String Yapılan isteğin sonucunu bildirir. İşlem başarılı ise success, hatalı ise failure döner.
errorCode String İşlem hatalıysa, bu hataya dair belirtilen koddur.
errorMessage String İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.
errorGroup String İşlem hatalıysa, bu hataya dair belirtilen gruptur.
locale String İstekte belirtilen locale değeri geri dönülür, varsayılan değeri tr’dir.
systemTime Long Dönen sonucun o anki unix timestamp değeridir.
conversationId String İstek esnasında gönderilmişse, sonuçta aynen geri iletilir.
paymentId String Ödemeye ait id, üye işyeri tarafından mutlaka saklanmalıdır. Ödemenin iptali ve iyzico ile iletişimde kullanılır.
price Decimal Ödeme sepet tutarı. Kırılım tutarlar toplamı sepet tutarına eşit olmalı.
paidPrice Decimal İndirim vade farkı vs. hesaplanmış POS’tan geçen, tahsil edilen, nihai tutar.
currency String Ödemenin alındığı para birimi.
installment Integer Ödemenin taksit bilgisi, tek çekim için 1 döner. Geçerli değerler: 1, 2, 3, 6, 9.
basketId String Üye işyeri tarafından gönderilen sepet id’si.
binNumber String Ödeme yapılan kartın ilk 6 hanesi.
cardAssociation String Eğer ödeme yapılan kart yerel bir kart ise, kartın ait olduğu kuruluş. Geçerli değerler: VISA, MASTER_CARD, AMERICAN_EXPRESS, TROY
cardFamily String Eğer ödeme yapılan kart yerel bir kart ise, kartın ait olduğu aile. Geçerli değerler: Bonus, Axess, World, Maximum, Paraf, CardFinans, Advantage
cardType String Eğer ödeme yapılan kart yerel bir kart ise, kartın ait olduğu tipi. Geçerli değerler: CREDIT_CARD, DEBIT_CARD, PREPAID_CARD.
fraudStatus Integer Ödeme işleminin fraud filtrelerine göre durumu. Eğer ödemenin fraud risk skoru düşük ise ödemeye anında onay verilir, bu durumda 1 değeri döner. Eğer fraud risk skoru yüksek ise ödeme işlemi reddedilir ve -1 döner. Eğer ödeme işlemi daha sonradan incelenip karar verilecekse 0 döner. Geçerli değerler: 0, -1 ve 1. Üye işyeri sadece 1 olan işlemlerde ürünü kargoya vermelidir, 0 olan işlemler için bilgilendirme beklemelidir.
iyziCommissionFee Decimal Ödemeye ait iyzico işlem ücreti .
iyziCommissionRateAmount Decimal Ödemeye ait iyzico işlem komisyon tutarı.
merchantCommissionRate Decimal Üye işyerinin uyguladığı vade/komisyon oranı. Örneğin price=100, paidPrice=110 ise üye işyeri vade/komisyon oranı %10’dur. Bilgi amaçlıdır.
merchantCommissionRateAmount Decimal Üye işyerinin uyguladığı vade/komisyon tutarı. Örneğin price=100, paidPrice=110 ise üye işyeri vade/komisyon tutarı 10’dur. Bilgi amaçlıdır.
paymentTransactionId (ItemTransactions) String Ödeme kırılımına ait id, üye işyeri tarafından mutlaka saklanmalıdır. Ödeme kırılımının iadesi, onayı, onay geri çekmesi ve iyzico ile iletişimde kullanılır. Tercihen itemId ile ilişkili bir şekilde tutulmalıdır.
itemId(ItemTransactions) String Üye işyeri tarafından iletilen, sepetteki ürüne ait id.
price(ItemTransactions) Decimal Üye işyeri tarafındaki sepetteki ürüne ait tutar.
paidPrice(ItemTransactions) Decimal Tahsilat tutarının kırılım bazındaki dağılımı. Üye işyeri tarafından mutlaka saklanmalıdır.
transactionStatus (ItemTransactions) Integer Ödeme kırılımının durumu. Ödeme fraud kontrolünde ise 0 değeri döner, bu durumda fraudStatus değeri de 0’dır. Ödeme, fraud kontrolünden sonra reddedilirse -1 döner. Pazaryeri modelinde ürüne onay verilene dek bu değer 1 olarak döner. Pazaryeri modelinde ürüne onay verilmişse bu değer 2 olur. Geçerli değerler: 0, -1, 1, 2.
blockageRate(ItemTransactions) Decimal Kırılım bazında üye işyeri blokaj oranı. iyzico – üye işyeri anlaşmasına göre, üye işyerine işlem bazında blokaj uygulayabilir. Bu blokaj üye işyeri fraud riskini önlemek içindir. Blokaj süresi boyunca para iyzico’da tutulur, bu süre sonrası üye işyerine gönderilir.
blockageRateAmountMerchant(ItemTransactions) Decimal Kırılım bazında üye işyeri blokaj tutarının, üye işyerine yansıyan rakamı. Blokaj tutarı mümkün olduğunca üye işyerine yansıtılır. Eğer blokaj tutarı, üye işyeri tutarından daha büyükse bu durumda alt üye işyerine de yansıtılır.
blockageResolvedDate(ItemTransactions) String İşlem bazında blokaj çözülme tarihi. yyyy-MM-dd HH:mm:ss formatındadır, örneğin 2015-10-19 14:36:52.
iyziCommissionFee(ItemTransactions) Decimal iyzico işlem ücretinin kırılım bazında dağılmış tutarı.
iyziCommissionRateAmount(ItemTransactions) Decimal iyzico işlem komisyon tutarının kırılım bazında dağılmış tutarı.
merchantCommissionRate(ItemTransactions) Decimal Üye işyerinin uyguladığı vade/komisyon oranının kırılım bazında dağılmış oranı.
merchantCommissionRateAmount(ItemTransactions) Decimal Üye işyerinin uyguladığı vade/komisyon tutarının, kırılım bazında dağılmış tutarı.
merchantPayoutAmount(ItemTransactions) Decimal Bu kırılım için, iyzico işlem ücreti, komisyon tutarı ve blokajlar düşüldükten sonra üye işyerine gönderilecek tutar.
paidPrice(ItemTransactions)(convertedPayout) Decimal Tahsilat tutarının kırılım bazındaki dağılımı. Üye işyeri tarafından mutlaka saklanmalıdır.
iyziCommissionFee(ItemTransactions)(convertedPayout) Decimal iyzico işlem ücretinin kırılım bazında dağılmış tutarı.
iyziCommissionRateAmount(ItemTransactions)(convertedPayout) Decimal iyzico işlem komisyon tutarının kırılım bazında dağılmış tutarı.
blockageRateAmountMerchant(ItemTransactions)(convertedPayout) Decimal Kırılım bazında üye işyeri blokaj tutarının, üye işyerine yansıyan rakamı. Blokaj tutarı mümkün olduğunca üye işyerine yansıtılır. Eğer blokaj tutarı, üye işyeri tutarından daha büyükse bu durumda alt üye işyerine de yansıtılır.
merchantPayoutAmount(ItemTransactions)(convertedPayout) Decimal Bu kırılım için, iyzico işlem ücreti, komisyon tutarı ve blokajlar düşüldükten sonra üye işyerine gönderilecek tutar.
iyziConversationRate(ItemTransactions)(convertedPayout) Decimal Bu kırılım için, eğer döviz işlemi yapılmışsa çevrim ücreti oranı.
iyziConversationRateAmount(ItemTransactions)(convertedPayout) Decimal Bu kırılım için, eğer döviz işlemi yapılmışsa çevrim ücreti tutarı.
currency(ItemTransactions)(convertedPayout) String Ödemenin alındığı para birimi.

$request = new \Iyzipay\Request\CreatePaymentRequest();
$request->setLocale(\Iyzipay\Model\Locale::TR);
$request->setConversationId("123456789");
$request->setPrice("1");
$request->setPaidPrice("1.2");
$request->setCurrency(\Iyzipay\Model\Currency::TL);
$request->setInstallment(1);
$request->setBasketId("B67832");
$request->setPaymentChannel(\Iyzipay\Model\PaymentChannel::WEB);
$request->setPaymentGroup(\Iyzipay\Model\PaymentGroup::PRODUCT);
$paymentCard = new \Iyzipay\Model\PaymentCard();
$paymentCard->setUcsToken("sampleToken");
$paymentCard->setConsumerToken("55287-9000-00000-08");
$paymentCard->setCardToken("12332-3523-345-234-56456");
$request->setPaymentCard($paymentCard);
$buyer = new \Iyzipay\Model\Buyer();
$buyer->setId("BY789");
$buyer->setName("John");
$buyer->setSurname("Doe");
$buyer->setGsmNumber("+905350000000");
$buyer->setEmail("email@email.com");
$buyer->setIdentityNumber("74300864791");
$buyer->setLastLoginDate("2015-10-05 12:43:35");
$buyer->setRegistrationDate("2013-04-21 15:12:09");
$buyer->setRegistrationAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
$buyer->setIp("85.34.78.112");
$buyer->setCity("Istanbul");
$buyer->setCountry("Turkey");
$buyer->setZipCode("34732");
$request->setBuyer($buyer);
$shippingAddress = new \Iyzipay\Model\Address();
$shippingAddress->setContactName("Jane Doe");
$shippingAddress->setCity("Istanbul");
$shippingAddress->setCountry("Turkey");
$shippingAddress->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
$shippingAddress->setZipCode("34742");
$request->setShippingAddress($shippingAddress);
$billingAddress = new \Iyzipay\Model\Address();
$billingAddress->setContactName("Jane Doe");
$billingAddress->setCity("Istanbul");
$billingAddress->setCountry("Turkey");
$billingAddress->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
$billingAddress->setZipCode("34742");
$request->setBillingAddress($billingAddress);
$basketItems = array();
$firstBasketItem = new \Iyzipay\Model\BasketItem();
$firstBasketItem->setId("BI101");
$firstBasketItem->setName("Binocular");
$firstBasketItem->setCategory1("Collectibles");
$firstBasketItem->setCategory2("Accessories");
$firstBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
$firstBasketItem->setPrice("0.3");
$basketItems[0] = $firstBasketItem;
$secondBasketItem = new \Iyzipay\Model\BasketItem();
$secondBasketItem->setId("BI102");
$secondBasketItem->setName("Game code");
$secondBasketItem->setCategory1("Game");
$secondBasketItem->setCategory2("Online Game Items");
$secondBasketItem->setItemType(\Iyzipay\Model\BasketItemType::VIRTUAL);
$secondBasketItem->setPrice("0.5");
$basketItems[1] = $secondBasketItem;
$thirdBasketItem = new \Iyzipay\Model\BasketItem();
$thirdBasketItem->setId("BI103");
$thirdBasketItem->setName("Usb");
$thirdBasketItem->setCategory1("Electronics");
$thirdBasketItem->setCategory2("Usb / Cable");
$thirdBasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
$thirdBasketItem->setPrice("0.2");
$basketItems[2] = $thirdBasketItem;
$request->setBasketItems($basketItems);

$payment = \Iyzipay\Model\Payment::create($request, Config::options());