Entegrasyon

Epin Scripti ile Mobil Uygulama API'si: Rakiplerinin Sessizce Kurduğu Uygulama Altyapısını ve Kimsenin Anlatmadığı Token Düzenini Perde Arkasıyla Anlatıyoruz

Epin scripti üzerine mobil uygulama API'si nasıl kurulur? Token yönetimi, stok senkronu, push bildirim ve güvenlik katmanlarını perde arkasıyla anlatıyoruz.

Epin Scripti ile Mobil Uygulama API'si: Rakiplerinin Sessizce Kurduğu Uygulama Altyapısını ve Kimsenin Anlatmadığı Token Düzenini Perde Arkasıyla Anlatıyoruz

Mobil uygulama denince akla önce tasarım gelir. Renkler, ikonlar, animasyonlar... Oysa uygulaması olan bayilerle olmayanlar arasındaki gerçek fark ekran değil, arka taraftaki API disiplini. Uygulama sadece bir vitrin; siparişi oluşturan, stoğu kilitleyen, ödemeyi doğrulayan ve kodu teslim eden mantığın tamamı senin sunucunda duruyor. Yani mobil uygulamanın kalitesi, aslında e-pin satış scriptinin API tarafının ne kadar düzgün tasarlandığıyla ölçülür.

Sektörde yaygın bir yanlış var: "Sitemi WebView ile paketleyip uygulama yaparım" fikri. Bu yöntem ilk hafta çalışır gibi görünür, sonra mağaza politikaları, bildirim izinleri, oturum kopmaları ve ödeme akışındaki yönlendirmeler arka arkaya patlar. Doğru yol, siteyle aynı veritabanını kullanan ama kendi kurallarıyla konuşan gerçek bir API katmanıdır. Bu yazıda, bir dijital ürün satış yazılımı üzerine mobil API'nin nasıl kurulduğunu, hangi uç noktalara gerçekten ihtiyacın olduğunu ve nerede güvenlik açığı bıraktığını tek tek konuşuyoruz.

%64Dijital ürün alışverişinin mobil cihazdan gelen payı
2,7 katUygulama kullanıcısının web kullanıcısına göre tekrar satın alma oranı
<400 msSağlıklı bir sipariş uç noktasının hedef yanıt süresi
%19Push bildirimle kurtarılabilen terk edilmiş sepet oranı

Mobil API ile sitenin kendi kodu neden aynı şey değil?

Web tarafında oturum çerezle taşınır, sayfa yenilenir, form gönderilir. Mobil tarafta ise durum tamamen farklıdır: uygulama arka planda uyur, ağ kopar, kullanıcı uçak moduna geçer, telefon değiştirir. Bu yüzden API'nin durumsuz (stateless) olması gerekir. Her istek kendi kimliğini taşımalı, sunucu tarafında "kim olduğunu hatırlayan" bir oturum beklentisi olmamalıdır. Bir başka fark da yanıt biçimidir: web HTML döner, mobil JSON bekler. Aynı iş mantığını iki farklı kabuktan sunmak için servis katmanı ayrımı şarttır. İş kuralı bir kez yazılır, hem web hem API aynı kuralı çağırır. Aksi halde stok düşürme mantığını iki yerde ayrı ayrı sürdürmek zorunda kalırsın ve er geç ikisi birbirinden ayrışır.

Token düzeni nasıl kurulmalı, neden tek anahtar yetmez?

En sık yapılan hata, kullanıcıya ömür boyu geçerli tek bir anahtar vermektir. O anahtar bir kez sızarsa, kullanıcının bakiyesi ve sipariş geçmişi tamamen açığa çıkar. Doğru kurgu ikili yapıdır: kısa ömürlü erişim token'ı (15-60 dakika) ve uzun ömürlü yenileme token'ı. Erişim token'ı her isteğin başlığında gider; süresi dolunca uygulama sessizce yenileme token'ıyla yeni bir tane alır. Kullanıcı bunu hiç fark etmez, ama çalınan bir token bir saat sonra çöpe döner. Buna ek olarak her cihaz için ayrı kayıt tutmalısın; böylece kullanıcı "telefonumu kaybettim" dediğinde tek bir cihazın erişimini iptal edebilirsin. Oturum iptalini cihaz bazında yapamayan bir yapı, güvenli sayılmaz.

