Ejemplo n.º 1
0
        /// <summary>
        /// ValidateOrder
        /// </summary>
        /// <returns>Error message compilation string</returns>
        public string ValidateOrder()
        {
            var errors = "";

            if (string.IsNullOrEmpty(ReturnUrl))
            {
                errors += "MISSING VALUE - Return url is required, SetReturnUrl(...).\n";
            }

            var validator = new HostedOrderValidator();

            //Check if payment method is EU country, PaymentMethod: INVOICE or PAYMENTPLAN
            var payment = this as PaymentMethodPayment;

            if (payment != null &&
                (payment.GetPaymentMethod() == PaymentMethod.INVOICE ||
                 payment.GetPaymentMethod() == PaymentMethod.PAYMENTPLAN))
            {
                switch (CrOrderBuilder.GetCountryCode())
                {
                case CountryCode.NL:
                    errors += new IdentityValidator().ValidateNlIdentity(CrOrderBuilder);
                    break;

                case CountryCode.DE:
                    errors += new IdentityValidator().ValidateDeIdentity(CrOrderBuilder);
                    break;
                }
            }

            errors += validator.Validate(CrOrderBuilder);

            return(errors);
        }
        private ClientAuthInfo GetPasswordBasedAuthorization()
        {
            var auth = new ClientAuthInfo
            {
                Username     = CrOrderBuilder.GetConfig().GetUsername(PayType, CrOrderBuilder.GetCountryCode()),
                Password     = CrOrderBuilder.GetConfig().GetPassword(PayType, CrOrderBuilder.GetCountryCode()),
                ClientNumber = CrOrderBuilder.GetConfig().GetClientNumber(PayType, CrOrderBuilder.GetCountryCode())
            };

            return(auth);
        }
        private void SerializeUnknownCustomer(CreateOrderBuilder order, XmlWriter xmlw)
        {
            Action <string, string> doWriteSimple = (name, value) => WriteSimpleElement(name, value, xmlw);

            xmlw.WriteStartElement("customer");
            doWriteSimple("unknowncustomer", "true");
            doWriteSimple("country", order.GetCountryCode().ToString().ToUpper());
            xmlw.WriteEndElement();
        }
Ejemplo n.º 4
0
        public override string Validate(CreateOrderBuilder order)
        {
            if (order.GetCustomerIdentity() == null)
            {
                Errors += "MISSING VALUE - CustomerIdentity must be set.\n";
            }

            var identityValidator = new IdentityValidator();

            switch (order.GetCountryCode())
            {
            case CountryCode.NONE:
                Errors += "MISSING VALUE - CountryCode is required. Use SetCountryCode().\n";
                break;

            case CountryCode.FI:
            case CountryCode.DK:
            case CountryCode.NO:
            case CountryCode.SE:
                Errors += identityValidator.ValidateNordicIdentity(order);
                break;

            case CountryCode.DE:
                Errors += identityValidator.ValidateDeIdentity(order);
                break;

            case CountryCode.NL:
                Errors += identityValidator.ValidateNlIdentity(order);
                break;

            default:
                Errors += "NOT VALID - Given countrycode does not exist in our system.\n";
                break;
            }

            ValidateRequiredFieldsForOrder(order);
            ValidateOrderRow(order);
            if (order.GetOrderDate() == DateTime.MinValue)
            {
                Errors += "MISSING VALUE - OrderDate is required. Use SetOrderDate().\n";
            }

            if (!String.IsNullOrEmpty(order.GetPeppolId()))
            {
                Errors += ValidatePeppolId(order);
            }

            return(Errors);
        }
