Документация

Платежный виджет
Android SDK
iOS SDK
1. Платежный виджет
1.1 Подключение
Платежный виджет подключение скриптом:
1.2 Вызов платежного виджета
Существует два метода вызова платежного виджета: set и open. При использовании метода open виджет будет отображаться по центру экрана, тогда как при методе set добавление виджета будет произведен в тот элемент, который передается в параметре parent_id. Ниже приведен пример для метода set:
PaymoFrame.set({
   parent_id: "id элемента в html, в который будет вставлен iframe":str,
   api_key: api_key:str,
   tx_id: tx_id:str,
   description: description:str,
   amount: amount, // в копейках
   signature: signature:str, // подпись (hash_sum)
   success_redirect: "http://yoursite.ru/success_redirect",
   fail_redirect: "http://yoursite.ru/success_redirect",
   auto_return: 1:number
   rebill: {
       amount: 100, // в рублях
       period: "":str,
       end: "":str
   },
   extra:{
       some_key: some_value,
       some_key2: some_value2
   }
   phone: "79998887766":str,
   email: "email@mail.com":str,
   send_post_message: true:boolean
   version: "2.0.0":str
})
1.3 Пример вызова платежного виджета
<script src="https://paymo.ru/paymentgate/iframe/checkout.js"></script>
<script>
    PaymoFrame.set({
        parent_id: "iframe_parent",
        api_key: "e5ebc0d4-f90b-409b-874c-c729987001da",
        tx_id: "123",
        description: "Тестовый платеж",
        amount: 1000,
        signature: "",
        success_redirect: "http://yoursite.ru/success_redirect",
        fail_redirect: "http://yoursite.ru/success_redirect",
        rebill: {},
        extra: {},
        version: "2.0.0"
    })
</script>

<div id="iframe_parent">
</div>
1.4 Описание параметров
Название
Обязательно
Описание
parent_id
Да
Элемент, в который будет произведено добавление iframe.
api_key
Да
Ключ терминала, через который проводится подключение к серверу.
tx_id
Да
Номер транзакции в магазине. Может быть любым набором символов. Должен быть уникален в пределах выбранного терминала.
description
Нет
Назначение (описание) платежа.
amount
Да
Сумма платежа в копейках.
signature
Да
Формирование подписи: sha256("api_key"+"tx_id"+"amount"+"secret_key").
Пример на php: $signature = hash('sha256',$api_key.$tx_id.$amount.$secret_key);
secret_key задается в Личном кабинете, раздел Магазины=>Настройки=>Технические настройки
success_redirect
Нет
URL для возврата при успешном платеже.
fail_redirect
Нет
URL для возврата при неуспешном платеже (fail и success URL могут быть одинаковыми).
auto_return
Нет
Автоматический редирект на success_redirect (или fail_redirect) после оплаты. Задается в секундах, например при: auto_return: 1, редирект произойдет через 1 секунду.
rebill
Нет
При использовании рекуррентных платежей (см. Рекурректные платежи).
extra
Нет
Дополнительные параметры платежа (см. Дополнительные параметры платежа).
send_post_message
Нет
Метод postMessage() отправляет сообщение от iframe на сайт мерчанта. При успешном платеже отправляется сообщение "paymo-payment-success", а при неуспешном платеже отправляется сообщение "paymo-payment-unsuccess"
version
Нет
Версия платежного виджета. Доступны две версии: 1.0.0 и 2.0.0
Примечание: Параметра parent_id используется только в методе set.
2. Платежная Страница UNIFORM
2.1 Описание параметров
Название
Обязательно
Описание
api_key
Да
Ключ терминала, через который проводится подключение к серверу.
tx_id
Да
Номер транзакции в магазине. Может быть любым набором символов. Должен быть уникален в пределах выбранного терминала.
description
Нет
Назначение (описание) платежа.
amount
Да
Сумма платежа в копейках.
signature
Да
Формирование подписи: sha256("api_key"+"tx_id"+"amount"+"secret_key").
Пример на php: $signature = hash('sha256',$api_key.$tx_id.$amount.$secret_key);
secret_key задается в Личном кабинете, раздел Магазины=>Настройки=>Технические настройки
success_redirect
Нет
URL для возврата при успешном платеже.
fail_redirect
Нет
URL для возврата при неуспешном платеже (fail и success URL могут быть одинаковыми).
email
Нет
Email пользователя.
phone
Нет
Номер телефона пользователя.
extra_<key>
Нет
Дополнительные параметры платежа. В форме может быть несколько дополнительных параметров платежа, которые передаются в виде: "extra_"+"название параметра".
2.2 Пример кода для вставки
 <div>
     <form action="https://checkout.paymo.ru/uniform/" method="POST">
         <input type="hidden" name="api_key" value="e5ebc0d4-f90b-409b-874c-c729987001da">
         <input type="hidden" name="amount" value="10000">
         <input type="hidden" name="tx_id" value="2484984984984">
         <input type="hidden" name="description" value="Назначение (описание) платежа">
         <input type="hidden" name="signature" value="">
         <input type="hidden" name="email" value="client@e-mail.ru">
         <input type="hidden" name="phone" value="79997778899">
         <input type="hidden" name="success_redirect" value="http://yoursite.com/success">
         <input type="hidden" name="fail_redirect" value="http://yoursite.com/fail">
         <input type="hidden" name="extra_key1" value="value1">
         <input type="hidden" name="extra_key2" value="value2">
         <input type="submit" value="Оплатить">
     </form>
 </div>