Uç noktaMetotGöreviYetkiÖnbellek
/api/auth/loginPOSTGiriş, token çifti üretirHerkese açıkYok
/api/auth/refreshPOSTErişim token'ını yenilerYenileme token'ıYok
/api/catalogGETKategori ve ürün listesiOpsiyonel60-300 sn
/api/product/{id}GETFiyat, stok, açıklamaOpsiyonel30 sn
/api/orderPOSTSipariş oluşturur, stok kilitlerZorunluYok
/api/order/{id}GETDurum ve teslim edilen kodZorunluYok
/api/walletGETBakiye ve hareketlerZorunluYok
/api/device/pushPOSTBildirim jetonu kaydıZorunluYok

Stok senkronu nerede bozuluyor, aynı kod iki kişiye nasıl gidiyor?

Kâbus senaryosu şudur: uygulamada listelenen son ürünü iki kullanıcı aynı saniyede satın alır ve aynı e-pin kodu ikisine birden teslim edilir. Bunun sebebi neredeyse her zaman okuma ile yazma arasındaki boşluktur. Çözüm, stok kontrolünü uygulama katmanında değil veritabanı düzeyinde kilitle yapmaktır: kodu önce "rezerve" durumuna çek, sonra ödemeyi doğrula, en sonunda "teslim edildi" olarak kapat. Rezervasyonun da bir ömrü olmalı; ödenmeyen sipariş belli süre sonra stoğu serbest bırakmalıdır. Mobilde bu daha da kritiktir çünkü kullanıcı ödeme ekranında uygulamadan çıkıp geri döner, süreç yarım kalır. İyi bir epin yazılım mimarisinde stok, ödeme onayından önce kilitlenir ama tüketilmez.

Mobil API entegrasyonunda harcanan geliştirme eforunun dağılımı

  • Kimlik doğrulama ve oturum yönetimi 45%
  • Sipariş ve ödeme akışı 25%
  • Katalog ve önbellekleme 20%
  • Bildirim ve cihaz kaydı 10%

Push bildirim gerçekten satış getirir mi, yoksa sadece rahatsız mı eder?

Bildirimin değeri içeriğinde değil, zamanlamasındadır. "Kampanyamız başladı" bildirimi genellikle sessizce silinir; ama "siparişin teslim edildi, kodun hazır" bildirimi uygulamayı açtırır. Doğru sıralama şöyledir: önce işlemsel bildirimler (sipariş durumu, bakiye yükleme onayı, stok geldi uyarısı), sonra davranışsal olanlar (sepette unutulan ürün, fiyatı düşen paket). Pazarlama bildirimlerini en sona bırak. Ayrıca cihaz jetonlarını düzenli temizle: silinmiş uygulamalara bildirim göndermeye devam etmek, gönderim itibarını düşürür. Bir diğer ayrıntı, bildirim üzerine tıklandığında kullanıcıyı ana ekrana değil doğrudan ilgili sipariş sayfasına götürmektir; bu tek dokunuş, dönüşümü ciddi biçimde değiştirir.

Sürüm numarasını ilk günden başlığa koy

API'ni /api/v1/ ile başlat. Sürüm ayrımı olmadan çıktığın bir API'de yaptığın her değişiklik, mağazada güncelleme yüklememiş kullanıcıların uygulamasını kırar. Sürümleme sonradan eklenebilecek bir şey değildir.

Güvenlikte hangi katmanlar olmazsa uygulaman açık kapı olur?

Mobil uygulama, kullanıcının cihazında çalıştığı için istemci tarafına yazdığın hiçbir şey gizli değildir. Uygulamanın içine gömdüğün anahtar, bir saat içinde çıkarılabilir. Bu nedenle gerçek koruma sunucuda olmalı. Olmazsa olmaz katmanlar şunlardır: her uç noktada oran sınırlama (rate limit), sipariş oluşturmada çift gönderim koruması için idempotency anahtarı, bakiye işlemlerinde sunucu tarafı fiyat doğrulaması ve şüpheli cihaz davranışında otomatik askıya alma. Özellikle fiyatı istemciden almak, sektörün klasik felaketidir: uygulama 1 TL gönderir, sunucu kabul eder, 500 TL'lik ürün 1 TL'ye satılır. Fiyat her zaman sunucuda hesaplanır, istemci sadece ürün kimliği gönderir. Sistemin bu katmanları nasıl karşıladığını özellikler bölümünde inceleyebilirsin.

