private static void CheckSettings(PayflowProSettingsDto settings) { if (string.IsNullOrEmpty(settings.UserId)) throw new BusinessException("Payflow Pro User Id is not specified."); if (string.IsNullOrEmpty(settings.VendorId)) throw new BusinessException("Payflow Pro Vendor Id is not specified."); if (string.IsNullOrEmpty(settings.Password)) throw new BusinessException("Payflow Pro Password Id is not specified."); if (string.IsNullOrEmpty(settings.Partner)) throw new BusinessException("Payflow Pro Partner is not specified."); }
public static Dictionary<string, string> SubmitPaymentRequest(Dictionary<string, string> requestNvps, PaymentProcessorPayFlowProConfiguration settings, UserContext userContext, IEntityContext entityContext) { var payflowProSettings = new PayflowProSettingsDto { Id = settings.Id, Environment = settings.Environment, UserId = settings.UserId, Name = settings.Name, Password = settings.Password, Partner = settings.Partner, VendorId = settings.VendorId }; return SubmitPaymentRequest(requestNvps, payflowProSettings, userContext, entityContext); }
public static Dictionary<string, string> SubmitPaymentRequest(Dictionary<string, string> requestNvps, PayflowProSettingsDto settings, UserContext userContext, IEntityContext entityContext) { CheckSettings(settings); //Add Settings to Request String var nvpRequest = new StringBuilder(); var accountNum = string.Empty; var securityCode = string.Empty; nvpRequest.AppendFormat(CultureInfo.InvariantCulture, "USER={0}&VENDOR={1}&PARTNER={2}&PWD={3}", settings.UserId, settings.VendorId, settings.Partner, settings.Password); foreach (var nvp in requestNvps) { nvpRequest.AppendFormat(CultureInfo.InvariantCulture, "&{0}={1}", nvp.Key, nvp.Value); if (nvp.Key == Constants.AccountNumber) accountNum = nvp.Value; if (nvp.Key == Constants.VerificationCode) securityCode = nvp.Value; } //Create API Request Object var payflowApi = new PayflowNETAPI(); var hostAddress = settings.Environment.ToUpperInvariant() == "SANDBOX" ? "pilot-payflowpro.paypal.com" : "payflowpro.paypal.com"; payflowApi.SetParameters(hostAddress, 443, 45, "", 0, "", "", "enabled", "1", "payflow.log", "10240000", false); //Send request and retrieve response var response = payflowApi.SubmitTransaction(nvpRequest.ToString(), PayflowUtility.RequestId); //Parse Response var responseNvp = new Dictionary<string, string>(); foreach (var pair in response.Split('&')) { var values = pair.Split('='); if (values.Length == 2) responseNvp.Add(values[0], values[1]); } //TODO: edit from original var pnref = responseNvp.ContainsKey("PNREF") ? responseNvp["PNREF"] : string.Empty; var result = responseNvp.ContainsKey("RESULT") ? responseNvp["RESULT"] : string.Empty; CreatePaymentOperationRecord(nvpRequest.ToString(), accountNum, securityCode, result, pnref, settings.Id, userContext, entityContext); return responseNvp; }
private PayflowProSettingsDto QueryData(int id) { var settings = new PayflowProSettingsDto { Id = id }; var detailRequest = new ReadPayflowProSettingsRequest { Settings = settings }; var response = ProcessRequest<ReadPayflowProSettingsResponse>(detailRequest); return response.Settings; }
private PayflowProSettingsDto CaptureForm() { var settings = new PayflowProSettingsDto { Id = _configurationId, Name = GetFieldValue(_viewModel.Fields, _configurationName), UserId = GetFieldValue(_viewModel.Fields, _userId), VendorId = GetFieldValue(_viewModel.Fields, _vendorId), Password = GetFieldValue(_viewModel.Fields, _password), Partner = GetFieldValue(_viewModel.Fields, _partner), RequireCardHolderName = bool.Parse(GetFieldValue(_viewModel.Fields, _requireCardHolderName)), UseAddressVerfication = bool.Parse(GetFieldValue(_viewModel.Fields, _useAddressValidation)), UseCardVerificationCode = bool.Parse(GetFieldValue(_viewModel.Fields, _userCardVerificationCode)), Environment = GetFieldValue(_viewModel.Fields, _environment) }; return settings; }
private List<Field> BuildFields(PayflowProSettingsDto settings, bool newRecord) { var fields = new List<Field>(); if (!newRecord) fields.Add(new Field(_idField, "Payflow Pro Id", FieldTypes.Label, settings.Id)); else fields.Add(new Field(_idField, "Payflow Pro Id", FieldTypes.Hidden, 0)); fields.Add(new Field(_configurationName, "Configuration Name", FieldTypes.Text, settings.Name, true)); fields.Add(new Field(_userId, "User Id", FieldTypes.Text, settings.UserId, true)); fields.Add(new Field(_vendorId, "Vendor Id", FieldTypes.Text, settings.VendorId, true)); fields.Add(new Field(_password, "Password", FieldTypes.Password, settings.Password, true)); fields.Add(new Field(_partner, "Partner", FieldTypes.Text, settings.Partner, true)); fields.Add(new Field(_requireCardHolderName, "Require Card Holder Name", FieldTypes.Checkbox, settings.RequireCardHolderName)); fields.Add(new Field(_useAddressValidation, "Use Address Verfication", FieldTypes.Checkbox, settings.UseAddressVerfication)); fields.Add(new Field(_userCardVerificationCode, "Use Card Verification Code", FieldTypes.Checkbox, settings.UseCardVerificationCode)); var environment = new Field(_environment, "Environment", FieldTypes.Dropdown, settings.Environment, true); environment.Options.Add(new KeyValuePair<object, object>("Sandbox", "Sandbox")); environment.Options.Add(new KeyValuePair<object, object>("Live", "Live")); fields.Add(environment); if (!newRecord) AddTestSettingsField(settings.Id.ToString(), fields); return fields; }