예제 #1
0
        /// <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!");
            }
        }
예제 #2
0
        /// <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();
        }
예제 #3
0
        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";
            }
        }
예제 #4
0
        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;
            }
        }
예제 #5
0
        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;
            }
        }
예제 #6
0
        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);
        }