コード例 #1
0
 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.");
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        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;
        }