/// <summary>
        /// PreparedPayment contacts the server with the payment request data, and returns a GET URL to that
        /// payment. This is convenient for creating an order and then sending the URL e.g. in an email.
        /// </summary>
        /// <returns>PaymentLink</returns>
        public Uri PreparePayment(String ipAddress)
        {
            IpAddress = ipAddress;
            CalculateRequestValues();
            var    xmlBuilder = new HostedXmlBuilder();
            string xml        = xmlBuilder.GetXml(this);

            var secretWord = CrOrderBuilder.GetConfig()
                             .GetSecretWord(PaymentType.HOSTED, CrOrderBuilder.GetCountryCode());
            var sentMerchantId = CrOrderBuilder.GetConfig()
                                 .GetMerchantId(PaymentType.HOSTED, CrOrderBuilder.GetCountryCode());
            var payPageUrl = CrOrderBuilder.GetConfig()
                             .GetEndPoint(PaymentType.HOSTED);

            var baseUrl = payPageUrl.Replace("/payment", "");

            var hostedRequest = new HostedAdminRequest(xml, secretWord, sentMerchantId, baseUrl);

            var targetAddress = baseUrl + "/rest/preparepayment";

            var message    = HostedAdminRequest.HostedAdminCall(targetAddress, hostedRequest).Message;
            var messageDoc = new XmlDocument();

            messageDoc.LoadXml(message);
            var paymentId = messageDoc.SelectSingleNode("//id").InnerText;

            return(new Uri(baseUrl + "/preparedpayment/" + paymentId));
        }
        /// <summary>
        /// GetPaymentForm
        /// </summary>
        /// <returns>PaymentForm</returns>
        public PaymentForm GetPaymentForm(string htmlFormId = "paymentForm", string htmlFormName = "paymentForm")
        {
            CalculateRequestValues();
            var    xmlBuilder = new HostedXmlBuilder();
            string xml        = xmlBuilder.GetXml(this);

            var form = new PaymentForm(htmlFormId, htmlFormName);

            form.SetXmlMessage(xml);

            form.SetMerchantId(CrOrderBuilder.GetConfig()
                               .GetMerchantId(PaymentType.HOSTED, CrOrderBuilder.GetCountryCode()));
            form.SetSecretWord(CrOrderBuilder.GetConfig().GetSecretWord(PaymentType.HOSTED, CrOrderBuilder.GetCountryCode()));

            form.SetSubmitMessage(CrOrderBuilder.GetCountryCode() != CountryCode.NONE
                                      ? CrOrderBuilder.GetCountryCode()
                                      : CountryCode.SE);

            form.SetPayPageUrl(CrOrderBuilder.GetConfig().GetEndPoint(PaymentType.HOSTED));

            form.SetForm();
            form.SetHtmlFields();

            return(form);
        }
Example #3
0
        public void TestBasicXml()
        {
            _order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig())
                     .SetClientOrderNumber(TestingTool.DefaultTestClientOrderNumber)
                     .SetCountryCode(TestingTool.DefaultTestCountryCode)
                     .SetCurrency(TestingTool.DefaultTestCurrency)
                     .AddCustomerDetails(Item.IndividualCustomer()
                                         .SetNationalIdNumber(TestingTool.DefaultTestIndividualNationalIdNumber))
                     .AddOrderRow(Item.OrderRow()
                                  .SetAmountExVat(4)
                                  .SetVatPercent(25)
                                  .SetQuantity(1));

            var payment = new FakeHostedPayment(_order);

            payment.SetReturnUrl("http://myurl.se")
            .CalculateRequestValues();

            _xml = _xmlBuilder.GetXml(payment);

            const string expectedXml =
                "<?xml version=\"1.0\" encoding=\"utf-8\"?><!--Message generated by Integration package C#-->" +
                "<payment><customerrefno>33</customerrefno><currency>SEK</currency><amount>500</amount>" +
                "<vat>100</vat><lang>en</lang><returnurl>http://myurl.se</returnurl><iscompany>false</iscompany>" +
                "<customer><ssn>194605092222</ssn><country>SE</country></customer><orderrows><row><sku /><name />" +
                "<description /><amount>500</amount><vat>100</vat><quantity>1</quantity></row></orderrows>" +
                "<excludepaymentMethods /><addinvoicefee>false</addinvoicefee></payment>";

            Assert.That(_xml, Is.EqualTo(expectedXml));
        }