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 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); }
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 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); }
private async Task <PaymentManagerReversalPaymentResponse> SaveReversalPaymentAsync(ReversalRequest request, PaymentProviderReversalPaymentResponse providerResponse, CancellationToken cancellation) { var result = new PaymentManagerReversalPaymentResponse(); result.Request = request; var dbOk = false; Logger.LogCategory("SaveReversalPaymentAsync"); 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 = await _db.ExecuteNonQueryAsync(cmd, args, cancellation); 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); }