Esempio n. 1
0
        //public override ProcessPaymentResult ProcessPayment(ProcessPaymentRequest processPaymentRequest)
        //{
        //    var result = new ProcessPaymentResult();
        //    var settings = CommonServices.Settings.LoadSetting<GTPaySettings>(processPaymentRequest.StoreId);

        //    result.AllowStoringCreditCardNumber = true;

        //    switch (settings.TransactionStatus)
        //    {
        //        case TransactionStatus.Pending:
        //            result.NewPaymentStatus = PaymentStatus.Pending;
        //            break;
        //        case TransactionStatus.Authorize:
        //            result.NewPaymentStatus = PaymentStatus.Authorized;
        //            break;
        //        case TransactionStatus.Paid:
        //            result.NewPaymentStatus = PaymentStatus.Paid;
        //            break;
        //        default:
        //            result.AddError(T("Common.Payment.TranactionTypeNotSupported"));
        //            return result;
        //    }

        //    return result;
        //}


        /// <summary>
        /// Post process payment (used by payment gateways that require redirecting to a third-party URL)
        /// </summary>
        /// <param name="postProcessPaymentRequest">Payment info required for an order processing</param>
        public override void PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest)
        {
            if (postProcessPaymentRequest.Order.PaymentStatus == Core.Domain.Payments.PaymentStatus.Paid)
            {
                return;
            }

            int selectedCurrencyId = Convert.ToInt32(_httpContext.Session[_gatewayLuncher.SelectedCurrencyId]);
            GTPaySupportedCurrency supportedCurrency = _supportedCurrencyService.GetSupportedCurrencyById(selectedCurrencyId);

            if (supportedCurrency == null || supportedCurrency.Id <= 0)
            {
                throw new ArgumentNullException(_localizationService.GetResource("Plugins.SmartStore.GTPay.SupportedCurrencyNullArgument"));
                //throw new ArgumentNullException("supportedCurrency retreival failed! Please try again");
            }

            GTPaySettings gtpaysettings = _httpContext.Session[_gatewayLuncher.GTPaySettings] as GTPaySettings;

            if (gtpaysettings == null)
            {
                throw new ArgumentNullException(_localizationService.GetResource("Plugins.SmartStore.GTPay.GTPaySettingsNullArgument"));
                //throw new ArgumentNullException("GTPaySettings could not be retreived! Please try again, but contact your system administrator after three unsuccessful trials");
            }

            _gatewayLuncher.Lunch(postProcessPaymentRequest, supportedCurrency, gtpaysettings, _httpContext);
        }
Esempio n. 2
0
        public virtual void UpdateSupportedCurrency(GTPaySupportedCurrency gTPaySupportedCurrency)
        {
            if (gTPaySupportedCurrency == null)
            {
                throw new ArgumentNullException("gTPaySupportedCurrency");
            }

            _supportedCurrencyRepository.Update(gTPaySupportedCurrency);
        }
Esempio n. 3
0
        public virtual void Add(GTPaySupportedCurrency gTPaySupportedCurrency)
        {
            if (gTPaySupportedCurrency == null)
            {
                throw new ArgumentNullException("gTPaySupportedCurrency");
            }

            _supportedCurrencyRepository.Insert(gTPaySupportedCurrency);
        }