Kontrol maddesiAmacıTamamlandı ölçütü
Sürümlenmiş uç nokta yapısıEski istemcileri kırmamakTüm yollar /v1 altında
Erişim + yenileme token çiftiSızıntı riskini kısaltmakErişim ömrü 60 dk altında
Cihaz bazlı oturum iptaliKayıp telefon senaryosuPanelden tek cihaz kapatılabiliyor
Idempotency anahtarıÇift sipariş oluşmasınAynı anahtar ikinci kez işlenmiyor
Sunucu tarafı fiyatlamaManipülasyonu engellemekİstemciden tutar kabul edilmiyor
Oran sınırlamaKaba kuvvet ve kazımaIP + kullanıcı bazlı limit aktif
Hata sözlüğüUygulama doğru mesaj göstersinHer hata kodu belgelenmiş
Bildirim jetonu temizliğiGönderim itibarıGeçersiz jetonlar otomatik siliniyor

Uygulamayı sıfırdan yazdırmak mı, hazır API'li bir yazılım almak mı mantıklı?

Karar, zamanın ve ekip büyüklüğünle ilgili. Sıfırdan yazdırmak istersen sadece uygulama değil, arka taraftaki tüm sipariş, bakiye, bayi ve teslimat mantığını da yeniden inşa etmen gerekir; bu genellikle aylarla ölçülen bir iştir. Hazır bir e-pin scripti üzerinde API katmanı zaten tanımlıysa, geriye sadece arayüz kalır ve iş bir kaç haftaya iner. Üstelik web ile uygulama aynı veritabanını kullandığı için stok, fiyat ve bayi iskontoları otomatik olarak senkron kalır. Maliyet karşılaştırmasını yaparken lisans bedelini değil, kaybedilen zamanı hesaba kat; bu pazarda altı ay, bir kampanya döneminin tamamı demektir. Paket farklarını fiyat bölümünden karşılaştırabilirsin.

Uygulamanı hazır bir API'nin üstüne kur

Sipariş, bakiye, stok ve teslimat mantığı hazır tanımlıyken geriye yalnızca arayüz kalır. Pinova'nın entegrasyon katmanını inceleyip kendi mobil yol haritanı netleştirebilirsin.

Mobil uygulama için ayrı bir veritabanı kurmam gerekir mi?

Hayır, hatta kurmamalısın. Uygulama ve web aynı veritabanını kullanmalı ki stok, fiyat ve bakiye tek kaynaktan okunsun. İki ayrı veri kaynağı, senkron sorunlarının en büyük nedenidir.

WebView ile paketlenmiş uygulama gerçekten sorun çıkarır mı?

Uzun vadede evet. Mağaza incelemelerinde sorun yaşama ihtimali yüksektir, bildirim ve derin bağlantı desteği sınırlıdır, ödeme yönlendirmelerinde oturum kopmaları görülür. Kısa vadeli bir köprü olarak kullanılabilir ama kalıcı çözüm değildir.

API dokümantasyonu olmadan geliştirici bulabilir miyim?

Bulursun ama pahalıya mal olur. Belgelenmemiş bir API'de geliştirici zamanının önemli kısmı keşfe gider. Uç nokta listesi, örnek istek-yanıt ve hata kodu sözlüğü hazırsa süre belirgin şekilde kısalır.

Bayilerim de uygulamayı kullanabilir mi?

Evet. Aynı API üzerinde rol bazlı yetkilendirme tanımlanırsa bayi kendi iskontolu fiyatını, bakiyesini ve sipariş geçmişini uygulamadan görür. Bunun için ayrı bir uygulama yazmak gerekmez, yalnızca yanıtların role göre şekillenmesi yeterlidir.

Mobil uygulama, e-pin işinde bir statü sembolü değil; müşterinin seni tekrar hatırlamasını sağlayan en kısa yol. Ama bu yolun taşları API tarafında döşenir: token düzeni, stok kilidi, sunucu tarafı fiyatlama ve düzgün bildirim akışı. Kendi uygulaman için hangi uç noktaların hazır geldiğini, sipariş akışının JSON tarafında nasıl göründüğünü ve bayi rollerinin API'ye nasıl yansıdığını incelemek istersen canlı demo üzerinden gerçek bir sipariş oluşturup akışı baştan sona takip edebilirsin.

Daha Fazlasını Keşfedin

Dijital ürün satışı ve otomasyon üzerine güncel rehberlere göz atın.

Tüm Yazıları Gör →
Bu yazıyı paylaşın
Bu yazıyı beğendiniz mi?
Teşekkürler!
← Tüm yazılar