Tami Sanal POS API’lerine (provizyon, satış vb.) istek gönderirken kullanılacak signedRequest token’ının nasıl üretileceği bu sayfada adım adım anlatılmaktadır.
Tami’ye gönderilen istekler düz JSON olarak gönderilmez. Bunun yerine istek gövdesi önce imzalanır (HS512 → JWS), ardından şifrelenir (dir + A256GCM → JWE). Elde edilen token, API’ye şu şekilde iletilir:
Token şifreli olduğu için jwt.io’da açılmaz. Bu bir hata değildir, beklenen davranıştır.
Aşağıdaki tabloda örnek olarak Test (Sandbox) Ortamı bilgileri kullanılmıştır. Üretim (prod) ortamında işlem yaparken kendi üye işyerinize ait Merchant ve Terminal numaralarını kullanmanız gerekir.
| Bilgi | Örnek |
|---|---|
| Üye işyeri numarası | 77006950 |
| Terminal numarası | 84006953 |
| JWK JSON (işyerine özel anahtar dosyası) | Aşağıda |
JWK bulunmuyorsa üye işyeri temsilcisinden talep edilmelidir. k değeri hiçbir kişi veya sistemle paylaşılmamalı, kaynak kod deposuna (git) eklenmemelidir.
Tercih edilen dile ait hazır kod örneği Kod Örnekleri bölümünde mevcuttur. Aşağıdaki adımlar mantığı göstermektedir; herhangi bir JOSE/JWT kütüphanesiyle (Java, Node, Python vb.) aynı akış kurulabilir.
JWK JSON’u olduğu gibi kütüphaneye verilir. İmza anahtarı, k değerinin çözülmüş halidir.
İmza anahtarının SHA-256 özeti, şifreleme anahtarıdır (32 byte → A256GCM):
| Claim | Değer |
|---|---|
| iss | “77006950:84006953” (merchant:terminal) |
| aud | “tami” (sabit) |
| jti | her token için yeni üretilen UUID |
| iat / nbf | üretim anı |
| exp | üretim anından 10 dakika sonrası |
| tami:body | istek gövdesi (servis sözleşmesindeki JSON) |
| tami:apiVersion | “v4” (sabit) |
Claim’ler HS512 ile imzalanır. Başlıkta kid ve typ: JWT yer almalıdır:
İmzalı JWT, aşağıdaki başlıkla şifrelenir ve serialize edilir:
Sonuç: nokta ile ayrılmış 5 parçalı bir compact token elde edilir. Bu, signedRequest değeridir.
Aşağıda, çeşitli yazılım dilleri kullanılarak yazılmış özel kod örneklerinin linkleri verilmiştir. Tercih edilen programlama diline ait link üzerinden, önceden belirlenmiş değerlerle yazılmış olan kodlar detaylı bir şekilde incelenebilir.
Bu örnekler, signedRequest token oluşturma akışının 5 adımını içeren kodları barındırmaktadır ve farklı dillerde yazıldığı için çeşitli yaklaşımları ve pratikleri de gözlemlemek mümkündür. Bu sayede tercih edilen programlama diline dair daha anlaşılır ve özgün örneklerle çalışma imkânı bulunmaktadır.
Unutulmamalıdır 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 önlemlerinin alınması gerekebilir.
K ve Kid değerleri işyerlerine özel benzersiz değerlerdir. Production ortamda İşyeri portal sayfasında yer alan İşyeri Ayarları>Pos Yönetimi sayfasından firmalar görüntüleme yapabilir. Bu bilgilerin işlem güvenliği açısından belirli aralıklarla güncellenmesi firmaların sorumluluğundadır.
Test (Sandbox) ortamda işlem denerken K ve Kid değeri test portalinden aynı şekilde görüntüleme yapılabilir. Herhangi bir destek ihtiyacınız olduğunda TeknikDestek@tami.com.tr adresinden destek ekibimize ulaşabilirsiniz.