3D ile ödeme

3D’li ödeme iki adımdan oluşur. Bunlar 3D ödeme başlatma ve 3D ödemesi yapmaktır. 3D Ödeme başlatma servisi ile bankaların 3D doğrulama sayfalarına erişim yapılacak url ve ya html içeriğe erişebileceksiniz. 3D ödemesi ile de 3D doğrulama sonucuna göre ödeme işlemini sonlandırırsınız.

  • 3D ödeme başlatma servisine ödeme servisine ek olarak 3D doğrulama sonucunun döneceği retur_url parametresi ile request gönderilir.

  • Uygulamanızı 3D ödeme başlatma servisinden dönen "post_url" parametresine redirect edersiniz.

  • Bankaların 3D doğrulama ekranı açılır.

  • 3D doğrulama sonucu başlatma servisine gönderdiğiniz return_url parametresinde belirtilen url'e post edilir.

  • return_url'inize gelen parametreleri 3D ödemesi servisine post edersiniz ve sonucu kontrol edersiniz.

3D ödeme başlatma

Ödeme işleminden farklı olarak return_url parametresi gönderilir. Servisden dönen post_url ya da html_content parametrelerini kullanarak bankaların 3D doğrulama sayfasını açabilirsiniz.

İstek Parametreleri
Dönüş Parametreleri
Request
Response
Service Url

No

Parametre İsmi

Tip

Zorunlu

Açıklama

1

amount

decimal

Evet

Kredi kartından çekilecek tutar.

2

reference_no

string(50)

Evet

Ödeme işleminin ilişkili olduğu referans numarası. Tekil (unique) bir veri olmalı. ( örn: sipariş numarası )

3

return_url

string(256)

Evet

3D doğrulama sonucunun post edileceği URL

4

domain

string(256)

Evet

İşlemin yapıldığı uygulamanın domain bilgisi. ( örn: www.acme.com )

5

card_holder

string(50)

Hayır

Kart sahibi bilgisi.

Saklı kart ile işlem yapılmıyorsa zorunlu.

6

pan

string

Hayır

Kart numarası.

Saklı kart ile işlem yapılmıyorsa zorunlu.

7

month

int

Hayır

Son kullanma tarihi Ay bilgisi. ( örn: 8,12 )

Saklı kart ile işlem yapılmıyorsa zorunlu.

8

year

int

Hayır

Son kullanma tarihi Yıl bilgisi. ( örn: 2020, 2030 ) Saklı kart ile işlem yapılmıyorsa zorunlu.

9

cvc

string

Hayır

Kart güvenlik kodu.

Saklı kart ile işlem yapılmıyorsa zorunlu.

10

card_hash

string

Hayır

Saklı kartın token bilgisi. Kart bilgileri girilmemiş ise bu bilgi zorunlu.

11

card_holder_phone

string(10)

Hayır

Kart sahibinin telefon numarası

12

card_holder_mail

string(60)

Hayır

Kart sahibi email adresi.

13

description

string(140)

Hayır

İşlem ile ilgili açıklama alanı.

14

instalment

int

Hayır

İşlemin kaç taksit yapılacağı bilgisi. Değer gönderilmezse tek çekim uygulanır.

15

agent_id

string(10)

Hayır

Eğer alt bayileriniz var ise işlemin hangi bayi üzerinden geldiğini bu alana bayi kodu göndererek yapabilirsiniz.

16

company_amount

decimal

Hayır

Eğer alt bayileriniz var ise işlemin ne kadarının sizin hesabınıza aktarılacağını belirleyebilirsiniz.

17

add_commission

bool

Hayır

İşlem komisyonunun karttan çekilecek tutar'a eklenmesini istiyorsanız "true" gönderebilirsiniz.

18

transaction_type

char(1)

Hayır

Satış ya da ön provizyon. 1 satış, 3 ön provizyon. Varsayılan satış işlemidir.

19

ratio_code

string(8)

Hayır

Paynet.com.tr yönetim ekranlarında “API oran tanımları” sayfasından tanımlayabileceğiniz oran tablolarının “oran kodunu” bu alanda gönderebilirsiniz. Gönderdiğiniz oran koduna ait oran tablosu üzerinden komisyon hesaplaması yapılır. Bu sayede API üzerinden istediğiniz oranlar ile işlem yapabilirsiniz.

20

save_card

bool

Hayır

Ödeme işlemi ile birlikte kredi kart numarasının da saklanması istiyorsanız bu parametreyi true yollayabilirsiniz. Kart saklama işlemi yapıyorsanız card_desc zorunlu, card_owner_id ya da user_unique_id değerlerinden en az birini göndermeniz zorunlu.

21

card_desc

string(100)

Hayır

Kart saklama işlemi yapılıyor ise bu alan zorunludur.

22

user_unique_id

string

Hayır