3. Метод получения статуса операции
3.1 Получение статуса платежа
POST (JSON)
https://paymo.ru/rest/merchant/transaction/state/
Метод используется для получения статуса конкретной операции.
Параметры запроса
Название
Обязательно
Описание
api_key
Да
Ключ терминала, через который проводится подключение к серверу.
transaction
Нет
Идентификатор транзакции.
merchant_order
Нет
Идентификатор заказа мерчанта. Для поиска по этому параметру поле merchant_order необходимо передать при совершении платежа в custom_data/extra
Параметры ответа
Название
Обязательно
Описание
result
Да
Результат выполнения операции success / fail.
message
Да
Сообщение с информацией о результате выполнения операции.
Пример запроса:
{"api_key": "3fd47e05-8e7n-4e5-78-8fbb-9af08926d995", "transaction": "198"}
Пример ответа:
{"result": "success", "message": "Transaction find", "status": "approved", "sum": "10.00"}
3.2 Возможные статусы
Название
Описание
PROCESSING
Платеж в обработке.
DEPOSITED
Транзакция совершена успешно.
DECLINED
Транзакция неуспешна.
WAIT_EXTERNAL
Ожидается подтверждение от внешней платежной системы.
REFUNDED
Осуществлен полный возврат денежных средств.
APPROVED
Денежные средства захолдированы, ожидается подтверждение операции.
PART_DEPOSITED
Произведено частичное списание захолдированных средств.
PART_REFUNDED
Произведен частичный возврат денежных средств.
4. Выставление счетов по SMS и E-mail
4.1 Создание счетов
POST (JSON)
https://paymo.ru/rest/merchant/invoice/
Параметры запроса
Название
Обязательно
Описание
api_key
Да
Ключ терминала, через который проводится подключение к серверу.
contact
Нет
Номер телефона пользователя (79998887766).
contact_email
Нет
Email пользователя.
price
Да
Сумма счета.
description
Да
Описание счета.
order
Да
Номер счета в системе магазина.
life_time
Нет
Дата окончания действия счета, после чего он будет отменен.
Формат даты: %d.%m.%Y %H:%M. Временная зона: Москва.
Например: 15.10.2015 10:45.
departure_type
Нет
Тип уведомления покупателя. Сущестует четыре типа уведомления: url, sms-email, sms или email. По умолчанию тип, в завивимости от переданных данных, определяется автоматически.
extra
Нет
Дополнительные параметры платежа (см. Дополнительные параметры платежа).
Примечание: contact или contact_email должны быть обязательно заполнены, если мы хотите послать уведомление на телефон или email. Могут быть указаны сразу оба, тогда уведомление будет отправлено на телефон и на email пользователя. В случае если параметр departure_type равняется url, то в ответе вы получите в параметре url ссылку на счет.
Примечание: В параметр extra можно добавить поля success_redirect и fail_redirect. Они определяют на какие URL будут ссылаться кнопки возвращения в случае успешной и неуспешной оплаты соответственно.
Параметры ответа
Название
Обязательно
Описание
result
Да
Результат выполнения операции success / fail.
message
Нет
Сообщение с информацией о результате выполнения операции.
url
Нет
Ссылка на счет.
Пример запроса:
{"api_key": "26785c66-10a0-4485-ab67-7e1558cbfdc6", "contact": "79516035589", "price": "1.05", "description": "Тестовый счет", "order": "22"}
Пример ответа:
{"result": "success", "message": "Счет отправлен по указанным данным"}
4.2 Получение статуса счета
POST (JSON)
https://paymo.ru/rest/merchant/invoice/status/
Параметры запроса POST:
Название
Обязательно
Описание
api_key
Да
Ключ терминала, через который проводится подключение к серверу.
order
Да
Номер счета в системе магазина.
Параметры ответа:
Название
Обязательно
Описание
result
Да
Результат выполнения операции success / fail.
message
Нет
Сообщение с информацией о результате выполнения операции.
Пример запроса:
{"api_key": "26785c66-10a0-4485-ab67-7e1558cbfdc6", "order": "22"}
Пример ответа:
{"result": "success", "message": "Счет найден", "status": "processing"}
4.3 Уведомление об оплате счета
Параметры запроса POST (JSON):
Название
Обязательно
Описание
transaction
Да
Номер создаваемого счета.
user
Нет
Номер телефона пользователя, который проводит оплату. В случае если проводится оплата без регистрации, данный параметр отсутствует.
signature
Нет
sha256 хэш. Кодируется строка transaction:status:api_key.
status
Да
Cтатус счета (deposited – оплачен; approved - оплачен, ожидает подтверждения).
payment_id
Да
Номер платежа в нашей системе.
payment_time
Да
Время проведения платежа.
Примечание: api_key – ключ терминала, через который создавался счет.
Параметры ответа магазина(JSON):
Название
Обязательно
Описание
result
Да
Результат получения уведомления. Значения: ”true”/”false”. В случае значения false сервисом PAYMO будет выполнено еще 5 попыток уведомления сервера предприятия через 5, 10, 20, 40, 60 минут соответственно.
message
Нет
Сообщение с информацией об ошибке при проверке счета. Добавляется к общему сообщению об ошибке.
Пример запроса:
{"transaction": "26785c66-10a0-4485-ab67-7e1558cbfdc6", "status": "deposited", "signature": "oi3rf3ijfioejfoeirjf"}
Пример ответа при успешном выполнении проверки:
{"result": "true"}
Пример ответа при ошибке при проверке:
{"result": "false", "message": "Заказ не найден"}
5. Данные для тестирования
5.1 Тестовые карты
Без 3D secure
5555 5555 5555 5599

