Geliştirici Dokümanı
Bu doküman geliştiriciler için adım adım Token Integration Hub Protokolüne nasıl entegre olunacağını anlatır.
Kendi Yazılımınız ile Token integration Hub DLL'i Entegre Edin
C# .NET Forms App Örneği
Adım 1: Yeni Bir Proje Açın

Adım 2: Sağladığımız IntegrationHub Kütüphanesini Projeye Ekleyin
“Add Reference…” butonuna tıklayın.

“IntegrationHub.dll” adlı dosyayı seçip OK tuşuna basın.

Bu aşamalardan sonra kod içinde IntegrationHub kütüphanesini kullanabilirsiniz:
using IntegrationHub; public static IntegrationHub.POSCommunication communication = IntegrationHub.POSCommunication.getInstance("Firma İsmi");
Adım 3 (Opsiyonel): Yardımcı Json Classlarımızı ve Json Kütüphanesini Ekleyin
Bu kısım isteğe bağlıdır, ancak önerilmektedir; çünkü JSON oluşturacak ve ayrıştıracaksınız. Sağladığımız sınıflar ve kütüphaneler, bunu yapmanızı kolaylaştıracaktır. Bu dokuman, bu adımı tamamlamışsınız gibi devam edecektir. Kendi JSON dönüştürme sistemlerinizi yazmak isterseniz, bunu yapmaktan çekinmeyin; ancak bu dokumanla ilerlemek zorlaşabilir.
Newtonsoft.Json paketini NuGet ile indirin

