Ejemplo n.º 1
0
        /// <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 void PostProcessPayment(PostProcessPaymentRequest postProcessPaymentRequest)
        {
            //create common query parameters for the request
            try
            {
                ServicePointManager.ServerCertificateValidationCallback =
                    delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return(true); };
                var     kimial     = new KimialPG.KimiaIPGRouteServiceSoapClient(KimialPG.KimiaIPGRouteServiceSoapClient.EndpointConfiguration.KimiaIPGRouteServiceSoap);
                decimal OrderTotal = postProcessPaymentRequest.Order.OrderTotal;
                if (!_payPaymentSettings.IsToman)
                {
                    OrderTotal = postProcessPaymentRequest.Order.OrderTotal * 10;
                }
                string returnUrl = this._webHelper.GetStoreLocation() + "SizPay/Verify?OrderId=" + postProcessPaymentRequest.Order.Id.ToString();

                DateTime        d  = DateTime.Now;
                PersianCalendar pc = new PersianCalendar();

                var result1 = kimial.GetTokenAsync(new KimialPG.GenerateToken()
                {
                    UserName   = _payPaymentSettings.UserName,
                    Password   = _payPaymentSettings.Password,
                    MerchantID = _payPaymentSettings.MerchentId,
                    TerminalID = _payPaymentSettings.TerminalId,
                    Amount     = Convert.ToInt32(OrderTotal),
                    DocDate    = string.Format("{0}/{1}/{2}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d)),
                    OrderID    = postProcessPaymentRequest.Order.Id.ToString(),
                    ReturnURL  = returnUrl,
                    //ExtraInf=_payPaymentSettings.InvoiceNo,
                    InvoiceNo   = postProcessPaymentRequest.Order.Id.ToString(),
                    AppExtraInf = new KimialPG.AppExtraInf(),
                }).Result;//.Body.GetTokenResult;
                var result2 = result1.Body;
                var result  = result2.GetTokenResult;
                if (result.ResCod == 0)
                {
                    postProcessPaymentRequest.Order.AuthorizationTransactionCode = result.Token;
                    EngineContext.Current.Resolve <IOrderService>().UpdateOrder(postProcessPaymentRequest.Order);

                    this._httpContextAccessor.HttpContext.Response.Redirect(
                        this._webHelper.GetStoreLocation() + "SizPay/Pay?MerchantID=" + _payPaymentSettings.MerchentId
                        + "&TerminalID=" + _payPaymentSettings.TerminalId +
                        "&Token=" + result.Token);
                }
                else
                {
                    this.logger.Error("Error Code : " + result.ResCod + " " + "Error Message : " + result.Message);
                    throw new NopException("Error Code : " + result.ResCod + " " + "Error Message : " + result.Message);
                }
            }
            catch (Exception exp)
            {
                this.logger.Error("Error Code : " + exp.Message);
                throw new NopException("Error Message" + exp.Message);
            }
        }
Ejemplo n.º 2
0
        //[HttpPost]
        public ActionResult Verify(int ResCod, string Message, int MrchID, string TrmnlID, int InvoiceNo, string ExtraInf, string Token)
        {
            if (ResCod == 0)
            {
                var order = _orderService.GetOrderById(InvoiceNo);
                if (order.AuthorizationTransactionCode == Token)
                {
                    ServicePointManager.ServerCertificateValidationCallback =
                        delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return(true); };

                    var kimial = new KimialPG.KimiaIPGRouteServiceSoapClient(KimialPG.KimiaIPGRouteServiceSoapClient.EndpointConfiguration.KimiaIPGRouteServiceSoap);
                    var result = kimial.ConfirmAsync(new KimialPG.PaymentRequest()
                    {
                        MerchantID = _payPaymentSettings.MerchentId,
                        Password   = _payPaymentSettings.Password,
                        UserName   = _payPaymentSettings.UserName,
                        TerminalID = _payPaymentSettings.TerminalId,
                        Token      = Token
                    }).Result.Body.ConfirmResult;
                    if (result.ResCod == 0)
                    {
                        this._orderService.InsertOrderNote(new OrderNote
                        {
                            OrderId           = order.Id,
                            Note              = result.TraceNo + " " + result.TransNo,
                            DisplayToCustomer = false,
                            CreatedOnUtc      = DateTime.UtcNow,
                        });
                        _orderProcessingService.MarkOrderAsPaid(order);
                        return(RedirectToRoute("CheckoutCompleted", new { orderId = order.Id }));
                    }
                    else
                    {
                        this._orderService.InsertOrderNote(new OrderNote
                        {
                            OrderId           = order.Id,
                            Note              = result.Message,
                            DisplayToCustomer = false,
                            CreatedOnUtc      = DateTime.UtcNow,
                        });
                    }
                    _orderService.UpdateOrder(order);
                }
            }
            return(base.RedirectToAction("Error", "SizPay", new
            {
                ErrorCode = ResCod,
                Message = Message
            }));
        }