expired: 10/21

cvc: 123
С 3D secure
4111 1111 1111 1111

expired: 10/21

cvc: 123

3d Secure: 12345678
Для тестовой оплаты по привязанной карте Sms Code: 1111
6. Рекуррентные платежи
6.1 Описание параметров
При инициализации iframe на сайте мерчанта необходимо добавить следующие параметры:
Название
Обязательно
Описание
amount
Да
Сумма в рублях (например 15 или 15.60).
period
Да
Периодичность платежа в формате <кол-во месяцев>.<кол-во дней> (например, 3.0 - каждые 3 месяца, 1.0 - каждый месяц, 0.40 - каждые 40 дней).
end
Да
Дата окончания ребиллов в формате DD-MM-YYYY (например, 20-12-2015 - после 20-го декабря 2015 ребиллы прекращаются).
start_at
Да
Дата первого рекуррентного платежа в формате DD-MM-YYYY (например, 20-10-2016 - 20-е октября 2016); время списания берётся от времени первоначального платежа.
Пример использования:
rebill:{ "amount": 100, "period": "1.0", "end": "31-12-2016", "start_at": "20-10-2016"}
Примечание: Если дата следующего платежа выходит за пределы месяца (например, на 30 февраля), то ребилл проводится в последний день месяца (28/29 февраля).
6.2 Отмена платежа
Мерчант (продавец) имеет возможность "вручную" остановить выполнение периодических платежей посредством вызова соответствующего API-метода:
POST (JSON)
https://paymo.ru/rest/merchant/transaction/rebill/stop/
Название
Обязательно
Описание
api_key
Да
Ключ терминала, через который проводится подключение к серверу.
tx_id
Да
Идентификатор транзакции.
amount
Да
Сумма первого платежа в копейках.
signature
Да
Формирование подписи: sha256("sum"+"&"+"secret_key").
Пример запроса:
{"api_key": "3fd47e05-8e7n-4e5-78-8fbb-9af08926d995", "tx_id": "198", "amount": 100, "signature": "oi3rf3ijfioejfoeirjf"}
Пример ответа:
{"result": true, "message": "Rebill is stopped"}
6.3 Возобновление платежа
Мерчант (продавец) имеет возможность "вручную" возобновить выполнение периодических платежей, которые ранее были остановлены, но дата окончания которых еще не истекла, посредством вызова соответствующего API-метода:
POST (JSON)
https://paymo.ru/rest/merchant/transaction/rebill/resume/
Название
Обязательно
Описание
api_key
Да
Ключ терминала, через который проводится подключение к серверу.
tx_id
Да
Идентификатор транзакции.
amount
Да
Сумма первого платежа в копейках.
signature
Да
Формирование подписи: md5("sum"+"&"+"secret_key").
Пример запроса:
{"api_key": "3fd47e05-8e7n-4e5-78-8fbb-9af08926d995", "tx_id": "198", "amount": 100, "signature": "oi3rf3ijfioejfoeirjf"}
Пример ответа:
{"result": true, "message": "Rebill is resumed"}
6.4 Изменение параметров платежа
Мерчант (продавец) имеет возможность "вручную" изменить сумму и/или периодичность платежей посредством вызова соответствующего API-метода:
POST (JSON)
https://paymo.ru/rest/merchant/transaction/rebill/change/
Название
Обязательно
Описание
api_key
Да
Ключ терминала, через который проводится подключение к серверу.
tx_id
Да
Идентификатор транзакции.
amount
Да
Сумма первого платежа в копейках.
rebill_amount
Да
Новая сумма очередного платежа в копейках.
rebill_period
Да
Периодичность платежа.
signature
Да
Формирование подписи: sha256("sum"+"&"+"secret_key"+"&"+"rebill_amount"+"&"+"rebill_period").
Пример запроса:
{"api_key": "3fd47e05-8e7n-4e5-78-8fbb-9af08926d995", "tx_id": "198", "amount": 100, "rebill_amount": 1000, "rebill_period": "2.0", "signature": "oi3rf3ijfioejfoeirjf"}
Пример ответа:
{"result": true, "message": "Rebill is changed"}
7. Дополнительные параметры платежа (Extra)
7.1 Пример использования
extra: { “my_custom_param_1”: “значение string”, “my_custom_param_2”: value }
Параметры extra будут включены в start и finish callbacks
7.2 Пример использования для ФЗ-54
Также Extra используется для отправки чеков по ФЗ-54.
extra: {
    'receipt': {
        'taxationSystem': 0,
        'positions': [
                { 'tax': 1, 
                  'name': 'Название покупки', 
                  'amount': 40207.44, 
                  'quantity': 1, 
                  'paymentMethod': 4, 
                  'paymentSubject': 1 
                }
            ],
        'contact': '+79067496474'
    }
}
                    