Esempio n. 4
0
        public void Lunch(PostProcessPaymentRequest postProcessPaymentRequest, GTPaySupportedCurrency currency, GTPaySettings gtpaySetting, HttpContextBase httpContext)
        {
            OrderId = postProcessPaymentRequest.Order.Id;
            Tuple <string, string> nameAndEmail = GetNameAndEmail(postProcessPaymentRequest.Order.BillingAddress);

            decimal orderTotal       = Math.Truncate(postProcessPaymentRequest.Order.OrderTotal * currency.LeastValueUnitMultiplier);
            string  gtpay_tranx_memo = GetOrderSummary(nameAndEmail, postProcessPaymentRequest.Order);
            string  gtpay_tranx_id   = httpContext.Session[TransactionRef] as string;

            string gtpay_mert_id        = gtpaySetting.MerchantId;
            string gtpay_tranx_amt      = orderTotal.ToString();
            string gtpay_tranx_curr     = currency.Code.ToString();
            string gtpay_cust_id        = postProcessPaymentRequest.Order.Customer.Id.ToString();
            string gtpay_cust_name      = nameAndEmail.Item1;
            string gtpay_tranx_noti_url = GetRedirectUrl(httpContext.Request, "Details", "Order", OrderId);

            string hash = gtpaySetting.HashKey;
            string parameters_to_hash = gtpay_mert_id + gtpay_tranx_id + gtpay_tranx_amt + gtpay_tranx_curr + gtpay_cust_id + gtpay_tranx_noti_url + hash;
            string gtpay_echo_data    = gtpay_mert_id + ";" + hash + ";" + nameAndEmail.Item1 + ";" + nameAndEmail.Item2 + ";" + gtpay_cust_id + ";" + postProcessPaymentRequest.Order.Id;
            string gtpay_hash         = GenerateSHA512String(parameters_to_hash);
            string url             = gtpaySetting.GatewayPostUrl;
            string gtpay_gway_name = currency.Gateway;


            //store payment request parameter in session
            NameValueCollection paymentRequest = new NameValueCollection();

            paymentRequest.Set(GtpayTranxMemo, gtpay_tranx_memo);
            paymentRequest.Set(GtpayTranxId, gtpay_tranx_id);
            paymentRequest.Set(GtpayMertId, gtpay_mert_id);
            paymentRequest.Set(GtpayTranxAmt, gtpay_tranx_amt);
            paymentRequest.Set(GtpayTranxCurr, gtpay_tranx_curr);
            paymentRequest.Set(GtpayCustId, gtpay_cust_id);
            paymentRequest.Set(GtpayCustName, gtpay_cust_name);
            paymentRequest.Set(GtpayTranxNotiUrl, gtpay_tranx_noti_url);
            paymentRequest.Set(GtpayEchoData, gtpay_echo_data);
            paymentRequest.Set(GtpayHash, gtpay_hash);
            paymentRequest.Set(GtpayGwayName, gtpay_gway_name);
            httpContext.Session[PamentRequestParameter] = paymentRequest;

            //gtpay_tranx_noti_url = "SR" + gtpay_tranx_noti_url;
            //gtpay_cust_id = gtpay_cust_id + 2;

            HttpResponseBase response = httpContext.Response;

            response.Clear();

            StringBuilder form = new StringBuilder();

            form.Append("<html>");
            form.AppendFormat("<body onload='document.forms[0].submit()'>");
            form.AppendFormat("<form action='{0}' method='post'>", url);
            form.AppendFormat("<input type='hidden' name='" + GtpayMertId + "' value='{0}'>", gtpay_mert_id);
            form.AppendFormat("<input type='hidden' name='" + GtpayTranxId + "' value='{0}'>", gtpay_tranx_id);
            form.AppendFormat("<input type='hidden' name='" + GtpayTranxAmt + "' value='{0}'>", gtpay_tranx_amt);
            form.AppendFormat("<input type='hidden' name='" + GtpayTranxCurr + "' value='{0}'>", gtpay_tranx_curr);
            form.AppendFormat("<input type='hidden' name='" + GtpayCustId + "' value='{0}'>", gtpay_cust_id);
            form.AppendFormat("<input type='hidden' name='" + GtpayCustName + "' value='{0}'>", gtpay_cust_name);
            form.AppendFormat("<input type='hidden' name='" + GtpayTranxMemo + "' value='{0}'>", gtpay_tranx_memo);
            form.AppendFormat("<input type='hidden' name='" + GtpayNoShowGtbank + "' value='{0}'>", gtpaySetting.ShowGatewayInterface == true ? "yes" : "no");
            form.AppendFormat("<input type='hidden' name='" + GtpayEchoData + "' value='{0}'>", gtpay_echo_data);
            form.AppendFormat("<input type='hidden' name='" + GtpayGwayFirst + "' value='{0}'>", gtpaySetting.ShowGatewayNameFirst == true ? "yes" : "no");
            form.AppendFormat("<input type='hidden' name='" + GtpayGwayName + "' value='{0}'>", gtpay_gway_name);
            form.AppendFormat("<input type='hidden' name='" + GtpayHash + "' value='{0}'>", gtpay_hash);
            form.AppendFormat("<input type='hidden' name='" + GtpayTranxNotiUrl + "' value='{0}'>", gtpay_tranx_noti_url);
            form.Append("</form>");
            form.Append("</body>");
            form.Append("</html>");

            response.Write(form.ToString());
            response.End();
        }