Üye iş yeri tarafından verilen kullanıcıya özgü benzersiz id. İlk defa kart saklama yapılıyorsa zorunlu. İlk kart saklama tamamlandıktan sonra Paynet tarafından bu kullanıcıya benzersiz bir değer atanır( card_owner_id). Bu değeri kendi sisteminizde kullanıcınız ile ilişkilendirerek saklamalısınız. Daha sonra bu kullanıcıya yapılan kart saklama işlemlerinde user_unique_id yerine Paynet tarafından verilen card_owner_id değişkenini kullanmalısınız.

23

card_owner_id

string

Hayır

İlk defa kart saklama yapıldıktan sonra, Paynet tarafından user_unique_id’ye göre oluşturulan kart sahibinin benzersiz bilgisi. Bir sonraki kart saklama ve karttan ödeme alma işlemlerinde bu değer kullanılır.

24

user_gsm_no

string

Hayır

Kart saklama işleminde ek olarak OTP kontrolü yapmak isterseniz bu parametre kullanılır. Daha detaylı bilgi için lütfen destek ekibimiz ile iletişime geçiniz.

25

subscription_id

string

Hayır

Düzenli ödeme kodu, mevcut bir düzenli ödemenize manuel ödeme almak istediğinizde invoice_no ile beraber kullanılır.

26

invoice_no

string

Hayır

Düzenli ödeme fatura numarası.

27

ratio_code_method

char(1)

Hayır

Bu alanla ilgili daha detaylı bilgi için lütfen destek ekibimiz ile iletişime geçiniz.

28

merge_option

bool

Hayır

Bu alanla ilgili daha detaylı bilgi için lütfen destek ekibimiz ile iletişime geçiniz.

29

pos_type

int

Hayır

Bu alanla ilgili daha detaylı bilgi için lütfen destek ekibimiz ile iletişime geçiniz

30

approved_card

bool

Hayır

Bu alanla ilgili daha detaylı bilgi için lütfen destek ekibimiz ile iletişime geçiniz.

No

Parametre İsmi

Tip

Açıklama

1

post_url

string

Bu URL'e redirect ettiğinizde bankanın 3D doğrulama sayfasını gösterir.

2

html_content

string

post_url yerine bu HTML content'i sayfanıza eklediğinizde bankanın 3D doğrulama sayfasını gösterir.

3

token_id

string

İşlemin token bilgisi

4

session_id

string

3D ödeme akışının session bilgisi

5

object_name

string

tdsinitial_response

6

code

string

Bknz.HTTP Status Kodlar

7

message

string

işlem sonuç mesajı

Request
{
"return_url": "https://pts-kurumsal.paynet.com.tr/Demo/TDSCharge",
"amount": "20",
"reference_no": "REF1001",
"agent_id": "",
"pos_type": "5",
"transaction_type": "1",
"company_amount": null,
"add_commission": "False",
"ratio_code": "",
"instalment": "0",
"merge_option": "False",
"ratio_code_method": "",
"domain": "",
"approved_card": "False",
"card_holder": "******",
"card_hash": "",
"pan": "******",
"month": "**",
"year": "**",
"cvc": "***",
"card_holder_phone": "",
"card_holder_mail": "",
"description": "test 2",
"save_card": "False",
"card_owner_id": "",
"user_unique_id": "",
"user_gsm_no": "",
"card_desc": "",
"subscription_id": "",
"invoice_no": ""
}
Response
{
"token_id": "DF63C3CB-358A-4258-BDDA-522F4D8C5FA8",
"session_id": "js_EAAAAFAL6CJHCCqAoll6DRsSqLfUMmn0pcqT6LZiJk6ZX*3G",
"post_url": "https://pts-api.paynet.com.tr/v1/paynetjgate/tds_easy?session_id=js_EAAAAFAL6CJHCCqAoll6DRsSqLfUMmn0pcqT6LZiJk6ZX*3G&token_id=DF63C3CB-358A-4258-BDDA-522F4D8C5FA8",
"html_content": "<form name=\"paynetForm\" id=\"paynetForm\" method=\"post\" action=\"https://pts-api.paynet.com.tr/v1/paynetjgate/tds_easy\"><input type=\"hidden\" name=\"session_id\" value=\"\"/><input type=\"hidden\" name=\"token_id\" value=\"\"/></form><script type=\"text/javascript\">document.forms[0].submit();</script>",
"object_name": "tdsinitial_response",
"code": 0,
"message": "Başarılı İşlem"
}

3D Ödemesi Yapmak

3D doğrulama sonucunda kredi kartından ilgili tutarın çekim yapıldığı servis. "3D ödeme başlatma" servisinde kullandığınız return_url'e post edilen session_id ve token_id değerlerini bu service post edip ödeme akışını tamamlayabilirsiniz.

İstek Parametreleri
Dönüş Parametreleri
Request
Response
Service Url

Parametre İsmi

Tip

Zorunlu

Açıklama

session_id

string

Evet

3D ödeme akışının session bilgisi

token_id

string

Evet

İşlemin token bilgisi

transaction_type

char(1)

Hayır

Satış ya da ön provizyon. 1 satış, 3 ön provizyon. Varsayılan satış işlemidir.