Подробнее смотрите в п.9 Отправка чеков по ФЗ-54
8. Start и Finish CallBacks
8.1 Start callback вызывается перед созданием и оплатой транзакции.
Параметры запроса POST (JSON):
Название
Обязательно
Описание
tx_id
Да
Номер транзакции, которую передает магазин.
user
Нет
Номер телефона пользователя, который проводит оплату. В случае если проводится оплата без регистрации, данный параметр отсутствует.
signature
Нет
Формирование подписи:
sha256("tx_id"+"amount"+"secret_key")
secret_key – ключ контрольной суммы, который задается в личном кабинете.
test_payment
Нет
Данный параметр передается, когда торговая точка находится в тестовом режиме.
extra
Да
Дополнительные параметры платежа (см. Дополнительные параметры платежа).
Параметры ответа магазина (JSON):
Название
Обязательно
Описание
result
Да
Результат выполнения операции “true” / “false”.
Пример запроса:
{"tx_id": "26785c66-10a0-4485-ab67-7e1558cbfdc6", "user":
"79999999999", "signature": "oi3rf3ijfioejfoeirjf", "test_payment": true, "extra": {}}
Пример ответа:
{"result": true}
8.2 Finish callback вызывается после того, как транзакция будет проведена. После того как PAYMO получит конечный статус по транзакции, выполняется запрос на callback URL, указанный в настройках магазина.
Параметры запроса POST (JSON):
Название
Обязательно
Описание
tx_id
Да
Номер транзакции, которую передает магазин.
user
Нет
Номер телефона пользователя, который проводит оплату. В случае если проводится оплата без регистрации, данный параметр отсутствует.
signature
Нет
Формирование подписи:
sha256("tx_id"+"amount"+"secret_key")
secret_key – ключ контрольной суммы, который задается в личном кабинете.
status
Да
Cтатус платежа. Подробное описание статусов в разделе 3.2 Возможные статусы.
error_code
Нет
Код ошибки платежа (при status:"declined").
base_amount
Да
Сумма платежа в копейках.
result
Да
Результат выполнения операции “true” / “false”.
is_rebill
Нет
Данный параметр передается, когда проводится автоплатеж.
pan_mask
Нет
Маска карты, с которой была произведена оплата
payment_id
Да
Номер платежа в нашей системе.
payment_time
Да
Время проведения платежа.
test_payment
Нет
Данный параметр передается, когда торговая точка находится в тестовом режиме.
extra
Да
Дополнительные параметры платежа (см. Дополнительные параметры платежа).
Примечание: signature обязателен только при установленном ключе ЭЦП для выбранного вебсайта.
Параметры ответа магазина (JSON):
Название
Обязательно
Описание
result
Да
Результат выполнения операции true / false.
Пример запроса:
{'user': '79999999999', 'signature': 'oi3rf3ijfioejfoeirjf', 'result': true, 'payment_id': '666666', 'tx_id': '26785c66-10a0-4485-ab67-7e1558cbfdc6', 'payment_time': '19.09.2016 16:15:54', 'pan_mask': '411111**1111', 'is_rebill': true, 'extra':{}}
Пример ответа:
{"result": true}
9. Отправка чеков по ФЗ-54
9.1 Описание параметров, которые необходимо передавать в Extra
extra: {
    'receipt': {
        'taxationSystem': 0,
        'positions': [
                { 'tax': 1, 
                  'name': 'Название покупки', 
                  'amount': 40207.44, 
                  'quantity': 1, 
                  'paymentMethod': 4, 
                  'paymentSubject': 1 
                }
            ],
        'contact': '+79067496474'
    }
}
                    
