Exemple #1
0
        public override Task <PaymentProviderBeginPaymentResponse> BeginPaymentAsync(BeginPaymentRequest request, System.Threading.CancellationToken cancellation)
        {
            var tcs = new TaskCompletionSource <PaymentProviderBeginPaymentResponse>();

            try
            {
                var service = new com.zarinpal.www.PaymentGatewayImplementationService();

                service.PaymentRequestCompleted += new PaymentRequestCompletedEventHandler((object sender, PaymentRequestCompletedEventArgs args) =>
                {
                    if (args.Error != null)
                    {
                        tcs.TrySetException(args.Error);
                    }
                    else
                    if (!args.Cancelled)
                    {
                        try
                        {
                            var result          = new PaymentProviderBeginPaymentResponse <ZarinPalBankTranStatus>(Now);
                            result.ProviderType = this.ProviderType;
                            result.Code         = SafeClrConvert.ToLong(args.Authority);
                            result.Status       = args.Result;
                            result.Succeeded    = (args.Result == 100);
                            result.GatewayUrl   = Config.GatewayUrl + $"/{result.Code}";
                            result.SendMethod   = Config.GatewayMethod;
                            result.StrongStatus = args.Result.ToEnum <ZarinPalBankTranStatus>();

                            tcs.SetResult(result);
                        }
                        catch (Exception ex)
                        {
                            tcs.TrySetException(ex);
                        }
                    }
                    else
                    {
                        tcs.SetCanceled();
                    }

                    service.Dispose();
                });

                var amount = SafeClrConvert.ToInt32(request.Amount);

                cancellation.Register(() => service.CancelAsync(request.PaymentCode));

                service.PaymentRequestAsync(Config.Credentials.MerchantId, amount, request.Info, "", "", (string.IsNullOrEmpty(request.ReturnUrl) ? Config.CallbackUrl : request.ReturnUrl));
            }
            catch (Exception e)
            {
                tcs.SetException(e);
            }

            return(tcs.Task);
        }
Exemple #2
0
        protected virtual LogItem Transform(IDataReader reader)
        {
            var result = new LogItem
            {
                Row      = SafeClrConvert.ToLong(reader["Row"]),
                Id       = SafeClrConvert.ToInt(reader["Id"]),
                Member   = SafeClrConvert.ToString(reader["Member"]),
                Category = SafeClrConvert.ToString(reader["Category"]),
                Message  = SafeClrConvert.ToString(reader["Message"]),
                FilePath = SafeClrConvert.ToString(reader["FilePath"]),
                LogDate  = SafeClrConvert.ToDateTime(reader["LogDate"]),
                Line     = SafeClrConvert.ToInt(reader["Line"]),
            };

            return(result);
        }
Exemple #3
0
        public override PaymentProviderBeginPaymentResponse BeginPayment(BeginPaymentRequest request)
        {
            var result = new PaymentProviderBeginPaymentResponse <ZarinPalBankTranStatus>(Now);

            result.ProviderType = this.ProviderType;

            var    service = new com.zarinpal.www.PaymentGatewayImplementationService();
            var    amount  = SafeClrConvert.ToInt32(request.Amount);
            string auth    = "";

            var status = service.PaymentRequest(Config.Credentials.MerchantId, amount, request.Info, "", "", (string.IsNullOrEmpty(request.ReturnUrl) ? Config.CallbackUrl : request.ReturnUrl), out auth);

            result.Code         = SafeClrConvert.ToLong(auth);
            result.Status       = status;
            result.Succeeded    = status == 100;
            result.GatewayUrl   = Config.GatewayUrl + $"/{result.Code}";
            result.SendMethod   = Config.GatewayMethod;
            result.StrongStatus = ((int)status).ToEnum <ZarinPalBankTranStatus>();

            return(result);
        }
Exemple #4
0
        public virtual LoggerGetPageResponse GetPage(LoggerGetPageRequest request)
        {
            var response = new LoggerGetPageResponse();

            if (ConnectionStringProvider != null)
            {
                try
                {
                    var query = GetPagingSql();

                    var constr = ConnectionStringProvider.GetConnectionString();

                    if (!string.IsNullOrEmpty(constr))
                    {
                        using (var con = new SqlConnection(constr))
                        {
                            using (var cmd = new SqlCommand(query, con))
                            {
                                cmd.CommandType = CommandType.StoredProcedure;

                                cmd.Parameters.AddInputOutput("@CurrentPage", request.CurrentPage);
                                cmd.Parameters.AddInputOutput("@PageSize", request.PageSize);
                                cmd.Parameters.AddOutput("@RecordCount", SqlDbType.Int);
                                cmd.Parameters.AddOutput("@PageCount", SqlDbType.Int);
                                cmd.Parameters.AddInput("@Member", request.Member);
                                cmd.Parameters.AddInput("@Category", request.Category);
                                cmd.Parameters.AddInput("@Message", request.Message);
                                cmd.Parameters.AddInput("@FromDate", request.FromDate);
                                cmd.Parameters.AddInput("@ToDate", request.ToDate);
                                cmd.Parameters.AddInput("@OrderBy", request.OrderBy);
                                cmd.Parameters.AddInput("@OrderDir", request.OrderDir);

                                FinalizePagingCommand(cmd);

                                con.Open();
                                var reader = cmd.ExecuteReader();

                                response.Data.CurrentPage = SafeClrConvert.ToInt(cmd.Parameters[0].Value);
                                response.Data.PageSize    = SafeClrConvert.ToInt(cmd.Parameters[1].Value);
                                response.Data.RecordCount = SafeClrConvert.ToLong(cmd.Parameters[2].Value);
                                response.Data.PageCount   = SafeClrConvert.ToInt(cmd.Parameters[3].Value);
                                response.Data.Items       = new List <LogItem>();

                                while (reader.Read())
                                {
                                    var item = Transform(reader);

                                    response.Data.Items.Add(item);
                                }
                            }
                        }

                        response.Succeeded();
                    }
                    else
                    {
                        response.Message = "ConnectionStringProvider has no connection string";
                        response.Info    = $"Provider = {ConnectionStringProvider.GetType().Name}";
                        response.SetStatus("NoConStr");
                    }
                }
                catch (Exception e)
                {
                    response.Failed(e);
                }
            }
            else
            {
                response.Message = "No ConnectionStringProvider is specified";
                response.SetStatus("NoConStrProvider");
            }

            return(response);
        }
Exemple #5
0
 public static long ToLong(this string s, long @default = default(long))
 {
     return(SafeClrConvert.ToLong(s, @default));
 }