//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); }
public virtual void UpdateSupportedCurrency(GTPaySupportedCurrency gTPaySupportedCurrency) { if (gTPaySupportedCurrency == null) { throw new ArgumentNullException("gTPaySupportedCurrency"); } _supportedCurrencyRepository.Update(gTPaySupportedCurrency); }
public virtual void Add(GTPaySupportedCurrency gTPaySupportedCurrency) { if (gTPaySupportedCurrency == null) { throw new ArgumentNullException("gTPaySupportedCurrency"); } _supportedCurrencyRepository.Insert(gTPaySupportedCurrency); }
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(); }