Название
Описание
paymentMethod
Признак способа расчета. Если параметр не указывать, по умолчанию orange проставляет 4.
1 - Предоплата 100%
2 - Частичная предоплата
3 - Аванс
4 - Полный расчет
5 - Частичный расчет и кредит
6 - Передача в кредит
7 - оплата кредита
paymentSubject
Признак предмета расчета. Если параметр не указывать, по умолчанию orange проставляет 1.
1 – Товар
2 – Подакцизный товар
3 – Работа
4 – Услуга
5 – Ставка азартной игры
6 – Выигрыш азартной игры
7 – Лотерейный билет
8 – Выигрыш лотереи
9 – Предоставление РИД
10 – Платеж
11 – Агентское вознаграждение
12 – Составной предмет расчета
13 – Иной предмет расчета
name
Название торговой позиции, длина ограничена 128 символами
contact
Email или телефон для получения чека
tax
1 - ставка НДС 18%,
2 - ставка НДС 10%,
3 - ставка НДС расч. 18/118,
4 - ставка НДС расч. 10/110,
5 - ставка НДС 0%,
6 - НДС не облагается
taxationSystem
0 – Общая, ОСН,
1 – Упрощенная доход, УСН доход,
2 – Упрощенная доход минус расход, УСН доход - расход,
3 – Единый налог на вмененный доход, ЕНВД,
4 – Единый сельскохозяйственный налог, ЕСН,
5 – Патентная система налогообложения, Патент
9.2 Пример Extra
extra: {
    'commission': '3.2',
    'sumNet': '484',
    'commissionAmount': '16.0',
    'receipt': {
        'taxationSystem': 0,
        'positions': [
                { 'tax': 1, 
                  'name': 'Название покупки', 
                  'amount': 40207.44, 
                  'quantity': 1, 
                  'paymentMethod': 4, 
                  'paymentSubject': 1 
                }
            ],
        'contact': '+79067496474'
    }
}
                    
Android SDK
1. Описание
SDK предназначено для проведения платежей через процессинговый центр PAYMO в мобильном приложении.
Проведение платежа состоит из следующих шагов:
  • Ввод номера мобильного телефона
  • Ввод данных новой карты или выбор существующей
  • Соглашение с условиями оферты
  • Подтверждение платежа
В зависимости от типа карты будет выполняться один из следующих шагов:
  • Если пользователь ввёл новую карту с поддержкой 3D Secure, то внутри приложения открывается веб-страница банка-эмитента для ввода одноразового 3D Secure кода.
  • Если пользователь ввёл новую карту без поддержки 3D Secure, то дополнительная проверка не требуется.
  • Если пользователь выбрал привязанную карту, то ему предлагается ввести одноразовый смс код, высланный через PAYMO.
  • Подтверждение платежа
  • При успешной оплате пользователю предлагается ввести адрес почтового ящика для получения квитанции платежа.
  • При неуспешной оплате плательщику нужно пройти все шаги заново
2. Технические детали
Минимальная поддерживаемая версия Android - 14. Также в версиях Android >= 21 присутствуют дополнительные material анимации. SDK представляет из себя .aar библиотеку со следующими компонентами:
  • Основная activity;
  • Activity c webview для обработки 3ds;
  • Broadcast recevier для парсинга SMS;
  • Broadcast recevier для слежения за состоянием
