Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir konuşmacının Django framework'üne Kuveyttürk Sanal POS API'sini nasıl entegre edeceğini adım adım gösteren kapsamlı bir eğitim içeriğidir.
- Video, sanal POS entegrasyonunun tüm aşamalarını kapsamaktadır: HTML sayfası oluşturma, Django projesi başlatma, API kurulumu, kart bilgilerinin (kart numarası, CVC, son kullanma tarihi, kart tipi) işlenmesi, XML formatında istek atma, kart onaylama ve ödeme onaylama süreçleri. Konuşmacı, tüm bu adımları detaylı olarak göstererek, hata ayıklama süreçlerini de içermektedir.
- Eğitim boyunca, müşteri numarası, mağaza numarası, API anahtarı gibi gerekli parametrelerin nasıl kullanılacağı, OK URL ve fail URL'lerinin nasıl ayarlanacağı, CSRF koruması gibi güvenlik önlemlerinin nasıl devre dışı bırakılacağı ve debug modunun nasıl kullanılacağı gibi teknik detaylar da paylaşılmaktadır. Video sonunda, başarılı bir sanal POS entegrasyonu tamamlanmış ve kullanıcıya ödeme onayının nasıl verileceği gösterilmektedir.
- Kuveyttürk Sanal POS Entegrasyonu Giriş
- Videoda Kuveyttürk Sanal POS API yayını kullanılarak mobil kart ödemesi entegrasyonu gösterilecek.
- Proje için dört adet form içeren basit bir HTML sayfası hazırlanmış ve Cup CS kütüphanesi kullanılmış.
- Entegrasyon için test bilgileri kullanılacak ve hata alındığında debug modunda giderilecek.
- 01:48Django Projesi Hazırlığı
- Django projesi açılmış ve statik yönleri static files klasörüne yerleştirilmiş.
- Teras klasöründe index.html dosyası oluşturulmuş ve templatepetini belirtilmiş.
- Django'yu öğrenmek değil, sanal POS entegrasyonu yapabilmek amaçlanıyor.
- 02:34Kuveyttürk API Rehberi
- API rehberinde müşteri numarası, merch ID, post URL, mağaza numarası ve API URL gibi önemli bilgiler yer alıyor.
- Hash kısmı kullanıcıdan alınan kart bilgisi ve merch ID'si ile oluşturuluyor ve Kuveyttürk tarafından decript ediliyor.
- Entegrasyonda ilk olarak post isteğiyle bir requestte bulunuluyor, doğru veriler gönderildiğinde response dönüyor.
- 04:04Entegrasyon Adımları
- Entegrasyonda ilk olarak post isteğiyle bir requestte bulunuluyor, doğru veriler gönderildiğinde response dönüyor.
- Response'un içinde authentication response header'ı yakalanıp decode ediliyor ve XML dönüyor.
- MD kodu alınıp ikinci ödeme onayına yollanıyor, başarılı response alınırsa OK URL ile işlem bitiriliyor.
- 05:15Django View'ları Oluşturma
- Ödeme, OK URL ve fail URL için ayrı view'lar oluşturulacak.
- View'lar için HTTP sadece post olarak yönlendirme yapılıyor.
- OK URL ve fail URL değerleri view'lar içinde belirleniyor.
- 07:27Test Bilgileri ve Değişkenler
- Test bilgileri için bir değişken oluşturuluyor ve içinde müşteri numarası, mağaza numarası, kullanıcı adı ve şifre yer alıyor.
- OK URL, fail URL, kart onay URL ve ödeme onay URL için ayrı değişkenler tanımlanıyor.
- Debug modu için değişkenler üzerinde oynama yapmadan düzeltmeler yapılabilmesi için bu değişkenler kullanılıyor.
- 11:10İlk İstek ve XML Şeması
- İlk istekte kart onay için verilen kart onay verisi post ediliyor.
- XML şeması dökümantasyondan kopyalanıyor ve form data olarak post ediliyor.
- XML verileri string olarak formatlanıyor ve kart numaraları yakalanacak.
- 12:20Sanal POS Sisteminde Veri İşleme
- Sanal POS sisteminde isim, kredi kartı numarası ve CVC kodu gibi verilerin hashlenmesi gerekmektedir.
- Dokümantasyona göre istek atmadan önce verilerin hashlenmesi ve hash alanına dikkat edilmesi gerekmektedir.
- PHP için örnek kod kullanılarak verilerin hashlenmesi işlemi gerçekleştirilecektir.
- 13:26Hashleme İşlemi
- Sanal POS içindeki password, base64 encode edilmiş ve X1 ile birlikte hashlenmiştir.
- Hash işlemi için hashlib ve base64 kütüphaneleri dahil edilmiştir.
- Sanal POS içindeki password, ISO olarak encode edilmiş ve X1 ile birlikte hashlenmiştir.
- 15:05Veri Birleştirme ve Gönderme
- Hashed data adında bir değişken oluşturulmuş ve X1 ile birlikte gelen URL'ler ISO ile encode edilmiş, X1 ile hashlenmiş ve tekrar base64 ile encode edilmiştir.
- Sanal POS'un içerisindeki much id (mağaza numarası) ve merchant order id gibi veriler set edilmiştir.
- Amount kısmı virgülsüz olarak gönderilmelidir, örneğin 5 lira için 100 ile çarpılarak gönderilmelidir.
- 18:03Başarılı ve Başarısız Durumlar
- Başarılı veya başarısız olursa nereye yönlendirileceği belirlenmiştir.
- Hashed password, ISO olarak encode edilmiş ve digit ile eşleştirilerek string'e çevrilmiştir.
- Veriler ilgili tiplerine dönüştürülmüş ve sanal POS değişkeninden alınan datalar set edilmiştir.
- 19:20Veri İşleme ve Kart Bilgilerini Ayırma
- Yollanan veri (örneğin 12-12) boşluğa göre split edilerek ay ve yıl bilgilerine ayrılır.
- Split işlemi sonrası strip fonksiyonu ile sağda ve soldaki boşluklar kırpılır.
- Kart tipi (Troy) ve taksit yetkisi (statik olarak 0'a ayarlanmış) gibi bilgiler de veri setine eklenir.
- 21:33API İstekleri ve Header Ayarları
- Python'ın request kütüphanesi projeye dahil edilerek API istekleri yapılabilir.
- Request ile yollarken content type'ı application/xml olarak ayarlanmalıdır.
- İlk olarak kartın onaylanması gerekmekte ve bu işlem için authentication header'ı yakalanmalıdır.
- 24:16Ödeme İşlemi ve Hata Ayıklama
- Kart numarası değişkeninde boşluklar olduğu için replace fonksiyonu ile boşluklar kaldırılır.
- Doğru veriler yollandığında ödeme sayfasına yönlendirme yapılır ve şifre girildikten sonra banka kontrolü sağlanır.
- Django'nun CSRF koruması devre dışı bırakılmalıdır, bunun için @csrf_exempt decorator kullanılır.
- 28:49XML Verilerini İşleme
- Gelen XML verisi URLParse kütüphanesi ile pars edilir.
- XML verisi doğru bir şekilde alındıktan sonra içinden MD ve diğer gerekli bilgiler alınır.
- Django'da XML pars kütüphanesi kullanılamadığı için ilkel bir yöntem tercih edilmiştir.
- 31:05XML Verilerinden Veri Çekme
- Konuşmacı, XML verilerinden "amount" ve "md" değerlerini çekmek için özel bir yöntem kullanıyor çünkü JSON'a çevirme işlemi hata veriyor.
- "Order id" ifadesini bulmak için string'in geçtiği yerleri belirleyip, "start" ve "finish" indeks değerlerini hesaplayarak veri aralığını alıyor.
- "Amount" ve "md" değerlerini almak için "start" ve "stop" indeks değerlerini belirleyip, bu aralıktaki string'i alıyor.
- 34:36İkinci İstek İçin Hazırlık
- İkinci istek için "response mesaj" ve "response" kısımları oluşturuluyor.
- İkinci istekte farklı bir hash yapısı kullanılıyor ve bu hash için "id", "amount", "username" ve "password" değerleri kullanılıyor.
- Hash işlemi için "iso" ve "şair" fonksiyonları kullanılıyor ve yeni bir hash data oluşturuluyor.
- 36:51Ödeme Onayı İçin İstek
- Kart onaylandıktan sonra ödeme onayı için yeni bir XML isteği atılıyor.
- İkinci istekte "amount" ve "md" değerleri "data" olarak gönderiliyor.
- İstek "post" yöntemiyle "sanal pos" altındaki ödeme onay URL'sine gönderiliyor ve XML verisi encode ediliyor.
- 39:14Hata Ayıklama ve Başarılı İşlem
- İlk denemede "şifrelenen veriler uyuşmamaktadır" hatası alınıyor ve hash data'nın eksik olduğu tespit ediliyor.
- Hash data'nın doğru şekilde gönderilmesi sonrası ödeme işlemi başarılı oluyor ve "otoizasyon verildi" mesajı alınıyor.
- Sanal POS entegrasyonu başarıyla tamamlanıyor ve kullanıcıya bilgilendirme için response code'ları kullanılabilir.