public PaymentParameterResult GetPaymentParameters(PaymentRequest request) { string processType = "Auth"; //İşlem tipi string clientId = "700655000200"; //Mağaza numarası string storeKey = "TRPS1234"; //Mağaza anahtarı string storeType = "3D_PAY"; //SMS onaylı ödeme modeli 3DPay olarak adlandırılıyor. string successUrl = "https://localhost:5001/home/callback"; //Başarılı Url string failUrl = "https://localhost:5001/home/callback"; //Hata Url string random = DateTime.Now.ToString(); try { var parameters = new Dictionary <string, object>(); parameters.Add("clientid", clientId); parameters.Add("amount", request.TotalAmount.ToString(new CultureInfo("en-US"))); //kuruş ayrımı nokta olmalı!!! parameters.Add("oid", request.OrderNumber); //sipariş numarası //işlem başarılı da olsa başarısız da olsa callback sayfasına yönlendirerek kendi tarafımızda işlem sonucunu kontrol ediyoruz parameters.Add("okUrl", successUrl); //başarılı dönüş adresi parameters.Add("failUrl", failUrl); //hatalı dönüş adresi parameters.Add("islemtipi", processType); //direk satış parameters.Add("taksit", request.Installment); //taksit sayısı | 1 veya boş tek çekim olur parameters.Add("rnd", random); //rastgele bir sayı üretilmesi isteniyor string hashstr = clientId + request.OrderNumber + request.TotalAmount + successUrl + failUrl + processType + request.Installment + random + storeKey; var cryptoServiceProvider = new SHA1CryptoServiceProvider(); var inputbytes = cryptoServiceProvider.ComputeHash(Encoding.UTF8.GetBytes(hashstr)); var hashData = Convert.ToBase64String(inputbytes); parameters.Add("hash", hashData); //hash data parameters.Add("currency", request.CurrencyIsoCode); //TL ISO code | EURO 978 | Dolar 840 //kart numarasından çizgi ve boşlukları kaldırıyoruz string cardNumber = request.CardNumber.Replace("-", string.Empty); cardNumber = cardNumber.Replace(" ", string.Empty).Trim(); parameters.Add("pan", cardNumber); parameters.Add("cardHolderName", request.CardHolderName); parameters.Add("Ecom_Payment_Card_ExpDate_Month", request.ExpireMonth); //kart bitiş ay'ı parameters.Add("Ecom_Payment_Card_ExpDate_Year", request.ExpireYear); //kart bitiş yıl'ı parameters.Add("cv2", request.CvvCode); //kart güvenlik kodu parameters.Add("cardType", "1"); //kart tipi visa 1 | master 2 | amex 3 parameters.Add("storetype", storeType); parameters.Add("lang", request.LanguageIsoCode); //iki haneli dil iso kodu //İş Bankası Canlı https://sanalpos.isbank.com.tr/fim/est3Dgate return(PaymentParameterResult.Successed(parameters, "https://entegrasyon.asseco-see.com.tr/fim/est3Dgate")); } catch (Exception ex) { return(PaymentParameterResult.Failed(ex.ToString())); } }
public PaymentParameterResult GetPaymentParameters(PaymentRequest request) { string processType = "Auth"; //İşlem tipi string mbrId = ""; //Mağaza numarası string merchantId = ""; //Mağaza numarası string userCode = ""; // string userPass = ""; //Mağaza anahtarı string storeType = "3Dpay"; //SMS onaylı ödeme modeli 3DPay olarak adlandırılıyor. string successUrl = "https://localhost:5001/home/callback"; //Başarılı Url string failUrl = "https://localhost:5001/home/callback"; //Hata Url try { var parameters = new Dictionary <string, object>(); parameters.Add("MbrId", mbrId); parameters.Add("MerchantId", merchantId); parameters.Add("UserCode", userCode); parameters.Add("UserPass", userPass); parameters.Add("PurchAmount", request.TotalAmount.ToString(new CultureInfo("en-US"))); //kuruş ayrımı nokta olmalı!!! parameters.Add("OrderId", request.OrderNumber); //sipariş numarası //işlem başarılı da olsa başarısız da olsa callback sayfasına yönlendirerek kendi tarafımızda işlem sonucunu kontrol ediyoruz parameters.Add("OkUrl", successUrl); //başarılı dönüş adresi parameters.Add("FailUrl", failUrl); //hatalı dönüş adresi parameters.Add("TxnType", processType); //direk satış parameters.Add("InstallmentCount", request.Installment); //taksit sayısı | 0, 1 veya boş tek çekim olur parameters.Add("Currency", request.CurrencyIsoCode); //TL:949, USD:840, EUR:978 //kart numarasından çizgi ve boşlukları kaldırıyoruz string cardNumber = request.CardNumber.Replace("-", string.Empty); cardNumber = cardNumber.Replace(" ", string.Empty).Trim(); parameters.Add("Pan", cardNumber); //kart numarası parameters.Add("Expiry", request.ExpireMonth + request.ExpireYear); //kart bitiş ay'ı ve yıl'ı parameters.Add("Cvv2", request.CvvCode); //kart güvenlik kodu parameters.Add("SecureType", storeType); //NonSecure, 3Dpay, 3DModel, 3DHost parameters.Add("Lang", request.LanguageIsoCode.ToUpper()); //iki haneli dil iso kodu //yeni finans bank test ve canlı ortam 3dgate adresi return(PaymentParameterResult.Successed(parameters, "https://finansbank.com")); } catch (Exception ex) { return(PaymentParameterResult.Failed(ex.ToString())); } }
public PaymentParameterResult GetPaymentParameters(PaymentRequest request) { string merchantId = "000100000013506"; string merchantPassword = "******"; string successUrl = "https://localhost:5001/home/callback"; //Başarılı Url string failUrl = "https://localhost:5001/home/callback"; //Hata Url try { var httpParameters = new Dictionary <string, string>(); //kart numarasından çizgi ve boşlukları kaldırıyoruz string cardNumber = request.CardNumber.Replace("-", string.Empty); cardNumber = cardNumber.Replace(" ", string.Empty).Trim(); httpParameters.Add("Pan", cardNumber); httpParameters.Add("ExpiryDate", $"{request.ExpireYear}{request.ExpireMonth}"); httpParameters.Add("PurchaseAmount", request.TotalAmount.ToString(new CultureInfo("en-US"))); httpParameters.Add("Currency", request.CurrencyIsoCode);//TL 949 | EURO 978 | Dolar 840 /* * Visa 100 * Master Card 200 * American Express 300 */ httpParameters.Add("BrandName", "100"); httpParameters.Add("VerifyEnrollmentRequestId", request.OrderNumber); //sipariş numarası httpParameters.Add("SessionInfo", "1"); //banka dökümanları sabit bir değer httpParameters.Add("MerchantID", merchantId); httpParameters.Add("MerchantPassword", merchantPassword); httpParameters.Add("SuccessUrl", successUrl); httpParameters.Add("FailureUrl", failUrl); if (request.Installment > 1) { httpParameters.Add("InstallmentCount", request.Installment.ToString()); } //Canlı https://3dsecure.vakifbank.com.tr:4443/MPIAPI/MPI_Enrollment.aspx var enrollmentUrl = new Uri("https://3dsecuretest.vakifbank.com.tr:4443/MPIAPI/MPI_Enrollment.aspx"); var response = client.PostAsync(enrollmentUrl, new FormUrlEncodedContent(httpParameters)).GetAwaiter().GetResult(); string responseContent = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(responseContent); var statusNode = xmlDocument.SelectSingleNode("IPaySecure/Message/VERes/Status"); if (statusNode.InnerText != "Y") { var messageErrorNode = xmlDocument.SelectSingleNode("IPaySecure/ErrorMessage"); var messageErrorCodeNode = xmlDocument.SelectSingleNode("IPaySecure/MessageErrorCode"); return(PaymentParameterResult.Failed(messageErrorNode.InnerText, messageErrorCodeNode?.InnerText)); } var pareqNode = xmlDocument.SelectSingleNode("IPaySecure/Message/VERes/PaReq"); var termUrlNode = xmlDocument.SelectSingleNode("IPaySecure/Message/VERes/TermUrl"); var mdNode = xmlDocument.SelectSingleNode("IPaySecure/Message/VERes/MD"); var acsUrlNode = xmlDocument.SelectSingleNode("IPaySecure/Message/VERes/ACSUrl"); var parameters = new Dictionary <string, object>(); parameters.Add("PaReq", pareqNode.InnerText); parameters.Add("TermUrl", termUrlNode.InnerText); parameters.Add("MD", mdNode.InnerText); //form post edilecek url xml response içerisinde bankadan dönüyor return(PaymentParameterResult.Successed(parameters, acsUrlNode.InnerText)); } catch (Exception ex) { return(PaymentParameterResult.Failed(ex.ToString())); } }
public PaymentParameterResult GetPaymentParameters(PaymentRequest request) { //Test ortam bilgileri string MERCHANT_ID = "6706598320"; string TERMINAL_ID = "67020048"; string POSNET_ID = "27242"; try { //kart numarasından çizgi ve boşlukları kaldırıyoruz string cardNumber = request.CardNumber.Replace("-", string.Empty); cardNumber = cardNumber.Replace(" ", string.Empty).Trim(); //yapıkredi bankasında tutar bilgisinde nokta, virgül gibi değerler istenmiyor. 1.10 TL'lik işlem 110 olarak gönderilmeli. Yani tutarı 100 ile çarpabiliriz. string amount = (request.TotalAmount * 100m).ToString("N");//virgülden sonraki sıfırlara gerek yok string requestXml = "<?xml version=\"1.0\" encoding=\"ISO-8859-9\"?>" + "<posnetRequest>" + $"<mid>{MERCHANT_ID}</mid>" + $"<tid>{TERMINAL_ID}</tid>" + "<oosRequestData>" + $"<posnetid>{POSNET_ID}</posnetid>" + $"<XID>{request.OrderNumber}</XID>" + $"<amount>{amount}</amount>" + $"<currencyCode>{GetCurrencyCode(request.CurrencyIsoCode)}</currencyCode>" + $"<installment>{string.Format("{0:00}", request.Installment)}</installment>" + "<tranType>Sale</tranType>" + $"<cardHolderName>{request.CardHolderName}</cardHolderName>" + $"<ccno>{cardNumber}</ccno>" + $"<expDate>{request.ExpireMonth}{request.ExpireYear}</expDate>" + $"<cvc>{request.CvvCode}</cvc>" + "</oosRequestData>" + "</posnetRequest>"; var httpParameters = new Dictionary <string, string>(); httpParameters.Add("xmldata", requestXml); string requestUrl = "https://setmpos.ykb.com/PosnetWebService/XML"; var response = client.PostAsync(requestUrl, new FormUrlEncodedContent(httpParameters)).GetAwaiter().GetResult(); string responseContent = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(responseContent); var approvedNode = xmlDocument.SelectSingleNode("posnetResponse/approved"); var respTextNode = xmlDocument.SelectSingleNode("posnetResponse/respText"); if (approvedNode.InnerText != "1") { return(PaymentParameterResult.Failed(respTextNode.InnerText)); } var data1Node = xmlDocument.SelectSingleNode("posnetResponse/oosRequestDataResponse/data1"); var data2Node = xmlDocument.SelectSingleNode("posnetResponse/oosRequestDataResponse/data2"); var signNode = xmlDocument.SelectSingleNode("posnetResponse/oosRequestDataResponse/sign"); var parameters = new Dictionary <string, object>(); parameters.Add("posnetData", data1Node.InnerText); parameters.Add("posnetData2", data2Node.InnerText); parameters.Add("digest", signNode.InnerText); parameters.Add("mid", MERCHANT_ID); parameters.Add("posnetID", POSNET_ID); //Vade Farklı işlemler için kullanılacak olan kampanya kodunu belirler. //Üye İşyeri için tanımlı olan kampanya kodu, İşyeri Yönetici Ekranlarına giriş yapıldıktan sonra, Üye İşyeri bilgileri sayfasından öğrenilebilinir. parameters.Add("vftCode", string.Empty); string callbackUrl = "https://localhost:5001/home/callback"; //Başarılı Url parameters.Add("merchantReturnURL", callbackUrl); //geri dönüş adresi parameters.Add("lang", request.LanguageIsoCode); parameters.Add("url", string.Empty); //openANewWindow 1 olarak ayarlanırsa buraya gidilecek url verilmeli parameters.Add("openANewWindow", "0"); //POST edilecek formun yeni bir sayfaya mı yoksa mevcut sayfayı mı yönlendirileceği parameters.Add("useJokerVadaa", "1"); //yapıkredi kartlarında vadaa kullanılabilirse izin verir return(PaymentParameterResult.Successed(parameters, "https://setmpos.ykb.com/3DSWebService/YKBPaymentService")); } catch (Exception ex) { return(PaymentParameterResult.Failed(ex.ToString())); } }
public PaymentParameterResult GetPaymentParameters(PaymentRequest request) { string terminaluserid = "TEST"; string terminalid = "30691298"; string terminalmerchantid = "7000679"; string terminalprovuserid = "PROVAUT"; string terminalprovpassword = "******"; string storekey = "12345678"; //garanti sanal pos ekranından üreteceğimiz güvenlik anahtarı string mode = "TEST"; //PROD | TEST string successUrl = "https://localhost:5001/home/callback"; //Başarılı Url string errorurl = "https://localhost:5001/home/callback"; //Hata Url string type = "sales"; try { var parameters = new Dictionary <string, object>(); //kart numarasından çizgi ve boşlukları kaldırıyoruz string cardNumber = request.CardNumber.Replace("-", string.Empty); cardNumber = cardNumber.Replace(" ", string.Empty).Trim(); parameters.Add("cardnumber", cardNumber); parameters.Add("cardcvv2", request.CvvCode); //kart güvenlik kodu parameters.Add("cardexpiredatemonth", request.ExpireMonth); //kart bitiş ay'ı parameters.Add("cardexpiredateyear", request.ExpireYear); //kart bitiş yıl'ı parameters.Add("secure3dsecuritylevel", "3D_PAY"); //SMS onaylı ödeme modeli 3DPay olarak adlandırılıyor. parameters.Add("mode", mode); parameters.Add("apiversion", "v0.01"); parameters.Add("terminalprovuserid", terminalprovuserid); parameters.Add("terminaluserid", terminaluserid); parameters.Add("terminalmerchantid", terminalmerchantid); parameters.Add("terminalid", terminalid); parameters.Add("txntype", type); //direk satış parameters.Add("txncurrencycode", request.CurrencyIsoCode); //TL ISO code | EURO 978 | Dolar 840 parameters.Add("motoind", "N"); parameters.Add("customeripaddress", request.CustomerIpAddress); parameters.Add("orderaddressname1", request.CardHolderName); parameters.Add("orderid", request.OrderNumber);//sipariş numarası //işlem başarılı da olsa başarısız da olsa callback sayfasına yönlendirerek kendi tarafımızda işlem sonucunu kontrol ediyoruz parameters.Add("successurl", successUrl); //başarılı dönüş adresi parameters.Add("errorurl", errorurl); //hatalı dönüş adresi //garanti bankasında tutar bilgisinde nokta, virgül gibi değerler istenmiyor. 1.10 TL'lik işlem 110 olarak gönderilmeli. Yani tutarı 100 ile çarpabiliriz. string amount = (request.TotalAmount * 100m).ToString("N");//virgülden sonraki sıfırlara gerek yok parameters.Add("txnamount", amount); string installment = request.Installment.ToString(); if (request.Installment <= 1) { installment = string.Empty; //0 veya 1 olması durumunda taksit bilgisini boş gönderiyoruz } parameters.Add("txninstallmentcount", installment); //taksit sayısı | boş tek çekim olur //garanti tarafından terminal numarasını 9 haneye tamamlamak için başına sıfır eklenmesi isteniyor. 9 haneli bir terminal numarasında buna ihtiyaç olmuyor. string _terminalid = "0" + terminalid; string securityData = GetSHA1(terminalprovpassword + _terminalid).ToUpper(); //provizyon şifresi ve 9 haneli terminal numarasının birleşimi ile bir hash oluşturuluyor string hashstr = terminalid + request.OrderNumber + amount + successUrl + errorurl + type + installment + storekey + securityData; //ilgili veriler birleştirilip hash oluşturuluyor parameters.Add("secure3dhash", GetSHA1(hashstr).ToUpper()); //ToUpper ile tüm karakterlerin büyük harf olması gerekiyor //Garanti Canlı https://sanalposprov.garanti.com.tr/servlet/gt3dengine return(PaymentParameterResult.Successed(parameters, "https://sanalposprovtest.garanti.com.tr/servlet/gt3dengine")); } catch (Exception ex) { return(PaymentParameterResult.Failed(ex.ToString())); } }