3. Детальное описание компонентов
3.1 Основная activity
Основной экран. Здесь отображается вся информация о платеже и вводятся пользовательские данные.
  • Название продавца, приходит в ответе от сервера, зависит от api key.
  • Название продукта, передается в sdk из основного приложения.
  • Сумма платежа без комиссии, передается в sdk из основного приложения.
  • Сумма платежа с учетом комиссии, приходит ответом от сервера PAYMO.
  • Мобильный номер пользователя. Может передан заранее из основного приложения либо и указан пользователем вручную. После ввода 11 символов происходит запрос на получение ранее привязанных карт.
  • ViewPager со всеми картами пользователя. Первая карточка в списке всегда пустая и может быть использована как для оплаты по новой карте, так и по уже существующей. Всю информацию в первой карте пользователю необходимо вводить вручную, у привязанных карт вся информация уже присутствует.
  • Номер карты. Минимальная длина 16 символов, разделители ставятся автоматически по мере ввода. Если платежный терминал поддерживает комиссию и для каждой карты комиссия может отличаться, то после ввода первых 6 символов на сервер отправится запрос на получение комиссии.
  • Месяц окончания срока действия карты.
  • Год окончания срока действия карты.
  • CVC / CVV код карты.
  • Индикатор текущего положения среди списка карт и их общее количество.
  • Привязать ли карту к мобильному номеру. Доступность данной опции зависит от платежного терминала.
  • Согласие с офертой и ссылка на нее.
  • Кнопка проведения платежа. Чтобы провести платеж, необходимо ввести корректные данные и согласиться с офертой.
3.2 Activity c webview для обработки 3ds
Если карта еще не привязана и поддерживает 3ds, после нажатия на кнопку оплаты пользователь попадает в activity с webview, внутри которой происходит redirect на страницу для ввода 3ds кода подтверждения. В результате обработки запроса на проверку 3ds может быть получено сообщение об ошибке или успехе проведения операции. Далее независимо от результата Sdk завершит свою работу, закрыв все activity.
3.3 Broadcast recevier для парсинга SMS
Автоматически вставляет SMS код в соответствующий диалог, если отправитель PAYMO и текст SMS сообщения из 4 символов.
3.4 Broadcast recevier для слежения за состоянием интернета.
В случае прерывания соединения с интернетом показывается snackbar с ошибкой, который блокирует возможность нажать на кнопку оплаты.
4. Обработка ошибок
Обрабатываются все ошибки с некорректным вводом данных, отсутствием интернета, ошибки сервера. Отображаются при помощи snackbar или непосредственно внутри EditText.
5. Внедрение и использование
Для подключения sdk нужно добавить библиотеку к зависимостям проекта и задать основные параметры. Подключается библиотека следующим образом: В корневом файле build.gradle добавить путь до репозитория.
allprojects {
	repositories {
		jcenter()
		maven { url "https://jitpack.io" }
		maven { url "/Users/Desktop/repo" }
	}
}
После этого в build.gradle файле проекта можно добавлять зависимость.
compile('ru.paymo.sdk:paymosdk:1.0')
И добавить в файл манифеста активности:
<activity
        android:name="ru.paymo.sdk.payment.Paymo3dsActivity"
        android:screenOrientation="portrait"
        android:theme="@style/PaymoTheme" />
<activity
        android:name="ru.paymo.sdk.payment.PaymoActivity"
        android:screenOrientation="portrait"
        android:theme="@style/PaymoTheme" />
Для задания параметров и запуска основной activity используется паттерн Builder.
PaymoSdkManager.newBuilder(apiKey, secretKey,
	new PurchaseInfo(purchaseName, purchaseDescription, price)).build(this);
