Örnek Proje ve Gerekli Araçlar

Bu sayfa; örnek entegrasyon projesi, bunu destekleyen Redirect(yönlendirme) projesi, postman collection ve environment dosyalarını içerir.

Gerekli Araçlar ve Linkler

Name
Link

Örnek vue.js projesi(vue3)

projeye gitmek için tıklayın

VueRedirectProject(.net)

projeye gitmek için tıklayın

PHP Örnek Proje

Postman collection

Postman Collection Environment

Postman Kullanımı ve Temel İşlemler

Postman Nedir ve Neden Kullanıyoruz?

Postman, API'leri test etmek, geliştirmek ve belgelemek için kullanılan popüler bir araçtır. API geliştiricileri için birçok avantaj sunar, özellikle de API'leri hızlı bir şekilde test etmek ve belgelemek amacıyla kullanıyoruz.

Postman Collections İmport Etme

  1. Postman'e Giriş Yapın: Postman uygulamasına giriş yapın veya hesap oluşturun.

  2. Collections Bölümüne Girin: Sol üst köşede bulunan "Collections" sekmesine tıklayın.

  3. Import Collections: Sağ üst köşede bulunan "Import" butonuna tıklayın.

  4. Link veya Dosya Seçin: Collection'ı paylaşılan bir linkten alabilir veya bilgisayarınızdan bir dosya seçebilirsiniz.

  5. Import Edin: Linki veya dosyayı seçtikten sonra "Import" butonuna tıklayarak collection'ı içe aktarın.

Postman Environment İmport Etme

  1. Settings Bölümüne Girin: Sağ üst köşede bulunan dişli simgesine tıklayarak "Settings" bölümüne girin.

  2. Manage Environments: Sol menüde "Manage Environments" seçeneğine tıklayın.

  3. Import Environment: "Import" butonuna tıklayarak, bir önceki adımda indirdiğiniz veya aldığınız environment dosyasını seçin.

  4. Seçtiğiniz Environment'i Aktif Edin: Daha sonra, kullanmak istediğiniz environment'i seçin ve "Set Active" butonuna tıklayarak aktif edin veya ekranın sağ üstünden ilgili environmenti seçin.

Postman Authorization İçin Bearer Token Kullanımı

HST Web Pos API, güvenlik için Bearer Token kullanır. Bu token'ı Postman'da kullanmak için:

  1. Authorization Sekmesine Girin: API isteğinizi açın ve sekme çubuğunda "Authorization" sekmesine gidin.

  2. Type'ı Seçin: "Type" seçeneğini "Bearer Token" olarak ayarlayın.

  3. Token'ı Giriş Yapın: "Token" alanına {{baseUrl}} şeklinde girin. Bu, environment'da tanımlı olan token'ı kullanmanıza olanak tanır.

  4. Kaydedin ve Gönderin: Ayarları kaydedin ve API isteğinizi gönderin.

  5. Login endpointindeki Authorization type "Inherit auth from parent" şeklinde olacaktır.

  6. Diğer endpointlerde ise Authorization type "Bearer Token" şeklinde olmalı. "Token" alanına {{token}} şeklinde girin. Bu, environment'da tanımlı olan token'ı kullanmanıza olanak tanır.Aşağıda bunlara ait ekran goruntuleri aşağıda mevcuttur.

Postman Ana Authorization
Endpoint Authorization

Postman ile Login isteği Göndermek

Size verilecek olan kullanıcı adı ve şifre ile giriş sağlanacaktır. Şifrenizi sha512 ile şifreleyip göndermeniz gerekmektedir. Aşağıda örnek bir body json kullanım isteği yer almaktadır.

{
  "userName": "phonenumberr",
  "password": "sha512 ile şifrelenmiş bir şifre",
   "lat": "",
  "long": ""
}

Postman ile Payment isteği Göndermek

Payment isteği atmak için aşağıda örnek bir body json kullanımı mevcuttur.

