Использование SDK для приложений AndroidOS

Метод getPaymentLink

Метод служит для вызова платёжной формы PayOnline с передачей необходимого набора данных.

  • MerchantId — Идентификатор сайта. Обязательный параметр.
  • OrderId — Идентификатор заказа в системе ТСП. Обязательный параметр.
  • Amount — Конечная сумма заказа. Обязательный параметр.
  • Currency — Валюта заказа. Обязательный параметр.
  • ValidUntil — Срок «оплатить до», временная зона UTC (GMT+0). Необязательный параметр.
  • OrderDescription — Комментарий к заказу, который будет отображаться плательщику под номером заказа на платежных формах и в уведомлении на e-mail. Необязательный параметр.
  • SecurityKey — Открытый ключ, подтверждающий целостность параметров запроса. Обязательный параметр.
  • ReturnUrl — Абсолютный URL адрес, на который будет отправлен плательщик после завершения платежа. Адрес может включать в себя любые параметры. Необязательный параметр.
  • FailUrl — Абсолютный URL адрес, на который будет отправлен плательщик, в случае невозможности выполнить платеж. Адрес может включать в себя любые параметры. Необязательный параметр.
  • CustomData — Вы можете также передать любые другие параметры, такие как идентификатор сессии или пользователя. Эти параметры будут включены в строку запроса адреса обратной связи (CallBack).

Пример кода:

PaymentLinkRequest request = new PaymentLinkRequest();
request.setMerchantId(92574);
request.setOrderId("ORDER-1983F5");
request.setAmount(1590.40);
request.setCurrency("RUB");
request.setValidUntil("2018-02-09 20:00:00");
request.setOrderDescription("Оплата заказа ORDER-1983F5");
request.setPrivateSecurityKey("0039f27b-d7af-423e-99f9-1d40f99e8195");
request.setEmail("customer@domain.com");

PaymentClient client = new PaymentClient();
String paymentFormLink = client.getPaymentLink(request);

webview.loadUrl(paymentFormLink);
Настройки
Если требуется изменить адрес платёжной формы, адрес вызываемого API или язык, следует либо использовать объект с настройками DefaultPaymentSetting, либо создать собственный объект, реализовав интерфейс IPaymentSetting. Объект настроек следует передавать в методы PaymentClient.

