public HttpResponseMessage PaymentRequest()
        {
            ATISMobileWebApi WebAPi = new ATISMobileWebApi();

            try
            {
                //تایید اعتبار کلاینت
                WebAPi.AuthenticateClientApikeyNoncePersonalNonceWith1Parameter(Request, ATISMobileWebApiLogTypes.WebApiClientMoneyWalletPaymentRequest);

                var InstanceConfiguration = new R2CoreInstanceConfigurationManager();
                var InstanceSoftwareusers = new R2CoreInstanseSoftwareUsersManager();
                var InstanceAES           = new AESAlgorithmsManager();
                var Content         = JsonConvert.DeserializeObject <string>(Request.Content.ReadAsStringAsync().Result);
                var MobileNumber    = InstanceAES.Decrypt(Content.Split(';')[0], InstanceConfiguration.GetConfigString(R2CoreConfigurations.PublicSecurityConfiguration, 3));
                var NSSSoftwareuser = InstanceSoftwareusers.GetNSSUser(new R2CoreSoftwareUserMobile(MobileNumber));
                var Amount          = Convert.ToInt32(Content.Split(';')[2]) * 10;
                if (Amount > 1000000)
                {
                    throw new ChargingAmountInvalidException();
                }

                var WS    = new R2Core.R2PrimaryWS.R2PrimaryWebService();
                var PayId = WS.WebMethodPaymentRequest(R2CoreMonetaryCreditSupplySources.ZarrinPalPaymentGate, Amount, NSSSoftwareuser.UserId, WS.WebMethodLogin(R2CoreMClassSoftwareUsersManagement.GetNSSSystemUser().UserShenaseh, R2CoreMClassSoftwareUsersManagement.GetNSSSystemUser().UserPassword));
                var InstancePaymentRequests = new R2CoreInstansePaymentRequestsManager();
                var NSSPaymentRequest       = InstancePaymentRequests.GetNSSPayment(PayId);
                while ((NSSPaymentRequest.Authority == string.Empty) & (NSSPaymentRequest.PaymentErrors == string.Empty))
                {
                    System.Threading.Thread.Sleep(500); NSSPaymentRequest = InstancePaymentRequests.GetNSSPayment(PayId);
                }
                if (NSSPaymentRequest.Authority != string.Empty)
                {
                    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
                    response.Content = new StringContent(JsonConvert.SerializeObject(new MessageStruct {
                        ErrorCode = false, Message1 = NSSPaymentRequest.Authority, Message2 = InstanceConfiguration.GetConfigString(R2CoreConfigurations.ZarrinPalPaymentGate, 2), Message3 = string.Empty
                    }), Encoding.UTF8, "application/json");
                    return(response);
                }
                else
                {
                    throw new Exception(NSSPaymentRequest.PaymentErrors);
                }
            }
            catch (UserNotExistByApiKeyException ex)
            { return(WebAPi.CreateErrorContentMessage(ex)); }
            catch (Exception ex)
            { return(WebAPi.CreateErrorContentMessage(ex)); }
        }
예제 #2
0
        public ActionResult PaymentVerification()
        {
            ATISMobileWebApi WebAPi = new ATISMobileWebApi();

            try
            {
                //تایید اعتبار کلاینت
                WebAPi.AuthenticateClientPaymentVerification(Request, Request.QueryString["Authority"]);

                var InstanceTrafficCards      = new R2CoreTransportationAndLoadNotificationInstanceTerraficCardsManager();
                var InstanceMoneyWallets      = new R2CoreParkingSystemInstanceMoneyWalletManager();
                var InstanceMoneyWalletCharge = new R2CoreParkingSystemInstanceMoneyWalletChargeManager();
                var InstanceSoftwareUsers     = new R2CoreInstanseSoftwareUsersManager();

                if (Request.QueryString["Status"] != "" && Request.QueryString["Status"] != null && Request.QueryString["Authority"] != "" && Request.QueryString["Authority"] != null)
                {
                    if (Request.QueryString["Status"].ToString().Equals("OK"))
                    {
                        var WS    = new R2Core.R2PrimaryWS.R2PrimaryWebService();
                        var PayId = WS.WebMethodVerificationRequest(R2CoreMonetaryCreditSupplySources.ZarrinPalPaymentGate, Request.QueryString["Authority"].ToString(), WS.WebMethodLogin(R2CoreMClassSoftwareUsersManagement.GetNSSSystemUser().UserShenaseh, R2CoreMClassSoftwareUsersManagement.GetNSSSystemUser().UserPassword));
                        var InstancePaymentRequests = new R2CoreInstansePaymentRequestsManager();
                        var NSSPaymentRequest       = InstancePaymentRequests.GetNSSPayment(PayId);
                        while ((NSSPaymentRequest.RefId == string.Empty) & (NSSPaymentRequest.VerificationErrors == string.Empty))
                        {
                            System.Threading.Thread.Sleep(500); NSSPaymentRequest = InstancePaymentRequests.GetNSSPayment(PayId);
                        }
                        if (NSSPaymentRequest.RefId != string.Empty)
                        {
                            var   InstanceAES           = new AESAlgorithmsManager();
                            var   InstanceConfiguration = new R2CoreInstanceConfigurationManager();
                            var   NSSSoftwareUser       = InstanceSoftwareUsers.GetNSSUser(NSSPaymentRequest.SoftwareUserId);
                            var   NSSTrafficCard        = InstanceTrafficCards.GetNSSTerafficCard(NSSSoftwareUser);
                            Int64 CurrentCharge         = InstanceMoneyWallets.GetMoneyWalletCharge(NSSTrafficCard);
                            InstanceMoneyWallets.ActMoneyWalletNextStatus(NSSTrafficCard, BagPayType.AddMoney, NSSPaymentRequest.Amount, R2CoreParkingSystemAccountings.ChargeType, R2CoreMClassSoftwareUsersManagement.GetNSSSystemUser());
                            InstanceMoneyWalletCharge.SabtCharge(new R2StandardMoneyWalletChargeStructure(NSSTrafficCard, NSSPaymentRequest.Amount, InstanceSoftwareUsers.GetNSSSystemUser().UserId, "", _R2DateTime.GetCurrentDateTimeMilladi(), _R2DateTime.GetCurrentDateShamsiFull(), NSSPaymentRequest.Amount + CurrentCharge, 0, _R2DateTime.GetCurrentTime()));
                            Int64 LastCharge = InstanceMoneyWallets.GetMoneyWalletCharge(NSSTrafficCard);
                            ViewBag.IsSuccess = true; ViewBag.RefId = NSSPaymentRequest.RefId;
                            ViewBag.Message1  = NSSTrafficCard.CardNo + "  شاخص کیف پول ";
                            ViewBag.Message2  = CurrentCharge.ToString() + "  موجودی قبلی ";
                            ViewBag.Message3  = NSSPaymentRequest.Amount.ToString() + "  مبلغ شارژ ";
                            ViewBag.Message4  = LastCharge.ToString() + "  موجودی نهایی ";
                        }
                        else
                        {
                            ViewBag.IsSuccess = false; ViewBag.Message = NSSPaymentRequest.VerificationErrors;
                        }
                    }
                    else
                    {
                        ViewBag.IsSuccess = false; ViewBag.Message = "Error! : Status: " + Request.QueryString["Status"].ToString();
                    }
                }
                else
                {
                    ViewBag.IsSuccess = false; ViewBag.Message = "Invalid Input";
                }
            }
            catch (Exception ex)
            { ViewBag.IsSuccess = false; ViewBag.Message = ex.Message; }
            return(View());
        }