{
  "amount": "1",
  "currencyCode": "949",
  "orderId": "Guid order id",
  "installment": "1",
  "cardHolderName": "isim soyisim",  
  "cardNumber": "kartnumarası",
  "expireYear": "2023",
  "expireMonth": "01",
  "cvc": "555",
  "isSecureTransaction": true,
  "callbackUrl": "bankadan sonra yonlendirilmesi gereken callback url"
}

Postman ile Payment Result isteği Göndermek

Payment Result sorgulamak için postmandan istek atarken Query Params olarak paymentId ve orderId gönderilmektedir. Aşağıdaki ekran fotoğrafını örnek bir sorgu mevcuttur.

Örnek vue.js projesi

Entegrasyon süreçlerinde geliştirme süresini kısaltmak amacıyla hazırladığımız örnek bir entegrasyon projesi bulunmaktadır. Bu projeyi vue.js (vue3) teknolojisi kullanarak geliştirdik. Projenin temel amacı, Postman aracılığıyla gerçekleştirdiğimiz işlemlerin, uygulama içindeki implementasyonunu sağlamaktır.

HTTP İstekleri

Axios, web tarayıcıları ve Node.js ortamında çalışan HTTP isteklerini yapmayı kolaylaştıran bir JavaScript kütüphanesidir. Biz de bu projede HTTP isteklerimizi Axios kütüphanesi kullanarak yaptık.

Axios Ayarlarımızı projede bu şekilde tanımladık.

Authstore İle Token Kaydetmek

Kullanıcı, uygulama içindeki işlemler sonucunda bir 'token' elde eder. Bu token, Pinia kütüphanesini kullanarak oluşturduğumuz 'authstore' adlı bir durum deposunda güvenli bir şekilde saklanır. Authstore, kullanıcının oturum durumunu ve ilgili bilgileri depolar. Bu sayede, kullanıcı herhangi bir sayfada gezinirken veya sayfayı yenilerken bile oturumu açık tutabiliriz. Ayrıca, kullanıcının tarayıcıyı kapattıktan sonra bile oturumu sürdürebilmesi için token'ı local storage'da saklarız. Bu yöntem, kullanıcıların güvenli bir şekilde oturum açmalarını ve uygulamayı kullanmalarını sağlayan bir kimlik doğrulama süreci sunar.

Giriş işlemi sonucunda elde ettiğimiz veriyi, AuthState adlı bir durum nesnesi aracılığıyla kullanarak tarayıcımızın local storage bölümüne ilgili 'token'i kaydediyoruz. Bundan sonra gerçekleştireceğimiz tüm işlemlerde, bu 'token'i buradan alacağız. Yani, kullanıcının oturumunu sürdürebilmek ve kimlik doğrulama işlemlerini yapabilmek için elde ettiğimiz bu 'token'i güvenli bir şekilde saklayarak, daha sonraki tüm etkileşimlerde kullanabiliyoruz.

Burada authstore kullanarak tokenin nasıl gönderileceğini axios yapılandırma dosyasında tanımlıyoruz
authstore login ve logout ayarları

Login Request

Login isteğimizi axios için hazırladığımız ayarların bulunduğu HTTP.ts dosyamız aracılığıyla atıyoruz. Bu dosyamızı login sayfasına import ettikten sonra Kullanıcıdan atacağımız isteğin modellerini doldurmak için basit bir form yapısı hazırladık. Bu forum yapısı credentials modeli içindeki parametreleri dolduracaktır.

Böylece login ve autherize işlemimizi yapıp tokenimizi local storage ' e eklemiş olduk. Sırada diğer istekler var.

Payment Request