company_amount

decimal

Hayır

Eğer alt bayileriniz var ise işlemin ne kadarının sizin hesabınıza aktarılacağını belirleyebilirsiniz.

Parametre İsmi

Tip

Açıklama

id

int

tekil paynet işlem id

xact_id

string

paynet işlem id'nin hash değeri

xact_date

Datetime

işlemin tarihi

transaction_type

char(1)

işlem tipi 1: satış, 2: ön provizyon

pos_type

int

pos tipi

is_tds

string

True ise 3D'siz işlem yapılamaz. False ise 3D'li veya 3D'siz işlem yapılabilir.

user_id

string

Kullanıcı kodu

email

string

Mail adresi

phone

string

Telefon bilgisi

bank_id

string

Banka kodu

bank_name

string

Banka adı

instalment

int

Taksit bilgisi

ratio

float

işlem komisyon oranı

card_no_masked

string

Maskeli kart bilgisi

card_holder

string

Kart sahibi

amount

decimal

Brüt işlem tutarı

net_amount

decimal

Komisyon hariç tutar

comission

decimal

Komisyon tutarı

comission_tax

decimal

Komisyon hizmet tutarı

currency

string

Para birimi

authorization_code

string

Banka onay kodu

reference_code

string

Banka referans kodu

order_id

string

Banka sipariş numarası

is_succeed

bool

İşlemin başarılı ya başarısız olduğu bilgisi. true ise ilgili karttan tutar tahsil edilmiş demektir.

paynet_error_id

string

Paynet hata kodu

paynet_error_message

string

Paynet hata açıklaması

bank_error_id

string

Bankadan bildirilen hata kodu

bank_error_message

string

Bankadan bildirilen hata mesajı

bank_error_short_desc

string

Bankadan bildirilen hata mesajı

bank_error_long_desc

string

Bankadan bildirilen hata mesajı

agent_reference_no

string

Request sırasında gönderilen referans kodu

campaign_url

string

Bazı kart progamlarında + taksit ve taksit erteleme seçimi işlem sonrası başka bir uygulamada seçilebiliyor.

end_user_comission

decimal

ratio_code kullanımında komisyon değeri

end_user_ratio

float

ratio_code kullanımında komisyon oranı

ratio_code

string

oran kodu

ratio_code_method

string

oran kodu methodu

is_save_card_succeed

bool

Kart saklama işlemi yapılıyorsa kart saklama sonucu

save_card_result_message

string

Kart saklama mesajı

card_owner_id

string

Kart saklamada bir sonraki sefer kullanılacak id

card_logo_url

string

Saklı kart logosu

md_status

string

Banka 3D sonuç kodu

object_name

string

Nesne adı

code

string

http status kodu

message

string

İşlem sonuç mesajı

{
"session_id":"{{session}}",
"token_id":"{{token}}"
}
{
"id":2049018,
"xact_id":"xk_EAAAAJ4Xc96iya0kRYaut2qsj*AFozqI3*nF0BwfoZWgswYK",
"xact_date":"2018-12-04T09:03:59.81",
"transaction_type":1,
"pos_type":6,
"is_tds":false,
t_id":"20077",
"user_id":"PaynetApi",
"email":"",
"phone":" ",
"bank_id":"ZDGR",
"bank_name":"Diğer Banka",
"instalment":0,
"ratio":0,
"card_no_masked":"450803******4509",
"card_holder":"TEST TEST",
"amount":12.5,
"net_amount":12.25,
"comission":0,
"comission_tax":0,
"currency":"TRY",
"authorization_code":"aut-1513",
"reference_code":"ref-1513",
"order_id":"order-1513",
"is_succeed":true,
"paynet_error_id":"",
"paynet_error_message":"",
"bank_error_id":"",
"bank_error_message":"",
"bank_error_short_desc":"",
"bank_error_long_desc":"",
"agent_reference_no":"deneme11",
"campaign_url":null,
"end_user_comission":0.25,
"end_user_ratio":0.02,
"ratio_code":"",
"ratio_code_method":" ",
"is_save_card_succeed":false,
"save_card_result_message":null,
"card_owner_id":null,
"user_unique_id":null,
"card_hash":null,
"card_bank_id":null,
"card_logo_url":null,
"md_status":-1,
"object_name":"transaction",
"code":100,
"message":"Önceki Başarılı İşlem"
}

Sistem

URL

Canlı sistem

https://api.paynet.com.tr/v2/transaction/tds_charge

Test sistemi

https://pts-api.paynet.com.tr/v2/transaction/tds_charge

tds_charge işlemi sırasında eğer connection timeout ya da execution time out gibi sebeplerden dolayı cevap alamıyorsanız, aynı session_id ve token_id ile cevap alana kadar işleme devam edebilirsiniz. Sistem aynı session_id ve token_id ile daha önceden başarılı bir işlem var ise o işlemi döndürür. Bu durumda sonuç kodu 0 yerine 100 döner, sonuç mesajı da “Önceki Başarılı İşlem” şeklinde döner.