3D Secure Satış İşlemi

3D Secure satış işlemlerini gerçekleştirmek için VPOSClient.Sale metodunu, Payment3D parametresi ile birlikte kullanabilirsiniz. 3D Secure, çevrimiçi ödemelerde ek bir güvenlik katmanı sağlar ve kart sahibinin kimliğini doğrular.

3D Secure Satış İşlemi Akışı

3D Secure satış işlemi iki aşamada gerçekleştirilir:

  1. İlk İstek: Kart bilgileri ve işlem detayları ile banka 3D Secure sayfasına yönlendirme için gerekli bilgileri alırsınız.
  2. Doğrulama Sonrası: Kart sahibi 3D Secure doğrulamasını tamamladıktan sonra, banka tarafından yönlendirilen verilerle işlemi tamamlarsınız.

3D Secure Satış İşlemi

payment3D.confirm = true gönderilmesi halinde 3D li satış işlemi başlatılır. 3D li işlemlerde payment3D.returnURL alanına 3D den gelecek olan cevabın iletilmesi istenen URL girilmelidir. Örneğin: https://localhost/Payment/VirtualPOS3DResponse.

VPOSClient.Sale metodundan dönen cevaptaki statu enum alanı RedirectURL veya RedirectHTML döner. statu RedirectURL ise message alanında client'ı yönlendirmeniz gereken url bulunur. statu RedirectHTML ise message alanında client'ın sayfasında çalıştırmanız gereken HTML bulunur.

Bu işlem sonrası client, banka 3D doğrulama sayfasına yönlendirilir. Bu sayfadaki işlem sonucunu banka, payment3D.returnURL alanında belirttiğimiz url e client'ın browserını kullanarak form post yöntemi ile döner.

3D den gelen form request body'sini Dictionary<string, object> e çevirip VPOSClient.Sale3DResponse methoduna gönderilmesi gerekmektedir. Bu işlem sonrası nihai sonuç döner.

1VirtualPOSAuth _qnbPayTest = new VirtualPOSAuth 2{ 3 bankCode = CP.VPOS.Services.BankService.QNBpay, 4 merchantID = "20158", 5 merchantUser = "07fb70f9d8de575f32baa6518e38c5d6", 6 merchantPassword = "61d97b2cac247069495be4b16f8604db", 7 merchantStorekey = "$2y$10$N9IJkgazXMUwCzpn7NJrZePy3v.dIFOQUyW4yGfT3eWry6m.KxanK", 8 testPlatform = true 9}; 10 11CustomerInfo customerInfo = new CustomerInfo 12{ 13 taxNumber = "1111111111", 14 emailAddress = "test@test.com", 15 name = "cem", 16 surname = "pehlivan", 17 phoneNumber = "1111111111", 18 addressDesc = "adres", 19 cityName = "istanbul", 20 country = CP.VPOS.Enums.Country.TUR, 21 postCode = "34000", 22 taxOffice = "maltepe", 23 townName = "maltepe" 24}; 25 26SaleRequest saleRequest = new SaleRequest 27{ 28 invoiceInfo = customerInfo, 29 shippingInfo = customerInfo, 30 saleInfo = new SaleInfo 31 { 32 cardNameSurname = "test kart", 33 cardNumber = "4022780520669303", 34 cardExpiryDateMonth = 1, 35 cardExpiryDateYear = 2050, 36 cardCVV = "988", 37 amount = (decimal)10, 38 currency = CP.VPOS.Enums.Currency.TRY, 39 installment = 1, 40 }, 41 payment3D = new Payment3D 42 { 43 confirm = true, 44 returnURL = "https://localhost/Payment/VirtualPOS3DResponse" 45 }, 46 customerIPAddress = "1.1.1.1", 47 orderNumber = Convert.ToInt32((DateTime.Now - new DateTime(1970, 1, 1)).TotalSeconds).ToString("X") 48}; 49 50 51var resp = VPOSClient.Sale(saleRequest, _qnbPayTest);

3D Secure Satış İşlemi 2. Adım

1 2public class PaymentController 3{ 4 public async Task<IActionResult> VirtualPOS3DResponse() 5 { 6 Dictionary<string, object>? pairs = null; 7 8 if (Request.Method == "GET") 9 pairs = Request.Query.Keys.ToDictionary(k => k, v => (object)Request.Query[v]); 10 else 11 pairs = Request.Form.Keys.ToDictionary(k => k, v => (object)Request.Form[v]); 12 13 SaleResponse response = VPOSClient.Sale3DResponse(new Sale3DResponseRequest 14 { 15 responseArray = pairs 16 }, _qnbPayTest); 17 } 18} 19