Ejemplo n.º 5
0
        public override string Validate(CreateOrderBuilder order)
        {
            Errors = "";

            if (order.GetCountryCode() == CountryCode.NONE)
            {
                Errors += "MISSING VALUE - CountryCode is required. Use SetCountryCode(...).\n";
            }
            ValidateClientOrderNumber(order);
            ValidateCurrency(order);
            ValidateRequiredFieldsForOrder(order);
            ValidateOrderRow(order);

            return(Errors);
        }
        public override string Validate(CreateOrderBuilder order)
        {
            Errors = "";

            if (order.GetCountryCode() == CountryCode.NONE)
            {
                Errors += "MISSING VALUE - CountryCode is required. Use SetCountryCode(...).\n";
            }
            ValidateClientOrderNumber(order);
            ValidateCurrency(order);
            ValidateRequiredFieldsForOrder(order);
            ValidateOrderRow(order);

            return Errors;
        }
        public override string Validate(CreateOrderBuilder order)
        {
            if (order.GetCustomerIdentity() == null)
            {
                Errors += "MISSING VALUE - CustomerIdentity must be set.\n";
            }

            var identityValidator = new IdentityValidator();

            switch (order.GetCountryCode())
            {
                case CountryCode.NONE:
                    Errors += "MISSING VALUE - CountryCode is required. Use SetCountryCode().\n";
                    break;
                case CountryCode.FI:
                case CountryCode.DK:
                case CountryCode.NO:
                case CountryCode.SE:
                    Errors += identityValidator.ValidateNordicIdentity(order);
                    break;
                case CountryCode.DE:
                    Errors += identityValidator.ValidateDeIdentity(order);
                    break;
                case CountryCode.NL:
                    Errors += identityValidator.ValidateNlIdentity(order);
                    break;
                default:
                    Errors += "NOT VALID - Given countrycode does not exist in our system.\n";
                    break;
            }

            ValidateRequiredFieldsForOrder(order);
            ValidateOrderRow(order);
            if (order.GetOrderDate() == DateTime.MinValue)
            {
                Errors += "MISSING VALUE - OrderDate is required. Use SetOrderDate().\n";
            }

            return Errors;
        }
Ejemplo n.º 8
0
        private void SerializeCustomer(CreateOrderBuilder order, XmlWriter xmlw)
        {
            if (order.GetCustomerIdentity() == null)
            {
                return;
            }

            CustomerIdentity        customer;
            Action <string, string> doWriteSimple = (name, value) => WriteSimpleElement(name, value, xmlw);

            if (order.GetIsCompanyIdentity())
            {
                customer = order.GetCompanyCustomer();
            }
            else
            {
                customer = order.GetIndividualCustomer();
            }

            xmlw.WriteStartElement("customer");

            if (customer.NationalIdNumber != null) //nordic country individual customer type
            {
                doWriteSimple("ssn", customer.NationalIdNumber);
            }
            else if (!order.GetIsCompanyIdentity()) //euro country individual
            {
                doWriteSimple("ssn", customer.IndividualIdentity.BirthDate);
            }
            else if (order.GetIsCompanyIdentity() && order.GetCountryCode() != CountryCode.SE)
            //euro country, Company customer and nationalId not set
            {
                doWriteSimple("ssn", customer.CompanyIdentity.CompanyVatNumber);
            }

            //Individual customer
            if (!order.GetIsCompanyIdentity())
            {
                var individualIdentity = customer.IndividualIdentity;
                if (individualIdentity != null)
                {
                    doWriteSimple("firstname", individualIdentity.FirstName);
                    doWriteSimple("lastname", individualIdentity.LastName);
                    doWriteSimple("initials", individualIdentity.Initials);
                }
            }
            else //Company customer
            {
                doWriteSimple("firstname", customer.FullName);
            }

            //Address
            doWriteSimple("phone", customer.PhoneNumber);
            doWriteSimple("email", customer.Email);
            doWriteSimple("address", customer.Street);
            doWriteSimple("housenumber", customer.HouseNumber);
            doWriteSimple("address2", customer.CoAddress);
            doWriteSimple("zip", customer.ZipCode);
            doWriteSimple("city", customer.Locality);

            if (order.GetCountryCode() != CountryCode.NONE)
            {
                doWriteSimple("country", order.GetCountryCode().ToString().ToUpper());
            }

            xmlw.WriteEndElement();

            doWriteSimple("ipaddress",
                          order.GetIsCompanyIdentity()
                              ? order.GetCompanyCustomer().GetIpAddress()
                              : order.GetIndividualCustomer().GetIpAddress());
        }
        public void TestBuildOrderWithCountryCode()
        {
            _order.SetCountryCode(TestingTool.DefaultTestCountryCode);

            Assert.That(_order.GetCountryCode(), Is.EqualTo(CountryCode.SE));
        }
        private void SerializeCustomer(CreateOrderBuilder order, XmlWriter xmlw)
        {
            if (order.GetCustomerIdentity() == null)
            {
                return;
            }

            CustomerIdentity customer;
            Action<string, string> doWriteSimple = (name, value) => WriteSimpleElement(name, value, xmlw);

            if (order.GetIsCompanyIdentity())
            {
                customer = order.GetCompanyCustomer();
            }
            else
            {
                customer = order.GetIndividualCustomer();
            }

            xmlw.WriteStartElement("customer");

            if (customer.NationalIdNumber != null) //nordic country individual customer type
            {
                doWriteSimple("ssn", customer.NationalIdNumber);
            }
            else if (!order.GetIsCompanyIdentity()) //euro country individual
            {
                doWriteSimple("ssn", customer.IndividualIdentity.BirthDate);
            }
            else if (order.GetIsCompanyIdentity() && order.GetCountryCode() != CountryCode.SE)
                //euro country, Company customer and nationalId not set
            {
                doWriteSimple("ssn", customer.CompanyIdentity.CompanyVatNumber);
            }

            //Individual customer
            if (!order.GetIsCompanyIdentity())
            {
                var individualIdentity = customer.IndividualIdentity;
                if (individualIdentity != null)
                {
                    doWriteSimple("firstname", individualIdentity.FirstName);
                    doWriteSimple("lastname", individualIdentity.LastName);
                    doWriteSimple("initials", individualIdentity.Initials);
                }
            }
            else //Company customer
            {
                doWriteSimple("firstname", customer.FullName);
            }

            //Address
            doWriteSimple("phone", customer.PhoneNumber);
            doWriteSimple("email", customer.Email);
            doWriteSimple("address", customer.Street);
            doWriteSimple("housenumber", customer.HouseNumber);
            doWriteSimple("address2", customer.CoAddress);
            doWriteSimple("zip", customer.ZipCode);
            doWriteSimple("city", customer.Locality);

            if (order.GetCountryCode() != CountryCode.NONE)
            {
                doWriteSimple("country", order.GetCountryCode().ToString().ToUpper());
            }

            xmlw.WriteEndElement();

            doWriteSimple("ipaddress",
                          order.GetIsCompanyIdentity()
                              ? order.GetCompanyCustomer().GetIpAddress()
                              : order.GetIndividualCustomer().GetIpAddress());
        }