Основные параметры это apiKey, secretKey, purchaseInfo.
apiKey
ключ для доступа к api, тип данных String.
secretKey / customHash
хэш, который используется для проверки данных на стороне сервера, тип данных String. Должен быть указан один из двух вариантов.
customHash
следует использовать в том случае, когда требуется передать на сервер заранее сгенерированный хэш.
secretKey
используется для генерации хэша во время выполнения программы. Значение должно совпадать со значением, указанным на сервере.
purchaseName
название покупки, тип данных String.
purchaseDescription
описание покупки, тип данных String.
price
цена, тип данных float. Указывать надо в рублях. (100.0 – сто рублей, 1.0 – рубль, 200 – двести рублей).
departure_type
тип уведомления покупателя. Сущестует три типа уведомления: sms-email, sms или email. По умолчанию тип, в завивимости от переданных данных, определяется автоматически.
extra
дополнительные параметры платежа (см. Дополнительные параметры платежа).
Есть еще несколько неосновных параметров:
phone
мобильный номер пользователя, тип данных String.
email
электронная почта пользователя, тип данных String.
transactionId
id транзакции, тип данных String . Если этот параметр не задан, автоматически будет сгенерирован новый UUID и приведен к строке.
useTestGate
параметр отвечает за то, какой сервер использовать. По умолчанию равен false (что есть production сервер). True – тестовый сервер.
Payment_data
добавляются согласно примеру customDataExample.txt (дополнительные параметры платежа).
purchaseDescription
описание покупки, тип данных String.
purchaseDescription
описание покупки, тип данных String.
departure_type
тип уведомления покупателя. Существует три типа уведомления: sms-email, sms или email. По умолчанию тип в завивимости от переданных данных определяется автоматически.
callbackDelegate
коллбек успешной/неуспешной оплаты
PaymoSdkManager.newBuilder(apiKey,
	new PurchaseInfo(purchaseName, purchaseDescription, price)).
		.setSecretKey(secretKey)
		.setTransactionId(transaction)
		.setCustomData(customData)
		.setCallbackDelegate(new PaymoSdkManager.ResultCallbackDelegate() {
			@Override
			public void onSuccess() {
				Log.d(TAG, "onSuccess");
			}
			@Override
			public void onFailure() {
				Log.d(TAG, "onFailure");
			}
		})
		.build(this);
Метод build принимает в качестве аргумента ссылку на текущую activity и после вызова запустит основную activity sdk.
iOS SDK
1. Описание
Библиотека PaymoSDK предназначена для проведения всех видов платежей, доступных в PAYMO, в мобильных приложениях на ОС iOS. Данная библиотека встраивается в существующее или новое приложение. Для интеграции достаточно добавить библиотеку в приложение и вызвать ряд методов.
Проведение платежа состоит из следующих шагов:

Оплата по новой карте

Слайд 6

3D Secure

Слайд 5

Успешная транзакция

Слайд 3

Уведомление об ошибке

Слайд 6

Оплата по привязанной карте

Слайд 6

Ввод sms кода

Слайд 2
  • Ввод номера мобильного телефона
  • Ввод данных новой карты или выбор существующей
  • Соглашение с условиями оферты
  • Подтверждение платежа.
В зависимости от типа карты будет выполняться один из следующих шагов:
  • Если пользователь ввёл новую карту с поддержкой 3D Secure, то внутри приложения открывается веб-страница банка-эмитента для ввода одноразового 3D Secure кода.
  • Если пользователь ввёл новую карту без поддержки 3D Secure, то дополнительная проверка не требуется.
  • Если пользователь выбрал привязанную карту, то ему предлагается ввести одноразовый смс код, высланный через PAYMO.
  • Подтверждение платежа.
  • При успешной оплате пользователю предлагается ввести адрес почтового ящика для получения квитанции платежа.
  • При неуспешной оплате плательщику нужно пройти все шаги заново
2. Технические детали
Минимальная поддерживаемая версия iOS – 8.0.
Библиотека PaymoSDK.framework состоит из следующих компонент:
  • PMPaymentController - основной экран, где производится платёж.
  • PMWebViewController - экран c webview для обработки 3D Secure транзакций или для отображения условий оферты.
  • PMSMSController - экран подтверждения смс кода.
  • PMEmailController - экран отправки квитанции платежа на почтовый ящик.
3. Интеграция библиотеки в приложение
Для подключения SDK нужно добавить библиотеку PaymoSDK.framework к зависимостям проекта и задать основные параметры. Интеграция библиотеки состоит из 6 шагов:
3.1 Добавить библиотеку в проект.
3.2 В настройках компиляции проекта указать, что добавленная библиотека содержит код языка Swift.
3.3 Импортировать хеадер файл или модуль библиотеки.
Swift:
import PaymoSDK
Objective-C:
#import <PaymoSDK/PaymoSDK-Swift.h>
@import PaymoSDK;
3.4 Задать основные параметры apiKey, secretKey, serverType для синглтона PAYMO.
Функция передачи параметров:
Swift:
Paymo.setApiKey(<apiKey>, secretKey: <secretKey>, serverType:
<serverType>)
Objective-C:
Paymo.setApiKey(<apiKey>, secretKey: <secretKey>, serverType:
<serverType>)
Название
Тип
Обязательно
Описание
apiKey
String
да
Ключ доступа мерчанта.
secretKey
String?
нет
Ключ для генерации хэш-суммы. Данный параметр является обязательным, если при инициализации платежа не будет передана хеш-сумма (customHash).
serverType
serverType
да
Тип сервера.
Существует два типа ServerType (enum):
Пример:
Swift:
Paymo.setApiKey(“58684911a-6d8e-444e-axc3-34bdasd32d18”, secretKey:
“qwerty”, serverType: ServerType.Production)
Objective-C:
[Paymo setApiKey: @“58684911a-6d8e-444e-axc3-34bdasd32d18”, secretKey:
@“qwerty” serverType: ServerTypeProduction];
3.5 Создать платёж PMPayment.
Swift:
let payment = PMPayment(
	phone: <phone>,
	transactionID: <transactionID>,
	sum: <sum>,
	title: <title>,
	description: <description>,
	email: <email>,
	customData: <customData>,
	customHash: <customHash>
)
Objective-C:
PMPayment *payment = [[PMPayment alloc] initWithPhone: <phone>
		transactionID: <transactionID>
		sum: <sum>
		title: <title>
		description: <description>
		email: <email>
		customData: <customData>
		customHash: <customHash>];
