Tami üzerinden yapılan tek çekimli veya taksitli satış işlemi iletilirken kullanılmak istenen puan bilgisi de gönderilir. Puan sorgulama cevabında dönen puan tipi ve kullanılmak istenen puan tutarı satış işleminin isteğinde gönderilir.
Satış isteğinde amount alanında toplam işlem tutarı gönderilir. Gönderilen tutarın ne kadarının puandan kullanılması istendiğini rewardToBeUserd alanın altındaki amount tutarında göndermeniz gerekir.
Test/Prod Ortamları API Kullanıcı Bilgisi
Tami üzerinden gerçekleştirilen Sanal POS işlemleri için üye
işyerleri test ortamında gerçekleştirmek istedikleri kontrolleri aşağıdaki
tabloda verilen üye işyeri bilgilerini kullanabilirler.
Üretim ortamında Tami üzerinden gerçekleştirilecek Sanal POS
işlemleri için başvuru yapılarak üye işyeri numarası alınır ve bu bilgilerle
işlem geçirilir.
Sandbox test portaline https://sandbox-portal.tami.com.tr adresinden ulaşabilirsiniz. Aşağıda iletilen kullanıcılar ile test portale giriş yapıldığında bu kullanıcıya bağlı işyeri tarafından gerçekleştirilen işlemleri görüntülenebilir. İşlemler iptal/iade edilebilir.
Kullanıcı Telefon Numarası
Kullanıcı Şifre
Sms / Email Otp
İşyeri Numarası
Terminal Numarası
Secret Key
5346484700
147854
147852
77006950
84006953
0edad05a-7ea7-40f1-a80c-d600121ca51b
5346484709
147850
147852
77006951
84006954
c8581bb6-a4b2-4925-8c94-529fc651399e
5346484803
147850
147852
77006952
84006955
ff7d4895-0c32-4f48-86ab-fb9ecca9f3d7
5346484807
147850
147852
77006953
84006956
33124ff0-0b19-4cf9-b002-13a35eae865b
5346484800
147850
147852
77006954
84006957
7daf9631-e136-4164-9ddb-dd1c02df851d
5346484808
147850
147852
77006956
84006959
fe6f3fff-0434-4932-a27d-bb3dac9de49d
Hash Hesaplama
Bir çok işlem tipi için gönderilen isteğin header bilgisine PG-Auth-Token eklenmelidir. PG-Auth-Token değeri “MerchantNumber:TerminalNumber:Hash” değerlerinden oluşur.
Burada hash hesabı yapılırken üye işyerine ait merchantNumber, terminalNumber ve secretKey bilgileri sha256 ile hashleyip stringe çevrilerek elde edilir.
public class SHA256Example {\n public static String sha256(Long merchantNumber, Long terminalNumber, String secretKey) {\n String text = merchantNumber.toString() + terminalNumber.toString() + secretKey;\n try {\n MessageDigest digest = MessageDigest.getInstance(\"SHA-256\");\n byte[] hash = digest.digest(text.getBytes(StandardCharsets.UTF_8));\n String sha256Hex = DatatypeConverter.printBase64Binary(hash);\n return sha256Hex;\n } catch (NoSuchAlgorithmException e) {\n e.printStackTrace();\n return null;\n }\n }\n }
TAMİ Test Portalı Bilgileri
Tami test portalına https://sandbox-portal.tami.com.tr adresinden erişebilirsiniz. Bu adresten yukarıda iletilen kullanıcılar ile portal ekranını görüntüleyebilirsiniz.
Üretim ortamı bilgileriniz için https://portal.tami.com.tr adresinden üye olabilir veya e-ticaret destek birimine başvurabilirsiniz.
Satış İşlemi API Bilgileri
Test ortamında yapılacak çalışmalarda "https://sandbox-paymentapi.tami.com.tr/payment/auth" url'i kullanılacaktır.
Üretim ortamında yapılacak çalışmalarda ise "https://paymentapi.tami.com.tr/payment/auth" url'i kullanılacaktır.
İstek Parametreleri ve Açıklamaları
Parametre Adı
Format
Uzunluk
(O)psiyonel / (Z)orunlu/ (Ş)artlı
Açıklama
orderId
String
(2-36)
Z
Ödeme isteğinin Tami-müşteri
arasındaki iletişiminde kullanılan tekil bir iletişim bilgisidir. Üye işyeri
ve pos çifti için bu değer tekil olmalıdır.
amount
Decimal
Z
İşlem tutarıdır. Küsurat ayracı
nokta (.) ile yapılmalıdır.
Kullanılmak istenen Puan tutarıdır.
Küsurat ayracı nokta (.) ile yapılmalıdır.
currency
String
3
Z
İşlemin döviz kodunu belirtir.
Örnek: TL için TRY gönderilmeli.
paymentGroup
String
Z
Ödeme grubu, varsayılan
PRODUCT.
paymentChannel
enum
Ö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
card
Object
Z
cvv
String
Z
Ödemenin alınacağı kartın güvenlik
kodu bilgisi.
expireMonth
Number
(1-12)
Z
Ödemenin alınacağı kartın son
kullanma tarihi ay bilgisi.
expireYear
Number
4
Z
Ödemenin alınacağı kartın son
kullanma tarihi yıl bilgisi.
holderName
String
30
Z
Ödemenin alınacağı kart sahibinin
adı soyadı bilgisi.
number
String
(5-35)
Z
Ödemenin alınacağı kart numarası
bilgisi.
billingAddress
Object
O
address
String
400
O
Üye işyeri tarafındaki fatura adresi
bilgisi.
emailAddress
String
O
Üye işyerine ait mail bilgisi
city
String
30
O
Üye işyeri tarafındaki fatura adresi
şehir bilgisi.
companyName
String
100
O
Üye işyerinin ticari unvan bilgisi.
country
String
50
O
Üye işyeri tarafındaki fatura adresi
ülke bilgisi.
contactName
String
30
O
Üye işyeri tarafındaki fatura
adresi, ad soyad bilgisi.
phone
String
O
Üye işyeri tarafındaki alıcıya ait
GSM numarası.
zipCode
String
15
O
Üye işyeri tarafındaki fatura adresi
posta kodu.
district
String
50
O
Üye işyeri tarafındaki fatura adresi
semt bilgisi.
shippingAddress
Object
O
address
String
400
O
Üye işyeri tarafındaki teslimat
adresi bilgisi.
emailAddress
String
O
Üye işyerine ait mail bilgisi
city
String
30
O
Üye işyeri tarafındaki teslimat
adresi şehir bilgisi.
country
String
50
O
Üye işyeri tarafındaki teslimat
adresi ülke bilgisi.
contactName
String
30
O
Üye işyeri tarafındaki teslimat
adresi, ad soyad bilgisi.
zipCode
String
15
O
Üye işyeri tarafındaki teslimat
adresi posta kodu bilgisi.
district
String
50
O
Üye işyeri tarafındaki teslimat
adresi semt bilgisi.
buyer
Object
Z
ipAddress
String
Z
Üye işyeri tarafındaki alıcıya ait
ip adresidir. Alıcının gerçek ip adresi iletilmesi gerekmektedir.
buyerId
String
50
Ş
E-posta adresi alıcıya ait geçerli
ve erişilebilir bir adres olmalıdır.
name
String
Ş
Üye işyeri tarafındaki alıcıya ait
ad. Buyer objesi opsiyonel bir alandır fakat buyer objesinden herhangi bir
alan gönderilse name iletilmesi zorunlu olur.
surName
String
Ş
Üye işyeri tarafındaki alıcıya ait
soyad. Buyer objesi opsiyonel bir alandır fakat buyer objesinden herhangi bir
alan gönderilse surname iletilmesi zorunlu olur.
identityNumber
String
O
Üye işyeri tarafındaki alıcıya ait
kimlik (TCKN) numarası.
city
String
O
Üye işyeri tarafındaki alıcıya ait
şehir bilgisi.
country
String
O
Üye işyeri tarafındaki alıcıya ait
ülke bilgisi.
emailAddress
String
Z
Ü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.
phoneNumber
String
Z
Üye işyeri tarafındaki alıcıya ait
GSM numarasıdır.
registrationAddress
String
O
Üye işyeri tarafındaki alıcıya ait
kayıt adresi.
zipCode
String
O
Üye işyeri tarafındaki alıcıya ait
posta kodu.
registrationDate
O
Ü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
O
Üye işyeri tarafındaki alıcıya ait
son giriş tarihi. Tarih formatı 2015- 09-17 23:45:06 şeklinde olmalıdır.
basket
O
basketId
String
Ş
Üye işyeri tarafındaki sepete ait
id. Basket içerisinde item iletilirse basketId gönderilmesi zorunlu olur.
basket/basketItems
List
itemId
String
Ş
Üye işyeri tarafındaki sepetteki
ürüne ait id. Basket içerisinde item iletilirse itemId gönderilmesi zorunlu
olur.
itemType
String
Ş
Üye işyeri tarafındaki sepetteki
ürüne ait tip. Geçerli enum değerler: PHYSICAL ve VIRTUAL. Basket içerisinde
item iletilirse itemType gönderilmesi zorunlu olur.
name
String
Ş
Üye işyeri tarafındaki sepetteki ürüne
ait ismi. Basket içerisinde item iletilirse name gönderilmesi zorunlu olur.
category
String
O
Üye işyeri tarafındaki sepetteki
ürüne ait kategori .
subCategory
String
O
Üye işyeri tarafındaki sepetteki
ürüne ait alt kategori.
unitPrice
Decimal
min 0.0
O
Üye işyeri tarafındaki sepetteki
ürünün tekil tutarıdır.
totalPrice
Decimal
min 0.0
Ş
Üye işyeri tarafındaki sepetteki ürüne
ait toplam tutar. 0 ve 0’dan küçük olamaz, tutarlar toplamı sepet tutarına
(amount) eşit olmalıdır. Unitprice * numberOfProducts = totalPrice olmalı
Basket içerisinde item iletilirse totalPrice gönderilmesi zorunlu olur.
numberOfProducts
Number
1-99999
O
Üye işyeri tarafındaki sepetteki
ürünün adedidir.
securityHash
String
Z
Dokümanda belirtilen şekilde hesaplanıp iletilmesi beklenen değerdir. Eksik veya hatalı ise işlem bankaya yönlendirilmez, hata verilir.
Yapılacak servis isteklerinde ve gelen servis cevaplarında securityHash alanının hesaplanması için buradaki dokümantasyondan yararlanabilirsiniz.
Kod Örnekleri
Aşağıda, çeşitli yazılım dilleri kullanılarak yazılmış özel kod örneklerinin linkleri verilmiştir. Tercih ettiğiniz programlama diline ait link üzerinden, önceden belirlenmiş değerlerle yazılmış olan kodları detaylı bir şekilde inceleyebilirsiniz.
Bu örnekler, ilgili işlem tipini içeren kodları içermektedir ve farklı dillerde yazıldığı için çeşitli yaklaşımları ve pratikleri de gözlemleyebilirsiniz. Bu sayede tercih ettiğiniz programlama diline dair daha iyi anlaşılır ve özgün örneklerle çalışma imkanı bulabilirsiniz.
Unutmayın ki bu örnekler ön tanımlı değerlerle yazılmıştır ve gerçek projelerde kullanımı için gerekli uyarlama ve güvenlik önlemleri almanız gerekebilir.
Hata Kodları
Hata kodları listesine bu sayfadan ulaşabilirsiniz.
Test Kartları
Test kartları listesine bu sayfadan ulaşabilirsiniz.