Использование SDK для платформы .Net

Схемы интеграции платежной формы с Интернет-магазином:

Платежная форма находится на стороне PayOnline. Данная схема используется в случае, если у мерчанта отсутствует сертификат PCI DSS.
Код сервера:

    using PayOnline.Sdk.Payments;

...
...

    protected void RedirectToPaymentPage(object sender, EventArgs e)
    {
        //Задаем параметры конфигурации
        var settings = new PaymentGatewaySettings()
            {
                //Указываем локализацию, по умолчанию Россия
                Language = "RU",
                //Указываем идентификатор мерчанта
                MerchantId = 333,
                //Указываем приватный ключ, выданный мерчанту
                ApiKey = "9999B77C-8DD9-4123-B412-9999999F0E7D",
                //Указываем адрес сервера процессинга PayOnline
                GatewayUrl = "https://secure.payonlinesystem.com"
            };
        //Создаем экземпляр библиотеки процессинга
        PaymentGateway client = new PaymentGateway(settings);
        //Создаем запрос для получения ссылки на платежную форму
        PaymentUrlRequest pureq = new PaymentUrlRequest()
            {
                //Номер заказа в Вашем магазине
                OrderId = Request.Form["orderId"],
                //Сумма
                Amount = decimal.Parse(Request.Form["amount"]),
                //Валюта
                Currency = "RUB",

                //Дополнительные опции платежа:
                //Описание
                OrderDdescription = Request.Form["orderdescription"],
                //Дата валидности ссылки
                ValidUntil = DateTime.Parse(Request.Form["validuntil"]),
                //URL страницы возврата, по умолчанию та же страница
                ReturnUrl = "http://yoursite.com/return",
                //URL страницы ошибки
                FailUrl = "http://yoursite.com/error",
                //Email плательщика
                Email = Request.Form["email"],
                //Поле IndustryData - по согласованию с PayOnline
                IndustryData = null,
                //Дополнительные параметры по согласованию с PayOnline
                CustomParameters = new NameValueCollection() {{"some", "data"}}
            };
        //Уходим на страницу оплаты
        Response.Redirect(
            client.GetPaymentUrl(pureq).Url
            );

    }

...
...
Схемы интеграции платежной формы с Интернет-магазином:
Платежная форма находится на стороне интернет-магазина. Данная схема используется в случае, если у мерчанта имеется сертификат PCI DSS.
Код серверного обработчика:

    using PayOnline.Sdk.Payments;

...
...

    protected void Pay(object sender, EventArgs e)
    {
        //Задаем параметры конфигурации
        var settings = new PaymentGatewaySettings
            {
                //Указываем идентификатор мерчанта
                MerchantId = 333,
                //Указываем приватный ключ, выданный мерчанту
                ApiKey = "9999B77C-8DD9-4123-B412-9999999F0E7D",
                //Указываем локализацию, по умолчанию Россия
                Language = "RU",
                //Указываем адрес сервера процессинга PayOnline
                GatewayUrl = "https://secure.payonlinesystem.com"
            };
        //Создаем экземпляр библиотеки процессинга
        var gateway = new PaymentGateway(settings);
        //Создаем запрос для проведения платежа
        var paymentRequest = new PaymentRequest()
            {
                CardNumber = Request.Form["pan"],
                Cvc = Request.Form["cvv2"],
                CardholderName = Request.Form["сardholer_name"],
                OrderId = Request.Form["orderId"],
                Amount = decimal.Parse(Request.Form["amount"]),
                Currency = "RUB",
                CardExpirationYear = int.Parse(Request.Form["valid_thru_year"]),
                CardExpirationMonth = int.Parse(Request.Form["valid_thru_month"]),
                IpAddress = Request.UserHostAddress,
                Email = Request.Form["email"],
                Country = Request.Form["country"],
                City = Request.Form["city"],
                Address = Request.Form["address"],
                State = Request.Form["state"],
                Phone = Request.Form["phone"],
                // Необязательный список дополнительных параметров, связанных с платежом - по согласованию с PayOnline
                CustomParameters = null,
            };
        //Проводим платеж и обрабатываем результат
        var paymentResponse = gateway.ProcessPayment(paymentRequest);
        //Обработка результата платежа
        if (paymentResponse.Result == "ACCEPTED")
        {
            Response.Write("Оплата прошла успешно.");
        }
            //Требуется 3-D Secureаутентификация?
        else if (paymentResponse.ThreeDSecureRequired)
        {
            Response.Write("Требуется 3DS.");
        }
        else
        {
            //Показываем страницу с ошибкой
            Response.Write("Ошибки. " + paymentResponse.ResultMessage);
        }
    }