Payment Request işlemimizi gerçekleştirmek üzere, bir ödeme isteği servisi oluşturduk. Bu servis, aslında Axios kütüphanesinden türetilmiştir. Axios ayarlarını yapılandırdığımız dosyada, PaymentRequest adında bir method bulunmaktadır. Bu method, Axios kütüphanesini kullanarak ödeme isteği yapıldığı zamanlardaki yapılandırmaları içermektedir. Bu sayede, farklı endpoint'lere gönderilecek olan istekleri birbirinden ayırarak, her birine özgü yapılandırmalar yapma yeteneğine sahip olmamızı sağlıyor.

Axios kalıtım alınarak yapılan paymentRequestService

Burada da Axios konfigürasyon dosyası içinde yazdığımız bir payment Request methodu bulunuyor.

Payment Request ve diğer isteklerin modellerini oluşturmak için Swagger'dan aldığımız JSON dosyasını "swagger-typescript-api" kütüphanesini kullanarak myApi.ts adında tek bir sayfada topladık. Payment Request isteğini oluştururken, ilgili modelimizi bu sayfadan alarak kullanıyoruz.

Bu fotoğrafta göründüğü gibi, her seferinde orderId'in farklı olması için guid olarak tanımlamak amacıyla uuidv4 kütüphanesini kullandık. Web POS sayfasında gösterdiğimiz modeli import edip, ardından kullanıcıdan aldığımız verileri bu modele atarak Payment Request' i gerçekleştirdik.

Gelen response da, return type'a göre tanımlamalarımızı gerçekleştirdik. Eğer Return Type = 2 ise, yanıtta Raw HTML bulunur ve bu HTML, paymentData parametresi içinde yer alır. Return Type = 1 ise, yanıt bir bağlantı (link) olarak gelir ve bu bağlantı, returnUrl parametresi içinde bulunur. Web POS sayfasında örnek bir yanıt JSON'u inceleyebilirsiniz.

submitPaymentRequest methodu

Bu aşamadan sonra, bankanın 3D sayfası açılır ve kullanıcı tarafından girilen SMS bilgisi sonrasında, callback URL'e banka sayfasından orderId ve paymentId POST edilir. Vue.js projesinde bu POST işlemini otomatik hale getirmek için, tek bir endpoint'e sahip bir API oluşturduk. Bu API'ye, bankadan gelen veriler post edilir ve Payment Request Result sayfasına query string olarak yönlendirme yapılır. Ödeme Talep Sonuç sayfası, Axios kütüphanesinden türetilen Payment Request Result servisini çalıştırarak, böylece bankadan sonra ödemenin başarılı olup olmadığını otomatik olarak sorgular.

Receive API endpointi
Redirect Projesindeki answer modelimiz

Payment Request isteği gönderirken, bu projede ilgili endpointin URL'sini callbackUrl parametresi içine yerleştirdik ve bu aslında callbackUrl olarak belirlenen adrese bir yönlendirme yapıldı. Bu endpoint ise orderId ve paymentId bilgilerini alarak bu verileri Payment Result Sayfasına iletti.

payment result sorgulama (otomatik sorgu)

Manuel olarak Payment Result Request yapabilmek için hazırladığım sayfada Payment Result Request endpointinin nasıl çalıştığını anlatıyor olacağım.

Payment Result Request

Bu sayfada paymentresult endpointine manuel olarak paymentId ve orderId parametreleri girilip istek atılıyor. Gelen sonuca göre de Ödemenin başarılı olup olmadığını kontrol ediyoruz.

Axios kalıtım alınarak yapılan paymentResultRequestService

Burada da Axios konfigürasyon dosyası içinde yazdığımız bir payment Result Request methodu bulunuyor. Burada da istek gittiğini de notify ile anlamış oluyoruz.

Gelen responsa içinde status == "SUCCESS" ise ödeme başarıyla gerçekleşmiş oluyor ve sayfanın sağ alt tarafında bildirim atıyor. Gelen response içinde "status == 'PENDING'" durumunda ise, bu durum genellikle banka OTP ekranındaki şifrenin girilmesinde oluşan bir sorundan kaynaklanır. Web Pos sayfasında bu response Json modeli örneğini bulabirsiniz.

Last updated