Также объект DefaultPaymentSetting имеет несколько перегрузок конструктора.
    Использование настроек для смены хоста:
    
    DefaultPaymentSetting setting = new DefaultPaymentSetting(new URI(“https://secure.payonlinesystem.com/”));
    
    PaymentLinkRequest request = new PaymentLinkRequest();
    request.setMerchantId(92574);
    …
    PaymentClient client = new PaymentClient();
    String paymentFormLink = client.getPaymentLink(request, setting);
    
    Использование настроек для смены языка платёжной формы:
    
    DefaultPaymentSetting setting = new DefaultPaymentSetting(new
    DefaultPaymentSetting setting = new DefaultPaymentSetting("en");
    
    PaymentLinkRequest request = new PaymentLinkRequest();
    request.setMerchantId(92574);
    …
    PaymentClient client = new PaymentClient();
    String paymentFormLink = client.getPaymentLink(request, setting);
    
    Использование настроек для смены хоста и языка формы:
    
    DefaultPaymentSetting setting = new DefaultPaymentSetting(new URI("https://secure.payonlinesystem.com/", "en");
    
    PaymentLinkRequest request = new PaymentLinkRequest();
    request.setMerchantId(92574);
    …
    PaymentClient client = new PaymentClient();
    String paymentFormLink = client.getPaymentLink(request, setting);
    
    Метод Pay
    Метод служит для авторизации карты и блокировки на ней указанной суммы. Передача параметров метода выполняется исключительно методом POST в кодировке UTF-8.

    • MerchantId — Идентификатор сайта. Обязательный параметр.
    • OrderId — Идентификатор заказа в системе ТСП. Обязательный параметр.
    • Amount — Конечная сумма заказа. Обязательный параметр.
    • Currency — Валюта заказа. Обязательный параметр.
    • SecurityKey — Открытый ключ, подтверждающий целостность параметров запроса. Обязательный параметр.
    • Ip — IP-адрес плательщика. Обязательный параметр.
    • Email — E-Mail адрес плательщика. Обязательность оговаривается индивидуально.
    • CardHolderName — Имя плательщика, как отпечатано на карте. Обязательный параметр.
    • CardNumber — Номер карты. Обязательный параметр.
    • CardExpDate — Дата истечения срока действия карты. Обязательный параметр.
    • CardCvv — Проверочный код карты — последние три цифры на обратной стороне после подписи. Обязательный параметр.
    • Country — Код страны плательщика. Обязательность оговаривается индивидуально.
    • City — Город плательщика. Обязательность оговаривается индивидуально.
    • Address — Адрес плательщика. Обязательность оговаривается индивидуально.
    • Zip — Почтовый индекс плательщика. Обязательность оговаривается индивидуально.
    • State — Штат плательщика — только для стран США и Канада. Обязательность оговаривается индивидуально.
    • Phone — Телефон плательщика в международном формате. Обязательность оговаривается индивидуально.
    • Issuer — Наименование банка, выпустившего карту. Обязательность оговаривается индивидуально.
    • OrderDescription — Описание заказа, отображаемое для плательщика на платёжных формах и в e-mail уведомлениях. Необязательный параметр.
    • Любые другие — Любые другие параметры.
      Пример кода:
      
      PayRequest request = new PayRequest();
      request.setMerchantId(92574);
      request.setOrderId("ORDER-1983F5");
      request.setAmount(1590.40);
      request.setCurrency("RUB");
      request.setOrderDescription("Оплата заказа ORDER-1983F5");
      request.setPrivateSecurityKey("0039f27b-d7af-423e-99f9-1d40f99e8195");
      request.setEmail("customer@domain.com");
      request.setIp("127.0.0.1");
      request.setCardHolderName("TEST CH");
      request.setCardNumber("");
      request.setCardExpDate("1222");
      request.setCardCvv("");
      request.setCountry("RU");
      request.setCity("Москва");
      request.setAddress("ул.Тверская, д.29, стр.154");
      request.setIssuer("Альфа-Банк");
      request.setPhone("+71915813515");
      request.setZip("121671");
      request.setState("Москва");
      
      PaymentClient client = new PaymentClient();
      PayResponse response = client.pay(request);
      
      Метод process3Ds
      Метод служит для авторизации карты и блокировки на ней указанной суммы после прохождения плательщиком 3DS авторизации. Метод используется для авторизации платежа по карте, подписанной на 3-D Secure.

      Следует использовать данный метод, если метод pay вернул ошибку 6001 и передал параметры PaReq, ASCUrl и PD.

      Передача параметров метода выполняется исключительно методом POST в кодировке UTF-8.

      Процесс проведения транзакции в этом случае состоит из следующих этапов:

      1. Вызов метода pay и получение кода 6001.
      2. Перенаправление плательщика на сайт эмитента.
      3. Обработка ответа от сайта эмитента.
      4. Вызов метода process3Ds с передачей параметров, полученных от сайта эмитента.
      Вместе с кодом 6001, в ответ на вызов pay, сервер возвращает дополнительные параметры, относящиеся к 3-D Secure: PaReq, ASCUrl и PD. Получив код 6001, необходимо направить плательщика на страницу, адрес которой указан в параметре ASCUrl. Переход на страницу ASCUrl должен быть осуществлен методом POST с передачей параметров PaReq, MD и TermUrl:

      • PaReq — значение параметра PaReq из ответа сервера PayOnline на вызов pay.
      • MD — номер транзакции и значение параметра PD из ответа сервера PayOnline на вызов pay, разделенные точкой с запятой.
      • Для примера выше MD будет равен 1015368;OXf4nrsM4Oi0N7TbFRr QZdbaFQ8M0Dc0WGZUOdBPZ 3C2NXIrKlKObWBLTtzeknQY
      • TermUrl — адрес страницы на сервере мерчанта, которая будет обрабатывать результат авторизации плательщика на сайте банка эмитента.
      После того, как плательщик введет авторизационные данные на странице ASCUrl, он будет перенаправлен на страницу, которую вы укажете в TermUrl.

      На страницу TermUrl будут переданы параметры PARes и MD.

      MD будет содержать то же значение, которое передавалось в запросе к ASCUrl.

      Из значения MD необходимо восстановить параметры TransactionId и PD, которые были получены во время вызова pay, после чего можно вызывать метод process3Ds.

      • MerchantId — Идентификатор сайта. Обязательный параметр.
      • TransactionId — Идентификатор транзакции в системе PayOnline. Обязательный параметр.
      • PARes — Значение, полученное страницей TermUrl от банка эмитента.
      • PD — Значение, полученное при вызове метода pay с кодом ошибки 6001.
      • SecurityKey — Открытый ключ, подтверждающий целостность параметров запроса. Обязательный параметр.
      • CustomData — Любые другие параметры
          Пример кода:
          
          PayResponse responsePay = client.pay(request);
          
          // проверка responsePay.getCode() == 6001 и responsePay.getResult() == "Error"
          ...
          
          Process3DsRequest request3Ds = new Process3DsRequest();
          request3Ds.setMerchantId(92574);
          request3Ds.setTransactionId(responsePay.getId());
          request3Ds.setPares(<значение, полученное от банка-эмитента >);
          request3Ds.setPd(responsePay.getPd());
          request3Ds.setPrivateSecurityKey("0039f27b-d7af-423e-99f9-1d40f99e8195");
          
          PaymentClient client = new PaymentClient();
          Process3DsResponse response = client.process3Ds(request3Ds);