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); }
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); }
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); }
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); }
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)); }
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); }
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);
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); }
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); }
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);