Ejemplo n.º 1
0
    private bool IsAlreadyReversed(ReversalRequest tran)
    {
        bool            ret = false;
        DatabaseHandler dp  = new DatabaseHandler();
        DataTable       dt  = dp.CheckIfReversed(tran.VendorCode, tran.OriginalTransactionId);

        if (dt.Rows.Count > 0)
        {
            ret = true;
            string status = dt.Rows[0]["Status"].ToString();
            if (status == "SUCCESS")
            {
                ReversalTransactionId = dt.Rows[0]["ReversalTransactionId"].ToString();
                StatusCode            = "0";
                StatusDesc            = "THE TRANSACTION HAS ALREADY BEEN REVERSED";
            }
            else if (status == "PENDING")
            {
                ReversalTransactionId = dt.Rows[0]["ReversalTransactionId"].ToString();
                StatusCode            = "100";
                StatusDesc            = "A REVERSAL REQUEST HAS ALREADY BEEN LOGGED FOR SPECIFIED ORIGINAL TRANSACTION ID";
            }
        }
        else
        {
            ret = false;
        }
        return(ret);
    }
Ejemplo n.º 2
0
        private PaymentManagerReversalPaymentResponse SaveReversalPayment(ReversalRequest request, PaymentProviderReversalPaymentResponse providerResponse)
        {
            var result = new PaymentManagerReversalPaymentResponse();

            result.Request = request;

            var dbOk = false;

            Logger.LogCategory("SaveReversalPayment");

            if (providerResponse.Succeeded || !Config.SaveOnlySuccessfulOperations)
            {
                Logger.Log("Start saving in the database");

                var args = new
                {
                    Result        = CommandParameter.Output(SqlDbType.VarChar, 50),
                    PaymentCode   = request.PaymentCode,
                    BankType      = providerResponse.ProviderType,
                    StepStatus    = SafeClrConvert.ToString(providerResponse.Status),
                    StepDate      = providerResponse.Date,
                    StepSucceeded = providerResponse.Succeeded,
                    @StepData     = ""
                };
                var cmd = _db.GetCommand("usp1_Payment_save_reversal_step");

                result.DbResult = _db.ExecuteNonQuery(cmd, args);

                if (result.DbResult.Success)
                {
                    result.Status = args.Result.Value.ToString();

                    Logger.Log("DbStatus = " + result.Status);

                    dbOk = result.Status == "Success";

                    if (!dbOk)
                    {
                        result.Status = "SaveError";
                    }
                }
                else
                {
                    Logger.Log("Failed: " + result.DbResult.Exception.ToString(","));

                    result.Failed(result.DbResult.Exception);
                }
            }
            else
            {
                dbOk = true;
            }

            if (providerResponse.Succeeded && dbOk)
            {
                result.Succeeded();
            }

            return(result);
        }
        public override PaymentProviderReversalPaymentResponse ReversalPayment(ReversalRequest request)
        {
            var result = new PaymentProviderReversalPaymentResponse(Now);

            result.ProviderType = this.ProviderType;

            var eservice = new ir.shaparak.sep.PaymentIFBinding();
            var r        = eservice.reverseTransaction(request.PaymentCode, Config.Credentials.Pin, Config.Credentials.Username, Config.Credentials.Password);

            result.Status    = 0;
            result.Succeeded = (r == 1);

            return(result);
        }
Ejemplo n.º 4
0
    private bool IsDuplicateReversalId(ReversalRequest tran)
    {
        bool            ret = false;
        DatabaseHandler dp  = new DatabaseHandler();
        DataTable       dt  = dp.GetDuplicateReversalRef(tran.VendorCode, tran.ReversalTransactionId);

        if (dt.Rows.Count > 0)
        {
            ret = true;
        }
        else
        {
            ret = false;
        }
        return(ret);
    }
Ejemplo n.º 5
0
        public async Task <IActionResult> SendReversalRequest()
        {
            Mpesa mpesa = new Mpesa();

            ReversalRequest reversalRequest = new ReversalRequest
            {
                ReceiverParty   = "600214",
                Remarks         = "Test",
                Initiator       = "testapi",
                Password        = "******",
                QueueTimeOutURL = "https://testurl.co.ke",
                ResultURL       = "https://testurl.co.ke",
                TransactionID   = "MIC8LOY6P8",
                Occasion        = "Test"
            };

            var response = await mpesa.ReversalAsync(_options.ConsumerKey, _options.ConsumerSecret, reversalRequest);

            return(Json(response));
        }
        public override PaymentProviderReversalPaymentResponse ReversalPayment(ReversalRequest request)
        {
            var result = new PaymentProviderReversalPaymentResponse(Now);

            result.ProviderType = this.ProviderType;

            int orderid;

            if (!int.TryParse(request.PaymentCode, out orderid))
            {
                var  pec       = new ir.shaparak.pec.EShopService();
                byte pecStatus = 0;

                pec.PinReversal(Config.Credentials.Pin, orderid, orderid, ref pecStatus);

                result.Status    = pecStatus;
                result.Succeeded = (pecStatus == 0);
            }

            return(result);
        }
