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:
- İlk İstek: Kart bilgileri ve işlem detayları ile banka 3D Secure sayfasına yönlendirme için gerekli bilgileri alırsınız.
- 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