Monaf Horany
Tüm çalışmalar

004

2021 — 2024

Orjeen

Suudi Arabistan pazarındaki bir çevrimiçi mağaza için, taksit ve kart ödeme altyapıları uçtan uca entegre edilmiş çok platformlu bir e-ticaret uygulaması.

ödeme altyapısı
2
yayınlandığı yer
iOS + Android
pazar
KSA

Mimari

Orjeen ödeme akışıFlutter uygulaması arka uca karşı bir ödeme başlatır; arka uç bekleyen bir sipariş oluşturur ve müşteriyi Tabby taksit ağ geçidine ya da Urway kart ağ geçidine yönlendirir. Her ağ geçidi sonucu, sunucudan sunucuya bir geri çağrıyla doğrudan arka uca bildirir ve sipariş durumunu yalnızca bu geri çağrı kesinleştirir. Müşterinin uygulamaya dönüşü, ödeme kanıtı değil, bir görüntüleme meselesi olarak ele alınır.1 · begin checkout2 · redirect3 · server-to-server callback settles the orderFlutter appOrjeenBackendorder authorityTabbyinstalmentsUrwaycardOrdersPostgreSQL
Flutter uygulaması arka uca karşı bir ödeme başlatır; arka uç bekleyen bir sipariş oluşturur ve müşteriyi Tabby taksit ağ geçidine ya da Urway kart ağ geçidine yönlendirir. Her ağ geçidi sonucu, sunucudan sunucuya bir geri çağrıyla doğrudan arka uca bildirir ve sipariş durumunu yalnızca bu geri çağrı kesinleştirir. Müşterinin uygulamaya dönüşü, ödeme kanıtı değil, bir görüntüleme meselesi olarak ele alınır.
  • İstemci
  • Servis
  • Veri deposu
  • Harici

Problem

Orjeen, Suudi pazarına hizmet veren bir çevrimiçi mağaza işletiyordu. Uygulamanın bölgeye uygun ödeme yöntemlerine ihtiyacı vardı — Körfez'de taksit niş bir seçenek değil, yaygın bir beklenti — ve kuryenin binayı gerçekten bulabileceği kadar kesin teslimat adreslerine.

Körfez'deki müşteriler kart ödemesinin yanında Tabby taksitini de bekliyor ve ikisinin de güvenilir olması gerekiyor: yarısı başarılı olan bir ödeme, temiz biçimde başarısız olandan daha kötüdür. Ayrıca bölgede sokak adresleri çoğu zaman güvenilmez olduğundan, yazılı adres tek başına kuryenin teslimatı tamamlaması için çoğu kez yetmiyor.

Yaklaşım

Taksit için Tabby'yi, kart ödemesi için Urway'i entegre ettim; ödemenin gerçekleşip gerçekleşmediği konusunda istemcinin geri dönüşünü değil, ağ geçidinin geri çağrısını yetkili kabul ettim. Uygulama, Cubit durum yönetimiyle MVVM olarak kuruldu. Adresler harita üzerinde pin bırakılarak onaylanıyor; böylece sipariş yalnızca metin adres değil, koordinat taşıyor.

Fark yaratan kararlar

  1. 01

    Cubit ile MVVM

    Tam BLoC yerine Cubit: uygulamanın durum geçişleri büyük ölçüde doğrusal ve Cubit bunları, bu karmaşıklık düzeyinde hiçbir şey kazandırmayan olay sınıfı kalabalığı olmadan ifade ediyor.

  2. 02

    İstemciye değil, geri çağrıya güven

    Ödeme durumu, ağ geçidinin sunucudan sunucuya geri çağrısıyla kesinleşiyor. Müşterinin yönlendirme ortasında uygulamayı kapatması, sinyal kaybetmesi ya da iki kez dokunması siparişi parayla senkronsuz bırakamıyor.

  3. 03

    Mevcut mağazayla olduğu yerde buluşmak

    İşletme zaten WooCommerce üzerinde çalışıyordu. Göçü bir ön koşul olarak dayatmak yerine uygulama WooCommerce REST API'sini tüketti ve boşlukları ek servisler doldurdu — mağaza süreç boyunca açık kaldı.

Zor problemler

  1. 01

    İki ağ geçidi, tek ödeme akışı

    Tabby ve Urway'in akışları, geri çağrı biçimleri ve hata modları farklı. Ödeme adımı müşteriye tek ve tutarlı bir yol sunarken ikisini ortak bir arayüzün ardında uzlaştırıyor; böylece hiçbir ağ geçidinin tuhaflığı sipariş mantığına sızmıyor.

  2. 02

    Kuryenin gerçekten kullanabileceği adresler

    Konum belirleme ve coğrafi kodlama, müşterilerin teslimatı harita üzerinde pinle onaylamasını sağlıyor. Sipariş, yazılı adresin yanında koordinatları da saklıyor — teslimat denemesi ile teslimat arasındaki fark bu.

  3. 03

    Durmadan yeniden inşa etmek

    Uygulama, mağaza açık kalmaya devam ederken Ionic/Angular yapısından Flutter'a taşındı. Göç, topyekûn bir geçiş olarak değil, canlı bir arka uca karşı özellik özellik ilerledi.

Rolüm

Flutter uygulamasını geliştirdim, her iki ödeme altyapısını entegre ettim ve uygulamaya hizmet veren arka uçta çalıştım.

Durum

Müşteriye teslim edildi ve işletildi. Mağaza ve uygulama listelemeleri artık yayında olmadığı için bu vaka çalışması, çalışan bir ürüne bağlantı vermek yerine mühendisliği anlatıyor.

Teknolojiler

Mobil
FlutterMVVMCubitFCMFirebase Analytics
Ödeme
TabbyUrway
Konum
GeolocationGeocoding
Arka uç
NestJSNode.jsWooCommerce REST