Название
Тип
Обязательно
Описание
phone
String
нет
Мобильный телефон пользователя.
transactionID
String
да
ID транзакции, желательно использовать строку UUID (например, NSUUID().UUIDString).
sum
Double
да
Сумма оплаты (в рублях).
title
String
да
Название покупки.
description
String?
да
Описание покупки.
email
String?
нет
Почтовый ящик пользователя.
customData
[String : AnyObject]?
нет
Дополнительные данные покупки.
customHash
String?
нет
Сгенерированная хеш-сумма платежа. Обязательна, если не задан secretKey при передачи параметров.
Пример:
Swift:
let payment = PMPayment(
	phone: “712345678901”,
	transactionId: “4d187334-8641-487c-89f1-a6c13c2b03f0”,
	sum: 1.0,
	title: “Покупка iPhone6s 64 GB”,
	description: “a very long description”,
	email: nil,
	customData: ["myData1" : "myValue1", "myData2" : "myValue2"],
	customHash: nil
	)
Objective-C:
PMPayment *payment = [[PMPayment alloc] initWithPhone: @“712345678901”
	transactionID: @“4d187334-8641-487c-89f1-a6c13c2b03f0”
	sum: 1.0
	title: @ “Покупка iPhone 6s 64 GB”
	description: nil
	email: nil
	customData: nil
	customHash: nil];
Данная функция возвращает при успешной инициализации инстанс PMPayment. Если customHash и secretKey не заданы, то возвращается nil.
3.6 Создать контроллер PMPaymentController с проинициализированной платёжкой.
Swift:
PMPaymentController.initWithPayment(<payment>, delegate: <delegate>,
canEditPhone: <canEditPhone>)
Objective-C:
UIViewController *vc = [PMPaymentController initWithPayment: <payment>
delegate: <delegate> canEditPhone: <canEditPhone>)];
Название
Тип
Обязательно
Описание
payment
PMPayment
да
Проинициализированный платёж.
delegate
PMPaymentControllerDelegate
да
Делегат, который вызывается после завершения оплаты.
canEditPhone
Bool
да
Возможность редактирования телефона во время проведения платежа.
Пример:
Swift:
guard let vc = PMPaymentController.initWithPayment(payment, delegate: self,
canEditPhone: true) else {return}
self.presentViewController(vc, animated: true, completion: nil)
Objective-C:
UIViewController *vc = [PMPaymentController initWithPayment:newPayment
delegate:self canEditPhone:YES];
if (vc != nil) {
[self presentViewController:vc animated:YES completion:nil];
}
Данная функция при успешной инициализации возвращает инстанс UIViewController, иначе nil.
Если во время инициализации контроллера PMPaymentController передается в параметр canEditPhone значение false, то мобильный телефон пользователя должен быть валидным, т.е. первый символ должен начинаться на цифру 7 и длина символов должна быть равной 11 (Например, 79253332211).
4. Finish callback
После проведения платежа вызывается метод протокола PMPaymentControllerDelegate.
Swift:
func didFinishPaymentWithResult(result: PMPaymentResult, andPhone
phone: String?)
Objective-C:
- (void)didFinishPaymentWithResult:(enum PMPaymentResult)result
andPhone:(NSString *)phone
Данная функция вызывается после завершения оплаты с результатом PMPaymentResult и телефоном, через который оплачивал пользователь.
Существует три типа PMPaymentResult (enum):
Success
Платёж прошёл успешно.
Fail
Произошла ошибка во время оплаты.
NotStarted
Оплата не производилась.