...
...

Схемы интеграции платежной формы с Интернет-магазином:
Платежная форма на строне интернет-магазина. Данная схема используется в случае, если у мерчанта есть PCI DSS. Использование 3DS. Для реализации работы с 3DS необходимо на стороне сервиса реализовать метод, который будет вызываться при завершении прохождения 3DS.
Код серверного обработчика платежа с использованием 3DS:

    using PayOnline.Sdk.Payments;

...
...

    protected void Page_Load(object sender, EventArgs e)
    {
        //Задаем параметры конфигурации
        var settings = new PaymentGatewaySettings
            {
                //Указываем идентификатор мерчанта
                MerchantId = 333,
                //Указываем приватный ключ, выданный мерчанту
                ApiKey = "9999B77C-8DD9-4123-B412-9999999F0E7D",
                //Указываем локализацию, по умолчанию Россия
                Language = "RU",
                //Указываем адрес сервера процессинга PayOnline
                GatewayUrl = "https://secure.payonlinesystem.com"
            };
        //Создаем экземпляр библиотеки процессинга
        var gateway = new PaymentGateway(settings);
        //Ответ
        PaymentResponse paymentResponse;
        //Попали в обработчик с сайта банка после 3-D Secure аутентификации
        if (gateway.IsThreeDSecureCallback(Request.Params))
        {
            paymentResponse = gateway.CompletePayment(Request.Params);
        }
        else
        {
            //Создаем запрос для проведения платежа
            var paymentRequest = new PaymentRequest()
                {
                    CardNumber = Request.Form["pan"],
                    Cvc = Request.Form["cvv2"],
                    CardholderName = Request.Form["сardholer_name"],
                    OrderId = Request.Form["orderId"],
                    Amount = decimal.Parse(Request.Form["amount"]),
                    Currency = "RUB",
                    CardExpirationYear = int.Parse(Request.Form["valid_thru_year"]),
                    CardExpirationMonth = int.Parse(Request.Form["valid_thru_month"]),
                    IpAddress = Request.UserHostAddress,
                    Email = Request.Form["email"],
                    Country = Request.Form["country"],
                    City = Request.Form["city"],
                    Address = Request.Form["address"],
                    State = Request.Form["state"],
                    Phone = Request.Form["phone"],
                    //Необязательный список дополнительных параметров, связанных с платежом - по согласованию с PayOnline
                    CustomParameters = null,
                };
            //Проводим платеж и обрабатываем результат
            paymentResponse = gateway.ProcessPayment(paymentRequest);
            //Требуется 3-D Secureаутентификация?
            if (paymentResponse.ThreeDSecureRequired)
            {
                //Показываем форму, при сабмите которой плательщик отправляется на сайт банка,
                //откуда вернется в этот же обработчиик.
                var html = gateway.Generate3DSecureHtmlForm(paymentResponse);
                Response.Write(html);
                Response.End();
            }
        }
        //Обработка результата платежа
        if (paymentResponse.Result == "ACCEPTED")
        {
            //Показываем OK-страницу
            Response.Write("OK!");
        }
        else
        {
            //Показываем страницу с ошибкой
            Response.Write("ERRORS " + paymentResponse.ResultMessage);
        }
    }

...
...