Projenize, şablon dosyalarında sağlanan
Basket.cs
,FiscalInfo.cs
veReceiptInfo.cs
sınıflarını ekleyin.
Adım 4: Communication Objesinin Oluşturulması
Communication nesnesini, uygulama genelinde erişilebilir olmasını sağlamak için Program sınıfı kapsamında bir singleton olarak başlatın. İletişimin uygulama başlayınca hemen başlamasını istemiyorsanız Objeyi bir buton yardımı ile kullanıcı butona basınca oluşturabilirsiniz.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TokenDotNet
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
///
public static IntegrationHub.POSCommunication communication = IntegrationHub.POSCommunication.getInstance("Firma İsmi");
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}
Adım 5: Sepet Objesi ve Callbackleri Ayarlamak
Cihaz durumu ve seri iletişimi yönetmek için callback'leri ayarlayın ve sepet nesnesini ana formun içinde bir üye değişkeni olarak ayarlayın. Aşağıdaki kod parçası, şablon projedeki kodun basitleştirilmiş bir versiyonudur.
namespace TokenDotNet
{
public partial class MainForm : Form
{
private Basket basket;
private IntegrationHub.POSCommunication communication = Program.communication;
public void deviceStateCallback(bool isConnected, string id)
{
Control.CheckForIllegalCrossThreadCalls = false;
if (isConnected)
{
//Device connect
}
else
{
//Device disconnect
}
}
public int serialInCallback(int type, string value) {
//Do what you want with the data which is passed as type,value pair.
//Types can be found in documentation.
return 1;
}
private void setUpCallbacks()
{
communication.setDeviceStateCallback(deviceStateCallback);
communication.setSerialInCallback(serialInCallback);
}
public MainForm()
{
InitializeComponent();
//init callbacks non-blocking way
Thread thread = new Thread(setUpCallbacks);
thread.Start();
//create basket
basket = new Basket();
basket.basketID = "93ced0be-99f5-4e42-b0ca-bc781c778d69";
basket.createInvoice = false;
basket.documentType = 0;
basket.isVoid = false;
}
private void clearBasket()
{
basket = new Basket();
}
private FiscalInfo constructFiscalInfoFromJson(string json)
{
return JsonConvert.DeserializeObject<FiscalInfo>(json);
}
private ReceiptInfo constructReceiptInfoFromJson(string json)
{
return JsonConvert.DeserializeObject<ReceiptInfo>(json);
}
private string constructJsonFromBasket(Basket basket)
{
return JsonConvert.SerializeObject(basket, Formatting.Indented);
}
private void sendBasketToPOS()
{
int basketStatus = communication.sendBasket(constructJsonFromBasket(basket));
}
}
}
Integration Hub API C# Dokümanı
USB Üzerinden Seri Haberleşme İçin Communication Objesi
Communication, kodunuz ile Android ÖKC cihazı arasında Integration Hub API'sini kullanarak iletişimi kolaylaştıran bir objedir. İletişimi başlatmak için öncelikle bu nesneyi oluşturmalısınız. Bu nesne oluştuktan sonra arka planda DLL bağlanmış olacak ve dokumanın ileri kısımlarında anlatıldığı gibi cihaz bağlanması veya bağlantı kopması durumlarında sizi callback mekanizması ile bilgilendiriyor olacak. Detaylı kullanım için Token Template Simulator uygulamasının kaynak kodlarına bakabilirsiniz.
//Init the communication object using Instance of it.
public static IntegrationHub.POSCommunication communication = IntegrationHub.POSCommunication.getInstance("Firma İsmi");
ÖKC Bağlantısı
Cihaz durumundaki değişiklikleri dinlemek
Cihaz durumlarındaki değişiklikleri dinlemek için
setDeviceStateCallback()
komutunu kullanın. Bu callback, yeni bir cihaz bağlandığında veya mevcut cihaz bağlantısı kesildiğinde yürütülecektir.isConnected
parametresi, callbackin bir cihaz bağlantısı mı yoksa bağlantı kesilmesi mi olduğunu temsil eder. True değeri, bir cihazın bağlı olduğu anlamına gelir; false değeri ise bir cihazın bağlantısının kesildiğini gösterir.id
cihazın mali numara bilgisini döndürür.
Bu fonksiyon, senkron olarak çalışan getDeviceInfo()
'u çağırdığı için ana program akışınızı engelleyebilir. Kullanırken dikkatli olun, ana programınızın engellenmemesi için thread'ler veya diğer yapılar kullanın. Optimal bir durumda çalıştırılması çok az zaman alır, ancak sorunlara yol açabilir.
isConnected true geldiğinde kısımları çekmek zorunludur. Fiscal bilgileri alınmadan satış işlemlerine başlamayın.
//Signature of the function
public delegate void DeviceStateCallback(bool isDeviceConnected, string id);
public void deviceStateCallback(bool isConnected, string id)
{
Control.CheckForIllegalCrossThreadCalls = false;
if (isConnected)
{
//Device connected
string fiscalInfo = communication.getFiscalInfo();
}
else
{
//Device disconnected
}
}
communication.setDeviceStateCallback(deviceStateCallback);
Bağlı cihaz tipinin alınması
IntegrationHub.dll hem X30 TR hem de 300 TR ile uyumlu çalışmaktadır. Anlık olarak hangi cihazın bağlı olduğunu anlamak için
getActiveDeviceIndex
komutunu kullanabilirsiniz. Device state callback ile bağlantının sağlandığına emin olduktan sonra bu komutu çağırdığınızda X30 TR için 0, 300 TR için ise 1 değerini dönecektir.
ÖKC'den kısımları (KDV'leri, departmanları) nasıl çekebilirim?
Device state callback'i ile bağlantının sağlandığına emin olduktan sonra
getFiscalInfo()
komutunu kullanarak ÖKC cihazından bölüm ve kaydedilmiş ürün bilgilerini alın. Bağlantının sağlandığına nasıl emin olunacağı ile alakalı kod örneği Token Template Simulator'ün kaynak dosyalarında bulunmaktadır. Bu fonksiyon, bir JSON objesi döndürür.
Fiscal bilgilerini almak protokolü kullanmak için zorunludur. Fiscal bilgilerini alınmadan satış işlemlerine başlamayın.
Bu fonksiyon senkron olarak çalıştığı için ana program akışınızı engelleyebilir. Kullanırken dikkatli olun; ana programınızın engellenmemesi için thread'ler veya diğer yapılar kullanın. Optimal bir durumda çalıştırılması çok az zaman alır, ancak sorunlara yol açabilir.
//Returns the sections and saved products as a json string.
string fiscalInfo = communication.getFiscalInfo()
Protokolün İletişim Fonksiyonları
ÖKC'ye Sepet Yollamak
sendBasket()
fonksiyonu, sepet bilgilerini ÖKC cihazına göndermek için kullanılır. Parametre olarak bir sepet JSON'u sağlanmalıdır. Bu JSON'un örneğini 'JSON Örnekleri' bölümünde bulabilirsiniz.sendBasket fonksiyonuna cevap olarak gönderimin başarılı olduğu (1) veya başarısız olduğu (0) bilgisi döner.
Satışın ve ödemelerin durumunu serialInCallback üzerinden ilgili tag ile takip etmelisiniz.
//Returns 1 if succeed, 0 if fail
int basketStatus = communication.sendBasket(REQUEST_BODY);
ÖKC' ye Ödeme Yollamak
Eğer X30 TR' ye bağlıysanız, hem sepet hem ödeme bilgilerini aynı istek içinde
sendBasket
fonksiyonu ile göndermelisiniz.Eğer 300 TR' ye bağlıysanız, sadece 1 tane ödeme varsa ödeme bilgisini sepet içerisindeki ürün bilgileriyle beraber
sendBasket
komutu ile gönderebilirsiniz. Birden fazla ödeme yollanmak istenirsesendBasket
komutu ile sepet gönderildikten sonrasendPayment
komutu ile ödemeler tek tek gönderilmelidir.sendPayment fonksiyonuna cevap olarak gönderimin başarılı olduğu (1) veya başarısız olduğu (0) bilgisi döner.
Ödemelerin durumunu serialInCallback üzerinden ilgili tag ile takip etmelisiniz.
//Returns 1 if succeed, 0 if fail
int paymentStatus = communication.sendPayment(REQUEST_BODY);
300TR için örnek
sendPayment
isteği:
{
"amount": 1000,
"type": 1
}
300TR' de fiş iptali için ise,
sendPayment
isteği içinde isVoid değerini true göndermeniz yeterli.
{
"isVoid": true
}
ÖKC'den Gelen Paketleri Dinlemek
setSerialInCallback()
komutunu kullanarak ÖKC'den gelen yanıtları dinleyin. Bu komutu girdikten sonra, ayrı bir thread' de izlenen iletişim, gelen bilgileri belirlediğiniz callback fonksiyonuna yönlendirilecektir.Type
, ÖKC'den gelen verinin türünü temsil eder; türler ve tanımları bu belgede bulunan Türler tablosunda bulunabilir.Value
, veriyi temsil eden JSON dizesidir.
//Signature of the function
public delegate int SerialInCallback(int type, string value);
public int serialInCallback(int type, string value) {
//Do what you want with the data which is passed as type,value pair.
//Types can be found in documentation.
return 1;
}
communication.setSerialInCallback(serialInCallback);
serialInCallback'te Hangi Veri Tipleri Gelir?
Aşağıdaki tablo, kütüphanede mevcut olan istek türlerini açıklamaktadır. Bu türler, seri iletişimdeki callback aracılığıyla dinlenmelidir.
1
Sepet durumunun döndüğü tip (sadece 300TR' de parçalı ödemele senaryoları için)
3
Satış bilgisini döner
9
Cihazda satış ekranı açık değilken sepet veya ödeme gönderilirse bu paket döner.
10
Gönderilen ödemenin cevabı (sadece 300TR' de parçalı ödemele senaryoları için)
Satış Bilgilerini Dinlemek
Callback fonksiyonu ayarlandığında, gönderilen satışların durumu belirttiğiniz callback fonksiyonuna iletilecektir.
Aşağıda callback fonksiyonunun örnek kullanımı görülebilir. Satış JSON'u örneği 'Örnek JSON' bölümünde bulunabilir.
public int serialInCallback(int type, string value) {
// If sale info
if(type == 3){
//This will print 3 to the console since type of sale info is 3.
//See request types table in documentation.
Console.WriteLine(type);
//This will write the sale json to console.
Console.WriteLine(value);
}
return 1;
}
İletişimin Kod Üzerinden Olarak Kontrol Edilmesi
Kod üzerinden ÖKC bağlantısını kesmek ve ÖKC'ye tekrar bağlanmak için deleteCommunication()
ve reConnect()
fonksiyonlarını kullanabilirsiniz.
// Bağlantının Kesilmesi
communication.deleteCommunication();
// Tekrar Bağlanılması
communication.reConnect();
JSON Açıklamaları
Sepet JSON'ı
Örnek
{
"basketID": "93ced0be-99f5-4e42-b0ca-bc781c778d69",
"createInvoice": false,
"documentType": 0,
"isVoid": false,
"items": [
{
"name": "Su",
"pluNo": 0,
"price": 500,
"sectionNo": 1,
"unit": "Adet",
"quantity": 1000,
"taxPercent": 1000
},
{
"barcode": "",
"name": "Armut",
"pluNo": 0,
"price": 1500,
"sectionNo": 1,
"quantity": 1000,
"taxPercent": 1000
}
],
"paymentItems": [
{
"amount": 1000,
"type": 1
},
{
"amount": 1000,
"type": 3
}
],
"customerInfo": {
"buildingName": "Building B",
"buildingNumber": "202",
"cityName": "City Y",
"citySubdivisonName": "Subdivision 2",
"country": "Country B",
"email": "[email protected]",
"isLock": false,
"name": "Ege Yardımcı",
"postalZone": "67890",
"region": "Region Y",
"room": "20",
"street": "Street B",
"taxID": "0987654321",
"taxScheme": "Scheme B",
"telefax": "654321",
"telephone": "0123456789"
},
"adjust": {
"description": "İndirim Açıklaması",
"discountOrSurcharge": 0,
"type": 0,
"value": 2000
}
}
Açıklama
{
"basketID": "93ced0be-99f5-4e42-b0ca-bc781c778d69",
"createInvoice": false,
"documentType": 0,
"isVoid": false,
"items": [],
"paymentItems": [],
"customerInfo": null,
"adjust": null
}
Alan
Tip
Açıklama
Örnek Değer
basketID
string
UUID
“93ced0be-99f5-4e42-b0ca-bc781c778d69”
createInvoice
bool
Fiş oluştur.
true
documentType
int
Satış tipi.
SATIS(0), AVANS(9000), FATURA TAHSILATI(9001), CARI TAHSILAT(9002), FATURA BILGI FISI(9005), E-FATURA BILGI FISI(9006), E-ARSIV BILGI FISI(9007), ECZANE(9008)
isVoid
bool
Eğer true ise iptal fisi basilacaktir.
false
items
[object]
Sepetteki ürünlerin listesi.
paymentItems
[object]
Ödeme planının listesi.
customerInfo
object
Müşteri Bilgisi.
adjust
object
İndirim/Arttırım bilgisi.
note
string
Fiş altı notu
Sepete nasıl ürün eklerim?
Items Objesi
Sepete bu formatta ürün ekleyebilirsiniz.
Eklediğiniz ürün cihazda PLU olarak kayıtlıysa pluNo ekleyebilirsiniz.
"items": [
{
"barcode": "",
"name": "Su",
"pluNo": 0,
"price": 500,
"sectionNo": 1,
"taxPercent": 1000,
"unit": "Adet",
"quantity": 1000
}]
Alan
Tip
Açıklama
Örnek Değer
barcode
string
Ürün barkodu
8690006200
name
string
Ürün adı
"Su"
pluNo
int
Ürün PLU numarası (sadece cihazda PLU olarak kayıtlıysa gereklidir)
0
price
int
Ürünün kuruş cinsinden fiyatı
500
sectionNo
int
Kısım no
1
unit
string
Ölçü birimi
"Adet"
quantity
int
Miktarın 1000 ile çarpılmış hali
1000
Sepete ödeme nasıl eklerim?
PaymentItems Objesi
Sepete aşağıdaki gibi ödeme ekleyerek ÖKC'de ekstra işleme gerek kalmadan ödemeleri tamamlayabilirsiniz.
"paymentItems": [
{
"amount": 1000,
"type": 1
}
]
Ödeme Tipleri
Sepete ödeme eklerken ve satış durum bilgisini alırken aşağıdaki ödeme tipi değerlerini kullanabilirsiniz.
Ödeme Tipi
Değer
Açıklama
PAYMENT_CASH
1
Nakit
PAYMENT_CHEQUE
2
Çek
PAYMENT_CREDITCARD
3
Kredi Kartı
PAYMENT_FOOD
7
Yemek Kartı
PAYMENT_ODEMESIZ
8
Ödemesiz
PAYMENT_IKRAM
9
İkram
PAYMENT_VERESIYE
10
Veresiye
PAYMENT_PUAN
11
Puan
PAYMENT_VPOS
12
EPOS Ödeme
PAYMENT_MOBILE
13
Mobil Ödeme
PAYMENT_EMONEY
14
E-Para Ödeme
PAYMENT_CHARITY
15
Bağış
PAYMENT_BOND
16
Bond ile Ödeme
PAYMENT_OPENACCOUNT
17
Açık Hesap
PAYMENT_MONEYTRANSFER
18
Para Transferi
PAYMENT_TRANSPORTATIONCARD
19
Ulaşım Kartı
PAYMENT_GIFTCARD
20
Hediye Kartı
Hangi satış tipleri kullanabilirim?
Sepet JSON'ı içine "documentType" hanesinde desteklenen satış tiplerini gönderebilirsiniz. Normal satış dışındaki satış tipleri için sepette başka gerekli haneler bulunmaktadır. Diğer satış tipleri için örnek sepetler burada bulunmaktadır. Diğer bilgiler dokümantasyonda bulunmaktadır.
Satış
0
Avans
9000
Fatura Tahsilatı
9001
Cari Tahsilat
9002
Fatura Bilgi Fişi
9005
e-Fatura Bilgi Fişi
9006
e-Arşiv Bilgi Fişi
9007
Matrah Dışı Tutar İçeren Satış (Eczane/Katkı Payı)
9008
Sepete müşteri bilgileri nasıl eklerim?
CustomerInfo Objesi
Gerekli durumlarda müşteri bilgilerini aşağıdaki formatta ekleyerek belge düzenlenmesini sağlayabilirsiniz.
"customerInfo": {
"buildingName": "Building B",
"buildingNumber": "202",
"cityName": "City Y",
"citySubdivisonName": "Subdivision 2",
"country": "Country B",
"email": "[email protected]",
"isLock": false,
"name": "Ege Yardımcı",
"postalZone": "67890",
"region": "Region Y",
"room": "20",
"street": "Street B",
"taxID": "0987654321",
"taxScheme": "Scheme B",
"telefax": "654321",
"telephone": "0123456789"
}
Alan
Tip
Açıklama
Örnek Değer
buildingName
string
Bina adı.
"Building B"
buildingNumber
string
Bina numarası.
"202"
cityName
string
Şehir adı.
"City Y"
citySubdivisonName
string
İlçe adı.
"Subdivision 2"
country
string
Ülke adı.
"Country B"
isLock
bool
Eğer true ise gönderdiğiniz bilgiler ÖKC'de değiştirilemez.
false
name
string
İsim.
"Ege Yardımcı"
postalZone
string
Posta kodu.
"67890"
region
string
Bölge.
"Region Y"
room
string
Oda numarası.
"20"
street
string
Sokak adı.
"Street B"
taxID
string
Vergi numarası.
"0987654321"
taxScheme
string
Vergi dairesi.
"Scheme B"
telefax
string
Telefax numarası.
"654321"
telephone
string
Telefon numarası.
"0123456789"
Sepete veya ürüne nasıl indirim artırım ekleyebilirim?
Adjust Objesi
Sepete veya ürüne indirim artırım eklemek için aşağıdaki obje formatını kullanabilirsiniz.
Bu objeyi ürünün altına eklediğinizde ürüne, doğrudan sepetin altına eklediğinizde sepetin tamamına indirim/artırım yapmış olursunuz.
"adjust": {
"description": "Açıklama",
"discountOrSurcharge": 0,
"type": 0,
"value": 2000
}
Alan
Tip
Açıklama
Örnek Değer
description
string
İndirim/Arttırım açıklaması. Fişte bastırılır.
"İndirim"
discountOrSurcharge
int
0 indirim, 1 arttırım.
0
type
int
0 fiyat indirim/arttırımı, 1 yüzdelik indirim arttırım.
0
value
int
Adet başına İndirim veya arttırım değerinin 100 ile çarpılmış hali
2000
totalValue
int
Ürüne yapılan toplam indirim veya artırım değerinin 100 ile çarpılmış hali
2000
Fiscal Bilgisi JSON'ı
Örnek
{
"businessMode": 0,
"pluCount": 1,
"plus": [
{
"barcode": "",
"name": "Elma",
"pluNo": 0,
"price": 2000,
"sectionNo": 1,
"taxPercent": 1000,
"type": 0,
"unit": "Adet",
"vatID": 1
}
],
"receiptLimit": null,
"sectionCount": 2,
"sections": [
{
"limit": 0,
"name": "GİDA",
"price": 0,
"sectionNo": 1,
"taxPercent": 1000,
"type": 0
},
{
"limit": 0,
"name": "TEKEL",
"price": 0,
"sectionNo": 2,
"taxPercent": 2000,
"type": 0
}
]
}
Açıklama
{
"businessMode": 0,
"pluCount": 1,
"plus": []
"receiptLimit": null,
"sectionCount": 2,
"sections": []
}
Alan
Tip
Açıklama
Örnek Değer
businessMode
int
Isletme modu.
Standart(0), Eczane(1), Konaklama(2)
pluCount
int
Cihazda kayitli PLU adeti.
1
plus
[object]
Cihazda kayıtlı ürünlerin listesi.
[{"barcode": "", "name": "Elma", "pluNo": 0, "price": 2000, "sectionNo": 1, "taxPercent": 1000, "type": 0, "unit": "Adet", "vatID": 1}]
receiptLimit
int
Fiş limiti. Bu tutarın üstüne bilgi fişi oluşturulmalıdır.
6900
sectionCount
int
Cihazda kayıtlı kısımların sayısı.
2
sections
[object]
Cihazda kayıtlı kısımların listesi.
[{"limit": 0, "name": "GİDA", "price": 0, "sectionNo": 1, "taxPercent": 1000, "type": 0}, {"limit": 0, "name": "TEKEL", "price": 0, "sectionNo": 2, "taxPercent": 2000, "type": 0}]
Plus Objesi
"plus": [
{
"barcode": "",
"name": "Elma",
"pluNo": 0,
"price": 2000,
"sectionNo": 1,
"taxPercent": 1000,
"type": 0,
"unit": "Adet",
"vatID": 1
}
]
Alan
Tip
Açıklama
Örnek Değer
barcode
string
Ürün barkodu.
""
name
string
Ürün ismi
"Elma"
pluNo
int
PLU numarası.
0
price
int
Ürün fiyatı kuruş cinsinden.
2000
sectionNo
int
Bağlı oldugu kısım numarası.
1
taxPercent
int
Vergi dilimi.
1000
type
int
Ürün tipi.
Standart(0), Konaklama(1)
unit
string
Ölçü birimi.
"Adet"
vatID
int
-
1
Section Objesi
"sections": [
{
"limit": 0,
"name": "GİDA",
"price": 0,
"sectionNo": 1,
"taxPercent": 1000,
"type": 0
}
]
Alan
Tip
Açıklama
Örnek Değer
limit
int
-
0
name
string
Kısım adı.
"GİDA"
price
int
-
0
sectionNo
int
Kısım numarası.
1
taxPercent
int
Vergi dilimi.
1000
type
int
-
0
Satış Durumu JSON'ı
Satış durumu JSON'u, ÖKC tarafından ana makineye gönderilecektir. İşte bu JSON'un iki örneği: biri başarılı bir satış, diğeri ise başarısız bir satış. Bu bilgiler callback'ler aracılığıyla gözlemlenebilir.
Örnek
//Başarılı Satış
{
"basketID": "93ced0be-99f5-4e42-b0ca-bc781c778d69",
"documentType": 0,
"InstanceIdentifier": "XXXX",
"invoiceID": "",
"message": "OK",
"paymentCount": 1,
"paymentItems": [
{
"amount": 2000,
"BatchNo": 0,
"currencyId": 0,
"description": "Tum tutarı nakit olarak odet",
"operatorId": 0,
"status": -1,
"TxnNo": 0,
"type": 1
}
],
"receiptNo": 2,
"status": 0,
"UUID": "aa2c8046-f0bd-4617-9f5d-0bb6eb4f4ed7",
"zNo": 12
}
//Başarısız Satış
{
"basketID":"",
"message":"CANCELLED",
"status":-1
}
Belirli Banka ve Yemek Kartı Uygulamalarına Yönlendirme
paymentItems içindeki ödemelerde, eğer o ödeme kredi kartı (type 3) veya yemek kartı (type 7) ise, cihazda yüklü olması şartıyla, belirli bir banka veya yemek kartı uygulamasına yönlendirilmesini sağlayabilirsiniz.
Banka ve yemek kartı uygulamaları listesi için tıklayın.
"paymentItems": [
{
"amount": 1000, // 10 TL
"type": 3, // Kredi Kartı
"operatorId": 67 // Yapı Kredi
}
]
veya
"paymentItems": [
{
"amount": 1000, // 10 TL
"type": 7, // Yemek Kartı
"operatorId": 1005 // TokenFlex
}
]
Last updated