Ejemplo n.º 7
0
 public override PaymentProviderReversalPaymentResponse ReversalPayment(ReversalRequest request)
 {
     /*
      * var result = new PaymentProviderReversalPaymentResponse(Now);
      * result.ProviderType = this.ProviderType;
      *
      * int orderid;
      *
      * if (!int.TryParse(request.PaymentCode, out orderid))
      * {
      *  var pec = new ir.shaparak.pec.EShopService();
      *  byte pecStatus = 0;
      *
      *  pec.PinReversal(Config.Credentials.Pin, orderid, orderid, ref pecStatus);
      *
      *  result.Status = pecStatus;
      *  result.Succeeded = (pecStatus == 0);
      * }
      *
      * return result;
      */
     throw new NotImplementedException();
 }
        public override Task <PaymentProviderReversalPaymentResponse> ReversalPaymentAsync(ReversalRequest request, CancellationToken cancellation)
        {
            var tcs = new TaskCompletionSource <PaymentProviderReversalPaymentResponse>();

            try
            {
                var pec = new ir.shaparak.pec.EShopService();

                pec.PinReversalCompleted += new PinReversalCompletedEventHandler((sender, args) =>
                {
                    if (args.Error != null)
                    {
                        tcs.TrySetException(args.Error);
                    }
                    else
                    if (!args.Cancelled)
                    {
                        try
                        {
                            var result = new PaymentProviderReversalPaymentResponse(Now);

                            result.Status       = args.status;
                            result.Succeeded    = (args.status == 0);
                            result.ProviderType = this.ProviderType;

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

                    pec.Dispose();
                });

                byte pecStatus = 0;
                int  orderid   = 0;

                if (!int.TryParse(request.PaymentCode, out orderid))
                {
                    var result = new PaymentProviderReversalPaymentResponse();

                    result.Status = (int)AyandehBankTranStatus.InvalidReversalOrder;

                    tcs.SetResult(result);
                }
                else
                {
                    cancellation.Register(() => pec.CancelAsync(request.PaymentCode));

                    pec.PinReversalAsync(Config.Credentials.Pin, orderid, orderid, pecStatus, request.PaymentCode);
                }
            }
            catch (Exception e)
            {
                tcs.SetException(e);
            }

            return(tcs.Task);
        }
 public static Task <PaymentProviderReversalPaymentResponse> ReversalAsync(this IPaymentProvider provider, ReversalRequest request)
 {
     return(provider.ReversalPaymentAsync(request, CancellationToken.None));
 }
Ejemplo n.º 10
0
 public static Task <PaymentManagerReversalPaymentResponse> ReversalAsync(this IPaymentManager Manager, string bankType, ReversalRequest request)
 {
     return(Manager.ReversalPaymentAsync(bankType, request, CancellationToken.None));
 }
        public override Task <PaymentProviderReversalPaymentResponse> ReversalPaymentAsync(ReversalRequest request, CancellationToken cancellation)
        {
            var tcs = new TaskCompletionSource <PaymentProviderReversalPaymentResponse>();

            try
            {
                var pec = new ir.shaparak.sep.PaymentIFBinding();

                pec.reverseTransactionCompleted += new reverseTransactionCompletedEventHandler((sender, args) =>
                {
                    if (args.Error != null)
                    {
                        tcs.TrySetException(args.Error);
                    }
                    else
                    if (!args.Cancelled)
                    {
                        try
                        {
                            var result = new PaymentProviderReversalPaymentResponse(Now);

                            result.Status       = 0;
                            result.Succeeded    = (args.Result == 1);
                            result.ProviderType = this.ProviderType;

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

                    pec.Dispose();
                });

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

                pec.reverseTransactionAsync(request.PaymentCode, Config.Credentials.Pin, Config.Credentials.Username, Config.Credentials.Password, request.PaymentCode);
            }
            catch (Exception e)
            {
                tcs.SetException(e);
            }

            return(tcs.Task);
        }
Ejemplo n.º 12
0
        public async Task <string[]> ReversalAsync(string consumerKey, string consumersecret, ReversalRequest reversalRequest, bool isSandbox = true)
        {
            ServicePointManager.SecurityProtocol   = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            reversalRequest.SecurityCredential     = Encryption(reversalRequest.Password.Trim());
            reversalRequest.CommandID              = "TransactionReversal";
            reversalRequest.ReceiverIdentifierType = "11";

            JObject jObject = JObject.FromObject(reversalRequest);

            string auth    = Authenticate(consumerKey, consumersecret, isSandbox);
            string baseUrl = getBaseUrl(isSandbox);

            return(await SendApiRequestAsync(auth, baseUrl, "mpesa/reversal/v1/request", jObject));
        }
 public abstract PaymentProviderReversalPaymentResponse ReversalPayment(ReversalRequest request);
Ejemplo n.º 14
0
        public async Task <PaymentManagerReversalPaymentResponse> ReversalPaymentAsync(string bankType, ReversalRequest request, CancellationToken cancellation)
        {
            var result = new PaymentManagerReversalPaymentResponse();

            Logger.LogCategory("ReversalPaymentAsync");
            Logger.Log(new { Request = request });

            var _provider = _providerFactory.GetProvider(bankType);

            if (_provider != null)
            {
                var providerResponse = await _provider.ReversalAsync(request);

                result = await SaveReversalPaymentAsync(request, providerResponse, cancellation);
            }
            else
            {
                result.Status = "NoPaymentProviderFoundForReversal";
                Logger.Log("No PaymentProvider found for Reversal");
            }

            Logger.Log($"Result = {result.Status}");

            return(result);
        }
Ejemplo n.º 15
0
        public PaymentManagerReversalPaymentResponse ReversalPayment(string bankType, ReversalRequest request)
        {
            var result = new PaymentManagerReversalPaymentResponse();

            Logger.LogCategory("ReversalPayment");
            Logger.Log(new { Request = request });

            var _provider = _providerFactory.GetProvider(bankType);

            if (_provider != null)
            {
                var providerResponse = _provider.ReversalPayment(request);
                result = SaveReversalPayment(request, providerResponse);
            }
            else
            {
                result.Status = "NoPaymentProviderFoundForReversal";
                Logger.Log("No PaymentProvider found for Reversal");
            }

            Logger.Log($"Result = {result.Status}");

            return(result);
        }
Ejemplo n.º 16
0
        public override Task <PaymentProviderReversalPaymentResponse> ReversalPaymentAsync(ReversalRequest request, CancellationToken cancellation)
        {
            /*
             * var tcs = new TaskCompletionSource<PaymentProviderReversalPaymentResponse>();
             *
             * try
             * {
             *  var pec = new ir.shaparak.pec.EShopService();
             *
             *  pec.PinReversalCompleted += new PinReversalCompletedEventHandler((sender, args) =>
             *  {
             *      if (args.Error != null)
             *      {
             *          tcs.TrySetException(args.Error);
             *      }
             *      else
             *          if (!args.Cancelled)
             *      {
             *          try
             *          {
             *              var result = new PaymentProviderReversalPaymentResponse(Now);
             *
             *              result.Status = args.status;
             *              result.Succeeded = (args.status == 0);
             *              result.ProviderType = this.ProviderType;
             *
             *              tcs.SetResult(result);
             *          }
             *          catch (Exception ex)
             *          {
             *              tcs.TrySetException(ex);
             *          }
             *
             *      }
             *      else
             *      {
             *          tcs.SetCanceled();
             *      }
             *
             *      pec.Dispose();
             *  });
             *
             *  byte pecStatus = 0;
             *  int orderid = 0;
             *
             *  if (!int.TryParse(request.PaymentCode, out orderid))
             *  {
             *      var result = new PaymentProviderReversalPaymentResponse();
             *
             *      result.Status = (int)ZarinPalBankTranStatus.InvalidReversalOrder;
             *
             *      tcs.SetResult(result);
             *  }
             *  else
             *  {
             *      cancellation.Register(() => pec.CancelAsync(request.PaymentCode));
             *
             *      pec.PinReversalAsync(Config.Credentials.Pin, orderid, orderid, pecStatus, request.PaymentCode);
             *  }
             * }
             * catch (Exception e)
             * {
             *  tcs.SetException(e);
             * }
             *
             * return tcs.Task;
             */

            throw new NotImplementedException();
        }
 public abstract Task <PaymentProviderReversalPaymentResponse> ReversalPaymentAsync(ReversalRequest request, System.Threading.CancellationToken cancellation);