Ejemplo n.º 11
0
        /*
         * <currency>SEK</currency><amount>500</amount><vat>100</vat><customerrefno>test_1429280602870</customerrefno><returnurl>https://dev.sveaekonomi.se/webpay-admin/admin/merchantresponsetest.xhtml</returnurl><paymentmethod>DBNORDEASE</paymentmethod><simulatorcode>0</simulatorcode>
         */
        private static Tuple <string, string> PostRequest(PaymentForm form)
        {
            CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig());

            form.SetMacSha512(
                HashUtil.CreateHash(form.GetXmlMessageBase64() +
                                    order.GetConfig().GetSecretWord(PaymentType.HOSTED, order.GetCountryCode())));

            string data = "mac=" + HttpUtility.UrlEncode(form.GetMacSha512()) +
                          "&message=" + HttpUtility.UrlEncode(form.GetXmlMessageBase64()) +
                          "&merchantid=" + HttpUtility.UrlEncode(form.GetMerchantId());

            byte[] formData = Encoding.UTF8.GetBytes(data);

            var request = WebRequest.Create(order.GetConfig().GetEndPoint(PaymentType.HOSTED)) as HttpWebRequest;

            request.Method        = "POST";
            request.ContentType   = "application/x-www-form-urlencoded";
            request.ContentLength = formData.Length;

            using (Stream post = request.GetRequestStream())
            {
                post.Write(formData, 0, formData.Length);
            }

            string result;
            string statusCode;

            using (var response = request.GetResponse() as HttpWebResponse)
            {
                using (var reader = new StreamReader(response.GetResponseStream()))
                {
                    result = reader.ReadToEnd();
                }

                statusCode = response.StatusCode.ToString();
            }

            return(new Tuple <string, string>(statusCode, result));
        }