public override Task <PaymentProviderBeginPaymentResponse> BeginPaymentAsync(BeginPaymentRequest request, System.Threading.CancellationToken cancellation) { var tcs = new TaskCompletionSource <PaymentProviderBeginPaymentResponse>(); try { var pec = new ir.shaparak.pec.EShopService(); pec.PinPaymentRequestCompleted += new PinPaymentRequestCompletedEventHandler((sender, args) => { if (args.Error != null) { tcs.TrySetException(args.Error); } else if (!args.Cancelled) { try { var result = new PaymentProviderBeginPaymentResponse <AyandehBankTranStatus>(Now); result.ProviderType = this.ProviderType; result.Code = args.authority; result.SendData.Add(BankCodeArgName, args.authority.ToString()); result.Status = args.status; result.Succeeded = (args.status == 0 && args.authority != -1); result.GatewayUrl = Config.GatewayUrl + $"?{BankCodeArgName}={args.authority}"; result.SendMethod = Config.GatewayMethod; tcs.SetResult(result); } catch (Exception ex) { tcs.TrySetException(ex); } } else { tcs.SetCanceled(); } pec.Dispose(); }); var orderid = SafeClrConvert.ToInt32(request.PaymentCode); var pay = SafeClrConvert.ToInt32(request.Amount); byte pecStatus = 0; long auth = 0; cancellation.Register(() => pec.CancelAsync(request.PaymentCode)); pec.PinPaymentRequestAsync(Config.Credentials.Pin, pay, orderid, (string.IsNullOrEmpty(request.ReturnUrl) ? Config.CallbackUrl : request.ReturnUrl), auth, pecStatus, request.PaymentCode); } catch (Exception e) { tcs.SetException(e); } return(tcs.Task); }
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); }
public override PaymentProviderBeginPaymentResponse BeginPayment(BeginPaymentRequest request) { var result = new PaymentProviderBeginPaymentResponse <SamanBankTranStatus>(Now); result.ProviderType = this.ProviderType; result.Code = 0; // auth; //result.SendData.Add("sam", "lcc"); result.SendData.Add("Amount", request.Amount.ToString()); result.SendData.Add("MID", Config.Credentials.Pin); result.SendData.Add("ResNum", request.PaymentCode); result.SendData.Add("RedirectURL", string.IsNullOrEmpty(request.ReturnUrl)? Config.CallbackUrl: request.ReturnUrl); result.Status = 0; result.Succeeded = true; result.GatewayUrl = Config.GatewayUrl; result.SendMethod = Config.GatewayMethod; return(result); }
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); }
public override PaymentProviderBeginPaymentResponse BeginPayment(BeginPaymentRequest request) { var result = new PaymentProviderBeginPaymentResponse <AyandehBankTranStatus>(Now); result.ProviderType = this.ProviderType; var pec = new ir.shaparak.pec.EShopService(); var orderid = SafeClrConvert.ToInt32(request.PaymentCode); var pay = SafeClrConvert.ToInt32(request.Amount); byte pecStatus = 0; long auth = 0; pec.PinPaymentRequest(Config.Credentials.Pin, pay, orderid, (string.IsNullOrEmpty(request.ReturnUrl) ? Config.CallbackUrl : request.ReturnUrl), ref auth, ref pecStatus); result.Code = auth; result.SendData.Add(BankCodeArgName, auth.ToString()); result.Status = pecStatus; result.Succeeded = (pecStatus == 0 && auth != -1); result.GatewayUrl = Config.GatewayUrl + $"?{BankCodeArgName}={auth}"; result.SendMethod = Config.GatewayMethod; return(result); }
private PaymentManagerBeginPaymentResponse SaveBeginPayment(BeginPaymentRequest request, PaymentProviderBeginPaymentResponse providerResponse) { var result = new PaymentManagerBeginPaymentResponse(); result.Request = request; result.ProviderResponse = providerResponse; var dbOk = false; Logger.LogCategory("SaveBeginPayment"); if (providerResponse.Succeeded || !Config.SaveOnlySuccessfulOperations) { Logger.Log("Start saving in the database"); var args = new { Result = CommandParameter.Output(SqlDbType.VarChar, 50), PaymentId = CommandParameter.Output(SqlDbType.Int), PaymentCode = request.PaymentCode, BankType = request.BankType, Amount = request.Amount, Info = request.Info, Data = request.Data, StepCode = SafeClrConvert.ToString(providerResponse.Code), StepStatus = SafeClrConvert.ToString(providerResponse.Status), StepDate = providerResponse.Date, StepSucceeded = providerResponse.Succeeded, @StepData = "" }; var cmd = _db.GetCommand("usp1_Payment_save_begin_step"); result.DbResult = _db.ExecuteNonQuery(cmd, args); if (result.DbResult.Success) { Logger.Log("DbStatus = " + result.Status); dbOk = result.Status == "Success"; if (dbOk) { result.Status = args.Result.Value.ToString(); result.Data = result.DbResult.Data = (int)args.PaymentId.Value; } else { 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); }