/// <summary> /// 3D Secure ile odeme metodudur. 3D sorgulamasi sonrasinda basarili sonuc alinmasini takiben cagrilmalidir. 3D sorgulamasi sonrasi odemenin otorizasyon asamasinin tamamlanmasini saglar. /// </summary> /// <param name="auth"> : odeme otorizasyonunun saglanmasi icin gerekli bilgileri iceren objedir.</param> public PaymetResponse PayThreeDResult(IparaAuth auth) { auth.CardExpireMonth = null; auth.CardExpireYear = null; auth.CardNumber = null; auth.CardOwnerName = null; auth.Purchaser.Name = null; auth.Purchaser.SurName = null; auth.Purchaser.Email = null; auth.Purchaser.ClientIp = null; auth.ThreeD = "true"; string xmlData = IparaRequestUtil.SerializeObject(auth); if (!string.IsNullOrEmpty(xmlData)) { string dateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string hashText = this.privateKey + auth.OrderId + auth.Amount + auth.Mode + auth.ThreeDSecureCode + dateTime; string token = this.publicKey + ":" + IparaRequestUtil.GetSHA1(hashText); string response = IparaRequestUtil.ApiRequest(token, this.version, dateTime, xmlData, this.authUrl); PaymetResponse paymentResponse = IparaRequestUtil.DeserializeObject <PaymetResponse>(response); ValidateResponse(paymentResponse); return(paymentResponse); } else { throw new Exception("Ödeme isteği gönderilirken beklenmedik bir hata oluştu!"); } }
/// <summary> /// 3D Secure ile Odeme Oncesi 3D sorgulaması gerceklestirilmesi icin gerekli metottur. Bu asama basari ile sonuclanir ise islemin metoda girilmis olan <paramref name="successUrl"/><param/> uzerinden /// 3D odemenin tamamlanmasi icin hazirlanmis bir kurguya yonlenmesi beklenir. /// <remarks><para>Ayrica Bakiniz : <seealso cref="IparaPaymentDemo.ThreeDResult"/></para></remarks> /// </summary> /// <param name="auth"> : odeme otorizasyonunun saglanmasi icin gerekli bilgileri iceren objedir.</param> /// <param name="successUrl"> : basarili 3D odeme sorgusu sonunda, sonucun post edilecegi yeniden yonlenme URL adresidir.</param> /// <param name="failureUrl"> : basarisiz 3D odeme sorgusu sonucunun post edilecegi yeniden yonlenme URL adresidir.</param> public void PayThreeD(IparaAuth auth, String successUrl, String failureUrl) { auth.ThreeD = "true"; string dateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string hashText = this.privateKey + auth.OrderId + auth.Amount + auth.Mode + auth.CardOwnerName + auth.CardNumber + auth.CardExpireMonth + auth.CardExpireYear + auth.Cvc + auth.Purchaser.Name + auth.Purchaser.SurName + auth.Purchaser.Email + dateTime; string token = this.publicKey + ":" + IparaRequestUtil.GetSHA1(hashText); StringBuilder builder = new StringBuilder(); builder.Append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"); builder.Append("<html>"); builder.Append("<body>"); builder.Append("<form action=\"" + this.threeDUrl + "\" method=\"post\" id=\"three_d_form\"/>"); builder.Append("<input type=\"hidden\" name=\"orderId\" value=\"" + auth.OrderId + "\"/>"); builder.Append("<input type=\"hidden\" name=\"amount\" value=\"" + auth.Amount + "\"/>"); builder.Append("<input type=\"hidden\" name=\"cardOwnerName\" value=\"" + auth.CardOwnerName + "\"/>"); builder.Append("<input type=\"hidden\" name=\"cardNumber\" value=\"" + auth.CardNumber + "\"/>"); builder.Append("<input type=\"hidden\" name=\"cardExpireMonth\" value=\"" + auth.CardExpireMonth + "\"/>"); builder.Append("<input type=\"hidden\" name=\"cardExpireYear\" value=\"" + auth.CardExpireYear + "\"/>"); builder.Append("<input type=\"hidden\" name=\"installment\" value=\"" + auth.Installment + "\"/>"); builder.Append("<input type=\"hidden\" name=\"cardCvc\" value=\"" + auth.Cvc + "\"/>"); builder.Append("<input type=\"hidden\" name=\"mode\" value=\"" + auth.Mode + "\"/>"); builder.Append("<input type=\"hidden\" name=\"purchaserName\" value=\"" + auth.Purchaser.Name + "\"/>"); builder.Append("<input type=\"hidden\" name=\"purchaserSurname\" value=\"" + auth.Purchaser.SurName + "\"/>"); builder.Append("<input type=\"hidden\" name=\"purchaserEmail\" value=\"" + auth.Purchaser.Email + "\"/>"); builder.Append("<input type=\"hidden\" name=\"successUrl\" value=\"" + successUrl + "\"/>"); builder.Append("<input type=\"hidden\" name=\"failureUrl\" value=\"" + failureUrl + "\"/>"); builder.Append("<input type=\"hidden\" name=\"echo\" value=\"" + auth.Echo + "\"/>"); builder.Append("<input type=\"hidden\" name=\"version\" value=\"" + this.version + "\"/>"); builder.Append("<input type=\"hidden\" name=\"transactionDate\" value=\"" + dateTime + "\"/>"); builder.Append("<input type=\"hidden\" name=\"token\" value=\"" + token + "\"/>"); builder.Append("<input type=\"submit\" value=\"Öde\" style=\"display:none;\"/>"); builder.Append("<noscript>"); builder.Append("<br/>"); builder.Append("<br/>"); builder.Append("<center>"); builder.Append("<h1>3D Secure Yönlendirme İşlemi</h1>"); builder.Append("<h2>Javascript internet tarayıcınızda kapatılmış veya desteklenmiyor.<br/></h2>"); builder.Append("<h3>Lütfen banka 3D Secure sayfasına yönlenmek için tıklayınız.</h3>"); builder.Append("<input type=\"submit\" value=\"3D Secure Sayfasına Yönlen\">"); builder.Append("</center>"); builder.Append("</noscript>"); builder.Append("</form>"); builder.Append("</body>"); builder.Append("<script>document.getElementById(\"three_d_form\").submit();</script>"); builder.Append("</html>"); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Write(builder.ToString()); HttpContext.Current.Response.End(); }
protected void Page_Load(object sender, EventArgs e) { try { IparaRequest payment = new IparaRequest(publicKey, privateKey); PaymetResponse response = payment.GetThreeDResponse(Request.Form); if (response == null) { lblMessage.Text = "ÖDEME İŞLEMİNİZ BAŞARISIZ"; return; } if (response.Result.Equals("1")) { if (Session["Ipara-Auth"] == null) { lblMessage.Text = "ÖDEME İŞLEMİNİZ BAŞARISIZ. Session bulunamadı."; return; } IparaAuth auth = Session["Ipara-Auth"] as IparaAuth; auth.ThreeDSecureCode = response.ThreeDSecureCode; auth.Echo = "Echo Bilgisi"; auth.VendorId = this.vendorId; response = payment.PayThreeDResult(auth); if (response == null) { lblMessage.Text = "ÖDEME İŞLEMİNİZ BAŞARISIZ. Response boş."; return; } if (response.Result.Equals("1")) { lblMessage.Text = "ÖDEME İŞLEMİNİZ BAŞARILI"; } else { lblMessage.Text = "ÖDEME İŞLEMİNİZ BAŞARISIZ. Error Kodu: " + response.Errorcode + " Error Mesajı: " + response.ErrorMessage; } } else { lblMessage.Text = "ÖDEME İŞLEMİNİZ BAŞARISIZ. Error Kodu: " + response.Errorcode + " Error Mesajı: " + response.ErrorMessage; } } catch (Exception) { lblMessage.Text = "ÖDEME İŞLEMİNİZ BAŞARISIZ"; } }
protected void btnThreeD_Click(object sender, EventArgs e) { IparaRequest request = new IparaRequest(publicKey, privateKey); IparaAuth auth = LoadPayment(); try { Session["Ipara-Auth"] = auth; string successUrl = Request.Url.Scheme + "://" + Request.Url.Authority + "/TheeDResult.aspx"; // "http://www.magazaniz.com/demo.aspx?type=response&three_d_response=success"; string failureUrl = Request.Url.Scheme + "://" + Request.Url.Authority + "/TheeDResult.aspx"; //"http://www.magazaniz.com/demo.aspx?type=response&three_d_response=failure"; request.PayThreeD(auth, successUrl, failureUrl); } catch (Exception ex) { lblMessage.Text = "ÖDEME İŞLEMİNİZ BAŞARISIZ. Error: " + ex.Message; } }
protected void btnPay_Click(object sender, EventArgs e) { IparaRequest request = new IparaRequest(publicKey, privateKey); IparaAuth auth = LoadPayment(); try { // Odeme bilgileri API ile odeme servisine iletilir. var response = request.Pay(auth); if (response.Result.Equals("1")) { lblMessage.Text = "ÖDEME İŞLEMİNİZ BAŞARILI"; } else { lblMessage.Text = "ÖDEME İŞLEMİNİZ BAŞARISIZ. Error Kodu: " + response.Errorcode + " Error Mesajı: " + response.ErrorMessage; } } catch (Exception ex) { lblMessage.Text = "ÖDEME İŞLEMİNİZ BAŞARISIZ. Error: " + ex.Message; } }
private IparaAuth LoadPayment() { IparaAuth auth = new IparaAuth(); #region Kart bilgileri decimal sumAmount = (decimal.Parse(tbProductPrice1.Text) * int.Parse(tbProductQuatity1.Text)) + (decimal.Parse(tbProductPrice2.Text) * int.Parse(tbProductQuatity2.Text)); auth.OrderId = lblOrderId.Text; auth.Amount = String.Format("{0:0.00}", sumAmount).Replace(".", "").Replace(",", ""); auth.CardOwnerName = tbCardOwnerName.Text; auth.CardNumber = tbCardNumber.Text; auth.CardExpireMonth = tbCardExpireMonth.Text; auth.CardExpireYear = tbCardExpireYear.Text; auth.Installment = tbInstallment.Text; auth.Cvc = tbCvc.Text; auth.Mode = this.mode; // auth.VendorId = this.vendorId; auth.Echo = "Echo Bilgisi"; #endregion #region Sipariş veren bilgileri tbPurchaserName.Text = "Murat"; tbPurchaserSurName.Text = "Kaya"; tbPurchaserBirthDate.Text = "1986-07-11"; tbPurchaserEmail.Text = "*****@*****.**"; tbPurchaserGsmPhone.Text = "5881231212"; tbPurchaserIdentityNumber.Text = "1234567890"; #endregion #region Sipariş veren bilgileri auth.Purchaser = new Purchaser(); auth.Purchaser.Name = tbPurchaserName.Text; auth.Purchaser.SurName = tbPurchaserSurName.Text; auth.Purchaser.BirthDate = DateTime.Parse(tbPurchaserBirthDate.Text).ToString("yyyy-MM-dd"); auth.Purchaser.Email = tbPurchaserEmail.Text; auth.Purchaser.GsmPhone = tbPurchaserGsmPhone.Text; auth.Purchaser.IdentityNumber = tbPurchaserIdentityNumber.Text; auth.Purchaser.ClientIp = Request.UserHostAddress; #endregion #region Fatura bilgileri auth.Purchaser.InvoiceAddress = new PurchaserAddress(); auth.Purchaser.InvoiceAddress.Name = tbInvoiceName.Text; auth.Purchaser.InvoiceAddress.SurName = tbInvoiceSurName.Text; auth.Purchaser.InvoiceAddress.Address = tbInvoiceAddress.Text; auth.Purchaser.InvoiceAddress.ZipCode = tbInvoiceZipCode.Text; auth.Purchaser.InvoiceAddress.CityCode = tbInvoiceCityCode.Text; auth.Purchaser.InvoiceAddress.IdentityNumber = tbInvoiceIdentityNumber.Text; auth.Purchaser.InvoiceAddress.CountryCode = lblInvoiceCountryCode.Text; auth.Purchaser.InvoiceAddress.TaxNumber = tbInvoiceTaxNumber.Text; auth.Purchaser.InvoiceAddress.TaxOffice = tbInvoiceTaxOffice.Text; auth.Purchaser.InvoiceAddress.CompanyName = tbInvoiceCompanyName.Text; auth.Purchaser.InvoiceAddress.PhoneNumber = tbInvoicePhone.Text; #endregion #region Kargo Adresi bilgileri auth.Purchaser.ShippingAddress = new PurchaserAddress(); auth.Purchaser.ShippingAddress.Name = tbShippingName.Text; auth.Purchaser.ShippingAddress.SurName = tbShippingSurName.Text; auth.Purchaser.ShippingAddress.Address = tbShippingAddress.Text; auth.Purchaser.ShippingAddress.ZipCode = tbShippingZipCode.Text; auth.Purchaser.ShippingAddress.CityCode = tbShippingCityCode.Text; auth.Purchaser.ShippingAddress.CountryCode = lblShippingCountryCode.Text; auth.Purchaser.ShippingAddress.PhoneNumber = tbShippingPhone.Text; #endregion #region Ürün bilgileri auth.Products = new List <Product>(); Product p = new Product(); p.Title = tbProductTitle1.Text; p.Code = tbProductCode1.Text; p.Price = String.Format("{0:0.00}", (decimal.Parse(tbProductPrice1.Text))).Replace(".", "").Replace(",", "");; p.Quantity = int.Parse(tbProductQuatity1.Text); auth.Products.Add(p); p = new Product(); p.Title = tbProductTitle2.Text; p.Code = tbProductCode2.Text; p.Price = String.Format("{0:0.00}", (decimal.Parse(tbProductPrice2.Text))).Replace(".", "").Replace(",", "");; p.Quantity = int.Parse(tbProductQuatity2.Text); auth.Products.Add(p); #endregion return(auth); }