NAV Navbar
shell javascript python php

Платежный виджет

1.1 Подключение

Для подключения платежного виджета используется скрипт:

https://paymo.ru/paymentgate/iframe/checkout.js

1.2 Вызов платежного виджета

Ниже приведен пример для метода set() и open():

<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: "0cm9ri03f303ed09mf3",
        success_redirect: "http://yoursite.ru/success_redirect",
        fail_redirect: "http://yoursite.ru/success_redirect",
        auto_return: 1,
        rebill: {},
        extra:{
            some_key: "some_value",
            some_key2: "some_value2"
        },
        phone: "79991234567",
        email: "email@mail.com",
        send_post_message: false,
        version: "2.0.0"
    })
</script>

<div id="iframe_parent"></div>

Существует объект PaymoFrame и его два метода для вызова платежного виджета: set() и open().

При использовании метода open() виджет будет отображаться по центру экрана, тогда как при методе set() добавление виджета будет произведен в тот элемент, который передается в параметре parent_id.

Демо-магазин можно посмотреть: Вариант 1 и Вариант 2.

Описание параметров

Название Обязательно Описание
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 Нет Дополнительные параметры платежа (см. Дополнительные параметры платежа).
phone Нет Номер телефона пользователя.
email Нет Email пользователя.
send_post_message Нет Метод postMessage() отправляет сообщение от iframe на сайт мерчанта. При успешном платеже отправляется сообщение "paymo-payment-success", а при неуспешном платеже отправляется сообщение "paymo-payment-unsuccess"
version Нет Версия платежного виджета. Доступны две версии: 1.0.0 и 2.0.0

Страница UNIFORM

Пример кода для вставки:

 <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="0cm9ri03f303ed09mf3">
         <input type="hidden" name="email" value="client@e-mail.ru">
         <input type="hidden" name="phone" value="79991234567">
         <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>

Оплата с переходом на платёжную страницу, разработанная сервисом оплаты PAYMO. После завершения оплаты клиент будет направлен обратно на страницу интернет-магазина.

Демо-магазин можно посмотреть здесь.

Описание параметров

Название Обязательно Описание
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 могут быть одинаковыми).
phone Нет Номер телефона пользователя.
email Нет Email пользователя.
extra_<key> Нет Дополнительные параметры платежа. В форме может быть несколько дополнительных параметров платежа, которые передаются в виде: "extra_"+"название параметра".

Выставление счетов

3.1 Создание счетов

Пример запроса:

curl -X POST \
  "https://paymo.ru/rest/merchant/invoice/" \
  -H 'content-type: application/json' \
  -d '{
    "api_key": "26785c66-10a0-4485-ab67-7e1558cbfdc6", 
    "contact": "79516035589", 
    "price": "1.05", 
    "description": "Тестовый счет", 
    "order": "23"
  }'
var request = require("request");

var options = {
  method: 'POST',
  url: 'https://paymo.ru/rest/merchant/invoice/',
  headers: {
    'content-type': 'application/json'
  },
  body: {
    api_key: '26785c66-10a0-4485-ab67-7e1558cbfdc6',
    contact: '79516035589',
    price: '1.05',
    description: 'Тестовый счет',
    order: '22'
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
import requests

response = requests.post('https://paymo.ru/rest/merchant/invoice/', json={
    'api_key': '26785c66-10a0-4485-ab67-7e1558cbfdc6',
    'contact': '79516035589',
    'price': '1.05',
    'description': 'Тестовый счет',
    'order': '22'
})

response.json()
<?php
$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://paymo.ru/rest/merchant/invoice/', [
    'json' => [
        'api_key' => '26785c66-10a0-4485-ab67-7e1558cbfdc6',
        'contact' => '79516035589',
        'price' => '1.05',
        'description' => 'Тестовый счет',
        'order' => '22'
    ]
]);

$result = json_decode((string)$response->getBody(), true);

Пример ответа:

{
    "result_sms": "success",
    "message_sms": "Счет отправлен по указанным данным."
}

Рассмотрим пример выставления счета на E-mail или по SMS ваших клиентов.

HTTP Request

POST 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 Нет Дополнительные параметры платежа (см. Дополнительные параметры платежа).

Параметры ответа

Название Обязательно Описание
result Да Результат выполнения операции success / fail.
message Нет Сообщение с информацией о результате выполнения операции.
url Нет Ссылка на счет.

3.2 Получение статуса счета

Пример запроса:

curl -X POST \
  "https://paymo.ru/rest/merchant/invoice/status/" \
  -H 'content-type: application/json' \
  -d '{
    "api_key": "26785c66-10a0-4485-ab67-7e1558cbfdc6", 
    "order": "23"
  }'
var request = require("request");

var options = {
  method: 'POST',
  url: 'https://paymo.ru/rest/merchant/invoice/status/',
  headers: {
    'content-type': 'application/json'
  },
  body: {
    api_key: '26785c66-10a0-4485-ab67-7e1558cbfdc6',
    order: "23"
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
import requests

response = requests.post('https://paymo.ru/rest/merchant/invoice/status/', json={
    'api_key': '26785c66-10a0-4485-ab67-7e1558cbfdc6',
    'order': '23'
})

response.json()
<?php
$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://paymo.ru/rest/merchant/invoice/status/', [
    'json' => [
        'api_key' => '26785c66-10a0-4485-ab67-7e1558cbfdc6',
        'order' => '23'
    ]
]);

$result = json_decode((string)$response->getBody(), true);

Пример ответа:

{
    "result": "success",
    "message": "Счет найден.",
    "status": "processing"
}

HTTP Request

POST https://paymo.ru/rest/merchant/invoice/status/

Параметры запроса

Название Обязательно Описание
api_key Да Ключ магазина, который генерируется автоматически при создании магазина. Доступен на вкладке "Магазины" личного кабинета.
order Да Номер счета в системе магазина.

Параметры ответа

Название Обязательно Описание
result Да Результат выполнения операции success / fail.
message Да Сообщение с информацией о результате выполнения операции.
status Да Статус счета. (см. Возможные статусы)

3.3 Start и Finish CallBacks

Пример запроса:

{
    "transaction": "0297079a202d4dbdb223e152ba3aa403", 
    "hashsum": "deb56402a132aea8a9cc993982478b1a380f92c8fd01116507562a2bcebb7671", 
    "user": "79999999999", 
    "md5": "d5984d82636866fbfbe6239ef3f698aa"
}

Пример ответа при успешном выполнении проверки:

{
    "result": true
}

Пример ответа при ошибке при проверке:

{
    "result": false
}

Start callback вызывается перед созданием и оплатой транзакции.

Параметры запроса POST (JSON):

Название Обязательно Описание
transaction Да Номер создаваемого счета.
user Да Номер телефона пользователя, который проводит оплату.
hashsum Нет sha256 хэш. Формирование подписи: sha256("api_key"+"transaction"+"amount"+"secret_key")


Finish callback вызывается после того, как транзакция будет проведена. После того, как PAYMO получит конечный статус по транзакции, выполняется запрос на callback URL, указанный в настройках магазина.

Параметры запроса POST (JSON):

Название Обязательно Описание
transaction Да Номер создаваемого счета.
user Да Номер телефона пользователя, который проводит оплату.
hashsum Нет sha256 хэш. Формирование подписи: sha256("api_key"+"transaction"+"amount"+"secret_key")
status Да Cтатус счета (deposited – оплачен; approved - оплачен, ожидает подтверждения).
payment_id Да Номер платежа в нашей системе.
payment_time Да Время проведения платежа.
payment_method Да Метод оплаты.
base_amount Да Сумма платежа без внешней комиссии (в копейках).
total_amount Да Сумма платежа вместе с внешней комиссией (в копейках).
external_commission Да Внешняя комиссия (в копейках).

Параметры ответа магазина (JSON):

Название Обязательно Описание
result Да Результат получения уведомления. Значения: true/ false. В случае значения false сервисом PAYMO будет выполнено еще 5 попыток уведомления сервера предприятия через 5, 10, 20, 40, 60 минут соответственно.

Статус платежа

4.1 Получение статуса платежа

Пример запроса:

curl -X POST \
  "https://paymo.ru/rest/merchant/transaction/status/get/" \
  -H 'content-type: application/json' \
  -d '{
    "hash_sum": "6fad00e9f8b62749e51edd1a6843a4cd2f568418289440f8e6d26a5b212016de", 
    "transaction": "5bfa60f6-10db-43b0-7d37-c34bef543147", 
    "api_key": "26785c66-10a0-4485-ab67-7e1558cbfdc6"
  }'
var request = require("request");
var sha256 = require("sha256");


var api_key = '26785c66-10a0-4485-ab67-7e1558cbfdc6';
var transaction = '5bfa60f6-10db-43b0-7d37-c34bef543147';
var amount = 3.99;
var secret_key = 'your_secret_key';

var params = [api_key, transaction, parseInt(amount * 100).toString(), secret_key];

var hash_sum = sha256(params.join(''));

var options = {
  method: 'POST',
  url: 'https://paymo.ru/rest/merchant/transaction/status/get/',
  headers: {
    'content-type': 'application/json'
  },
  body:
    {
      hash_sum: hash_sum,
      transaction: transaction,
      api_key: api_key
    },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
import requests

from Crypto.Hash import SHA256

api_key = '26785c66-10a0-4485-ab67-7e1558cbfdc6'
transaction = '5bfa60f6-10db-43b0-7d37-c34bef543147'
amount = 3.99
secret_key = 'your_secret_key'

params = [api_key, transaction, str(int(amount * 100)), secret_key]

hash_sum = SHA256.new(''.join(params).encode()).hexdigest()

response = requests.post('https://paymo.ru/rest/merchant/transaction/status/get/', json={
    'hash_sum': hash_sum,
    'transaction': transaction,
    'api_key': api_key
})

response.json()
<?php
$api_key = '26785c66-10a0-4485-ab67-7e1558cbfdc6';
$transaction = '5bfa60f6-10db-43b0-7d37-c34bef543147';
$amount = 3.99;
$secret_key = 'your_secret_key';

$params = [$api_key, $transaction, (string) $amount * 100, $secret_key];

$hash_sum = hash('sha256', implode('', $params));

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://paymo.ru/rest/merchant/transaction/status/get/', [
    'json' => [
        'hash_sum' => $hash_sum,
        'transaction' => $transaction,
        'api_key' => $api_key
    ]
]);

$result = json_decode((string)$response->getBody(), true);

Пример ответа:

{
    "result": "success",
    "message": "Transaction find",
    "status": "deposited",
    "id": 508,
    "time": "2014-11-26T09:34:11.686600+00:00",
    "sum": "3.99",
    "commission": "0"
}

Метод используется для получения статуса конкретного платежа.

HTTP Request

POST https://paymo.ru/rest/merchant/transaction/status/get/

Параметры запроса

Название Обязательно Описание
api_key Да Ключ магазина, который генерируется автоматически при создании магазина. Доступен на вкладке "Магазины" личного кабинета.
transaction Да Идентификатор транзакции.
hash_sum Да Формирование подписи: sha256("api_key"+"transaction"+"amount"+"secret_key"). Пример на php: $signature = hash('sha256', $api_key.$transaction.$amount.$secret_key);
secret_key задается в разделе Магазины => Настройки => Технические настройки
amount сумма платежа в копейках.

Параметры ответа

Название Обязательно Описание
result Да Результат выполнения платежа success / fail.
message Да Сообщение с информацией о результате выполнения платежа.
status Да Статус транзакции.

4.2 Возможные статусы

Название Описание
PROCESSING Платеж в обработке.
DEPOSITED Транзакция совершена успешно.
DECLINED Транзакция неуспешна.
WAIT_EXTERNAL Ожидается подтверждение от внешней платежной системы.
REFUNDED Осуществлен полный возврат денежных средств.
APPROVED Денежные средства захолдированы, ожидается подтверждение платежа.
PART_DEPOSITED Произведено частичное списание захолдированных средств.
PART_REFUNDED Произведен частичный возврат денежных средств.

Возврат платежа

Пример запроса:

curl -X POST \
  "https://paymo.ru/rest/v2/payment/refund/" \
  -H 'content-type: application/json' \
  -d '{
    "api_key": "ef592cb4-90fc-4b45-bc40-0a656fb9e613",
    "tx_id": "6315",
    "refund_amount": 124.83,
    "signature": "bd91c62c1f1b55edd427d09bcb6b726d"
  }'
var request = require("request");
var sha256 = require("sha256");

var api_key = '26785c66-10a0-4485-ab67-7e1558cbfdc6';
var tx_id = '6315';
var refund_amount = 124.83;
var secret_key = 'your_secret_key';

var signature = sha256(api_key + tx_id + secret_key);

var options = { 
  method: 'POST',
  url: 'https://paymo.ru/rest/v2/payment/refund/',
  headers: {
     'content-type': 'application/json'
  },
  body: { 
    api_key: api_key,
    tx_id: tx_id,
    refund_amount: refund_amount,
    signature: signature
  },
  json: true 
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
import requests

from Crypto.Hash import SHA256

api_key = '26785c66-10a0-4485-ab67-7e1558cbfdc6'
tx_id = '6315'
refund_amount = 124.83
secret_key = 'your_secret_key'

params = [api_key, tx_id, secret_key]

signature = SHA256.new(''.join(params).encode()).hexdigest()

response = requests.post('https://paymo.ru/rest/v2/payment/refund/', json={ 
    'api_key': api_key,
    'tx_id': tx_id,
    'refund_amount': refund_amount,
    'signature': signature
})

response.json()
<?php
$api_key = '26785c66-10a0-4485-ab67-7e1558cbfdc6';
$tx_id = '6315';
$refund_amount = 124.83;
$secret_key = 'your_secret_key';

$signature = hash('sha256', $api_key . $tx_id . $secret_key);

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://paymo.ru/rest/v2/payment/refund/', [
    'json' => [
        'api_key' => $api_key,
        'tx_id' => $tx_id,
        'refund_amount' => $refund_amount,
        'signature' => $signature
    ]
]);

$result = json_decode((string)$response->getBody(), true);

Пример ответа:

{
    "result": true,
    "refund_amount": "124.83"
}

При выполнении данного метода вызывается Finish callback, согласно механизму модулей и отправляется письмо мерчанту "Отчет об успешном возврате средств".

HTTP Request

POST https://paymo.ru/rest/v2/payment/refund/

Параметры запроса

Название Обязательно Описание
api_key Да Ключ магазина, который генерируется автоматически при создании магазина. Доступен на вкладке "Магазины" личного кабинета.
tx_id Да Идентификатор транзакции.
signature Да Формирование подписи: sha256("api_key"+"tx_id"+"secret_key"). Пример на php: $signature = hash('sha256', $api_key.$tx_id.$secret_key);
secret_key задается в разделе Магазины => Настройки => Технические настройки
refund_amount Нет Сумма частичного возврата, в рублях. Указывается, если сумма возвращается не полностью. Если сумма не указана или равняется нулю, то платеж возвращается полностью.

Параметры ответа

Название Описание
result Результат выполнения операции true / false.
refund_amount Сумма возврата
errors Массив, содержащий код ошибки.

Возможные коды ошибок

Название Код ошибки Описание
API_KEY_REQUIRED 81001 Не указан Api-Key магазина
TRANSACTION_REQUIRED 22001 Не указан номер транзакции
TRANSACTION_INVALID 22002 Неверно указан номер транзакции, либо транзакция с указанным номер не найдена
REST_REFUND_DENIED 18002 Запрещен возврат транзакции через API, вероятно, не указан крипто ключ в магазине
SIGNATURE_INVALID 96002 Неверно указана сигнатура
AMOUNT_INVALID 17004 Неверно указана сумма возврата
PART_REFUND_IMPOSSIBLE 18001 Невозможна операция частичного возврата для данного банка
TRANSACTION_NOT_DEPOSITED 22004 Транзакция не оплачена
TERMINAL_INVALID 21002 Ошибка с банковским терминалом платежа

Рекуррентные платежи

6.1 Параметры рекуррента

Пример использования:

{
  "rebill": {
    "amount": 100, 
    "period": "1.0", 
    "end": "31-12-2016", 
    "start_at": "20-10-2016"
  }
}

При инициализации 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); время списания берётся от времени первоначального платежа.

6.2 Отмена рекуррента

Пример запроса:

curl -X POST \
  "https://paymo.ru/rest/merchant/transaction/rebill/stop/" \
  -H 'content-type: application/json' \
  -d '{
    "api_key": "3fd47e05-8e7n-4e5-78-8fbb-9af08926d995", 
    "tx_id": "198", 
    "amount": "10000", 
    "signature": "oi3rf3ijfioejfoeirjf"
  }'
var request = require("request");
var sha256 = require("sha256");

var api_key = '3fd47e05-8e7n-4e5-78-8fbb-9af08926d995';
var tx_id = '198';
var amount = 100; // 100 руб.
var secret_key = 'your_secret_key';
var amount_kop = parseInt(amount * 100).toString();

var signature = sha256(amount_kop + '&' + secret_key);

var options = {
  method: 'POST',
  url: 'https://paymo.ru/rest/merchant/transaction/rebill/stop/',
  headers: {
    'content-type': 'application/json'
  },
  body: {
    api_key: api_key,
    tx_id: tx_id,
    amount: amount_kop,
    signature: signature
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
import requests

from Crypto.Hash import SHA256

api_key = '3fd47e05-8e7n-4e5-78-8fbb-9af08926d995'
tx_id = '198'
amount = 100
secret_key = 'your_secret_key'

amount_kop = str(int(amount * 100))

signature = SHA256.new('{}&{}'.format(amount_kop, secret_key).encode()).hexdigest()

response = requests.post('https://paymo.ru/rest/merchant/transaction/rebill/stop/', json={
    'api_key': api_key,
    'tx_id': tx_id,
    'amount': amount_kop,
    'signature': signature
})

response.json()
<?php
$api_key = '26785c66-10a0-4485-ab67-7e1558cbfdc6';
$tx_id = '5bfa60f6-10db-43b0-7d37-c34bef543147';
$amount = 100;
$secret_key = 'your_secret_key';

$amount_kop = (string) $amount * 100;

$signature = hash('sha256', $amount_kop . '&' . $secret_key);

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://paymo.ru/rest/merchant/transaction/rebill/stop/', [
    'json' => [
        'api_key' => $api_key,
        'tx_id' => $tx_id,
        'amount' => $amount_kop,
        'signature' => $signature
    ]
]);

$result = json_decode((string)$response->getBody(), true);

Пример ответа:

{
    "result": true,
    "message": "Rebill is stopped"
}

Мерчант (продавец) имеет возможность "вручную" остановить выполнение периодических платежей посредством вызова соответствующего API-метода:

HTTP Request

POST https://paymo.ru/rest/merchant/transaction/rebill/stop/

Параметры запроса

Название Обязательно Описание
api_key Да Ключ магазина, который генерируется автоматически при создании магазина. Доступен на вкладке "Магазины" личного кабинета.
tx_id Да Идентификатор транзакции.
amount Да Сумма первого платежа в копейках.
signature Да Формирование подписи: sha256("amount"+"&"+"secret_key").

6.3 Возобновление рекуррента

Пример запроса:

curl -X POST \
  "https://paymo.ru/rest/merchant/transaction/rebill/resume/" \
  -H 'content-type: application/json' \
  -d '{
    "api_key": "3fd47e05-8e7n-4e5-78-8fbb-9af08926d995", 
    "tx_id": "198", 
    "amount": "10000", 
    "signature": "oi3rf3ijfioejfoeirjf"
  }'
var request = require("request");
var sha256 = require("sha256");

var api_key = '3fd47e05-8e7n-4e5-78-8fbb-9af08926d995';
var tx_id = '198';
var amount = 100; // 100 руб.
var secret_key = 'your_secret_key';

var amount_kop = parseInt(amount * 100).toString();

var signature = sha256(amount_kop + '&' + secret_key);

var options = {
  method: 'POST',
  url: 'https://paymo.ru/rest/merchant/transaction/rebill/resume/',
  headers: {
    'content-type': 'application/json'
  },
  body: {
    api_key: api_key,
    tx_id: tx_id,
    amount: amount_kop,
    signature: signature
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
import requests

from Crypto.Hash import SHA256

api_key = '3fd47e05-8e7n-4e5-78-8fbb-9af08926d995'
tx_id = '198'
amount = 100
secret_key = 'your_secret_key'

amount_kop = str(int(amount * 100))

signature = SHA256.new('{}&{}'.format(amount_kop, secret_key).encode()).hexdigest()

response = requests.post('https://paymo.ru/rest/merchant/transaction/rebill/resume/', json={
    'api_key': api_key,
    'tx_id': tx_id,
    'amount': amount_kop,
    'signature': signature
})

response.json()
<?php
$api_key = '26785c66-10a0-4485-ab67-7e1558cbfdc6';
$tx_id = '5bfa60f6-10db-43b0-7d37-c34bef543147';
$amount = 100;
$secret_key = 'your_secret_key';

$amount_kop = (string) $amount * 100;

$signature = hash('sha256', $amount_kop . '&' . $secret_key);

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://paymo.ru/rest/merchant/transaction/rebill/resume/', [
    'json' => [
        'api_key' => $api_key,
        'tx_id' => $tx_id,
        'amount' => $amount_kop,
        'signature' => $signature
    ]
]);

$result = json_decode((string)$response->getBody(), true);

Пример ответа:

{
    "result": true,
    "message": "Rebill is resumed"
}

Мерчант (продавец) имеет возможность "вручную" возобновить выполнение периодических платежей, которые ранее были остановлены, но дата окончания которых еще не истекла, посредством вызова соответствующего API-метода:

HTTP Request

POST https://paymo.ru/rest/merchant/transaction/rebill/resume/

Параметры запроса

Название Обязательно Описание
api_key Да Ключ магазина, который генерируется автоматически при создании магазина. Доступен на вкладке "Магазины" личного кабинета.
tx_id Да Идентификатор транзакции.
amount Да Сумма первого платежа в копейках.
signature Да Формирование подписи: sha256("amount"+"&"+"secret_key").

6.4 Изменение рекуррента

Пример запроса:

curl -X POST \
  "https://paymo.ru/rest/merchant/transaction/rebill/change/" \
  -H 'content-type: application/json' \
  -d '{
    "api_key": "3fd47e05-8e7n-4e5-78-8fbb-9af08926d995", 
    "tx_id": "198", 
    "amount": 100, 
    "rebill_amount": 1000, 
    "rebill_period": "2.0", 
    "signature": "oi3rf3ijfioejfoeirjf"
  }'
var request = require("request");
var sha256 = require("sha256");

var api_key = '3fd47e05-8e7n-4e5-78-8fbb-9af08926d995';
var tx_id = '198';
var amount = 100; // 100 руб.
var rebill_amount = 1000;
var rebill_period = "2.0";
var secret_key = 'your_secret_key';

var amount_kop = parseInt(amount * 100).toString();
var rebill_amount_kop = parseInt(rebill_amount * 100).toString();

var signature = sha256(amount_kop + '&' + secret_key + '&' + rebill_amount_kop + '&' + rebill_period);

var options = {
  method: 'POST',
  url: 'https://paymo.ru/rest/merchant/transaction/rebill/change/',
  headers: {
    'content-type': 'application/json'
  },
  body: {
    api_key: api_key,
    tx_id: tx_id,
    amount: amount_kop,
    rebill_amount: rebill_amount_kop,
    rebill_period: rebill_period,
    signature: signature
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
import requests

from Crypto.Hash import SHA256

api_key = '3fd47e05-8e7n-4e5-78-8fbb-9af08926d995'
tx_id = '198'
amount = 100
rebill_amount = 1000
rebill_period = "2.0"
secret_key = 'your_secret_key'

amount_kop = str(int(amount * 100))
rebill_amount_kop = str(int(rebill_amount * 100))

signature = SHA256.new('{}&{}&{}&{}'.format(amount_kop, secret_key, rebill_amount_kop, rebill_period).encode()).hexdigest()

response = requests.post('https://paymo.ru/rest/merchant/transaction/rebill/change/', json={
    'api_key': api_key,
    'tx_id': tx_id,
    'amount': amount_kop,
    'rebill_amount': rebill_amount_kop,
    'rebill_period': rebill_period,
    'signature': signature
})

response.json()
<?php
$api_key = '26785c66-10a0-4485-ab67-7e1558cbfdc6';
$tx_id = '5bfa60f6-10db-43b0-7d37-c34bef543147';
$amount = 100;
$rebill_amount = 1000;
$rebill_period = "2.0";
$secret_key = 'your_secret_key';

$amount_kop = (string) $amount * 100;
$rebill_amount_kop = (string) $rebill_amount * 100;

$signature = hash('sha256', $amount_kop . '&' . $secret_key . '&' . $rebill_amount_kop . '&'. $rebill_period);

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://paymo.ru/rest/merchant/transaction/rebill/change/', [
    'json' => [
        'api_key' => $api_key,
        'tx_id' => $tx_id,
        'amount' => $amount_kop,
        'rebill_amount' => $rebill_amount_kop,
        'rebill_period' => $rebill_period,
        'signature' => $signature
    ]
]);

$result = json_decode((string)$response->getBody(), true);

Пример ответа:

{
    "result": true,
    "message": "Rebill is changed"
}

Мерчант (продавец) имеет возможность "вручную" изменить сумму и/или периодичность платежей (или непосредственно установить дату следующего платежа) посредством вызова соответствующего API-метода:

HTTP Request

POST https://paymo.ru/rest/merchant/transaction/rebill/change/

Параметры запроса

Название Обязательно Описание
api_key Да Ключ магазина, который генерируется автоматически при создании магазина. Доступен на вкладке "Магазины" личного кабинета.
tx_id Да Идентификатор транзакции.
amount Да Сумма первого платежа в копейках.
rebill_amount Да Новая сумма очередного платежа в копейках.
rebill_period Да Периодичность платежа.
next_timestamp Нет Дата и время следующего платежа в формате UNIX TIMESTAMP.
signature Да Формирование подписи: sha256("amount"+"&"+"secret_key"+"&"+"rebill_amount"+"&"+"rebill_period").
initial_payment_custom_data Нет Произвольные данные первоначального платежа, на основе которого выполняется повторяющийся платеж в формате JSON.

Start и Finish CallBacks

7.1 Start callback

Пример запроса:

{
    "tx_id": "26785c66-10a0-4485-ab67-7e1558cbfdc6", 
    "user": "79999999999", 
    "signature": "oi3rf3ijfioejfoeirjf", 
    "test_payment": true, 
    "extra": {}
}

Пример ответа:

{
    "result": true
}

Start callback вызывается перед созданием и оплатой транзакции.

Параметры запроса POST (JSON):

Название Обязательно Описание
tx_id Да Номер транзакции, которую передает магазин.
user Нет Номер телефона пользователя, который проводит оплату. В случае если проводится оплата без регистрации, данный параметр отсутствует.
signature Нет Формирование подписи: sha256("tx_id"+"amount"+"secret_key")
secret_key – ключ контрольной суммы, который задается в личном кабинете.
test_payment Нет Данный параметр передается, когда торговая точка находится в тестовом режиме.
extra Да Дополнительные параметры платежа (см. Дополнительные параметры платежа).


Параметры ответа магазина (JSON):

Название Обязательно Описание
result Да Результат выполнения операции true / false.

7.2 Finish callback

Пример запроса:

{
  "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
}

Finish callback вызывается после того, как транзакция будет проведена. После того как PAYMO получит конечный статус по транзакции, выполняется запрос на callback URL, указанный в настройках магазина.

Параметры запроса POST (JSON):

Название Обязательно Описание
tx_id Да Номер транзакции, которую передает магазин.
user Нет Номер телефона пользователя, который проводит оплату. В случае если проводится оплата без регистрации, данный параметр отсутствует.
signature Нет Формирование подписи: sha256("tx_id"+"amount"+"secret_key")
secret_key – ключ контрольной суммы, который задается в личном кабинете.
status Да Cтатус платежа. (см. Возможные статусы)
error_code Нет Код ошибки платежа (при status:"declined").
base_amount Да Сумма платежа в копейках.
result Да Результат выполнения операции true / false.
is_rebill Нет Данный параметр передается, когда проводится автоплатеж.
pan_mask Нет Маска карты, с которой была произведена оплата
payment_id Да Номер платежа в нашей системе.
payment_time Да Время проведения платежа.
test_payment Да Данный параметр передается, когда торговая точка находится в тестовом режиме.
extra Да Дополнительные параметры платежа (см. Дополнительные параметры платежа).


Параметры ответа магазина (JSON):

Название Обязательно Описание
result Да Результат выполнения операции true / false. В случае значения false сервисом PAYMO будет выполнено еще 5 попыток уведомления сервера предприятия через 5, 10, 20, 40, 60 минут соответственно.

Доп. параметры (extra)

Пример использования:

{
    "extra": { 
        "my_custom_param_1": "значение string", 
        "my_custom_param_2": "value" 
    }
}

Параметры extra будут включены в Start и Finish callbacks.

Также extra используется для отправки чеков по Ф3-54.

Отправка чеков по Ф3-54

Пример использования для ФЗ-54:

{
    "extra": {
        "receipt": {
            "taxationSystem": 0,
            "positions": [
                    { "tax": 1, 
                      "name": "Название покупки", 
                      "amount": 40207.44, 
                      "quantity": 1, 
                      "paymentMethod": 4, 
                      "paymentSubject": 1 
                    }
                ],
            "contact": "+79067496474"
        }
    }
}

Пример 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"
        }
    }
}

Описание параметров, которые необходимо передавать в extra:

Название Описание
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 - ставка НДС 20%
2 - ставка НДС 10%
3 - ставка НДС расч. 20/120
4 - ставка НДС расч. 10/110
5 - ставка НДС 0%
6 - НДС не облагается
taxationSystem 0 – Общая, ОСН
1 – Упрощенная доход, УСН доход
2 – Упрощенная доход минус расход, УСН доход - расход
3 – Единый налог на вмененный доход, ЕНВД
4 – Единый сельскохозяйственный налог, ЕСН
5 – Патентная система налогообложения, Патент

Данные для тестирования

Для совершения тестового платежа можно использовать следующие данные карт:

Без 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

Тестовые платежи возможны при наличии галочки «Тестовый режим» в настройках магазина (раздел «Магазины», «Настройки», «Общие»).

iOS SDK

11.1 Описание

Скачать iOS SDK

Библиотека PaymoSDK предназначена для проведения всех видов платежей, доступных в PAYMO, в мобильных приложениях на ОС iOS. Данная библиотека встраивается в существующее или новое приложение. Для интеграции достаточно добавить библиотеку в приложение и вызвать ряд методов.

Проведение платежа состоит из следующих шагов:

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

ios

3D Secure

ios

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

ios

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

ios

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

ios

Ввод sms кода

ios

11.2 Технические детали

Минимальная поддерживаемая версия iOS – 8.0.

Библиотека PaymoSDK.framework состоит из следующих компонент:

11.3 Интеграция

Для подключения SDK нужно добавить библиотеку PaymoSDK.framework к зависимостям проекта и задать основные параметры.

Интеграция библиотеки состоит из 6 шагов:

1. Добавить библиотеку в проект.

Xcode iOS 1

2. В настройках компиляции проекта указать, что добавленная библиотека содержит код языка Swift.

Xcode iOS 2

3. Импортировать хеадер файл или модуль библиотеки.

Swift:

import PaymoSDK

Objective-C:

#import <PaymoSDK/PaymoSDK-Swift.h>

или:

@import PaymoSDK;
















4. Задать основные параметры для синглтона PAYMO.

Swift:

Paymo.setApiKey(<apiKey>, 
                secretKey: <secretKey>, 
                serverType: <serverType>)

Objective-C:

[Paymo setApiKey: <apiKey>, 
                  secretKey: <secretKey>, 
                  serverType: <serverType>]

Функция передачи параметров для: apiKey, secretKey, serverType:

Название Тип Обязательно Описание
apiKey String Да Ключ доступа мерчанта.
secretKey String? Нет Ключ для генерации хэш-суммы. Данный параметр является обязательным, если при инициализации платежа не будет передана хеш-сумма (customHash).
serverType serverType Да Тип сервера.

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: ServerType.Production];

Существует два типа ServerType (enum):

  1. Production: https://paymo.ru
  2. Development: https://testgate.paymo.ru










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.























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.

11.4 Finish callback

Swift:

func didFinishPaymentWithResult(result: PMPaymentResult, andPhone phone: String?)

Objective-C:

- (void)didFinishPaymentWithResult:(enum PMPaymentResult)result andPhone:(NSString *)phone

После проведения платежа вызывается метод протокола PMPaymentControllerDelegate.

Данная функция вызывается после завершения оплаты с результатом PMPaymentResult и телефоном, через который оплачивал пользователь.

Существует три типа PMPaymentResult (enum):

Название Описание
Success Платёж прошёл успешно.
Fail Произошла ошибка во время оплаты.
NotStarted Оплата не производилась.

Android SDK

12.1 Описание

Скачать Android SDK

SDK предназначено для проведения платежей через процессинговый центр PAYMO в мобильном приложении.

Проведение платежа состоит из следующих шагов:

12.2 Технические детали

Минимальная поддерживаемая версия Android - 14.

Также в версиях Android >= 21 присутствуют дополнительные material анимации. SDK представляет из себя .aar библиотеку со следующими компонентами:

12.3 Описание компонентов

1. Основная activity

Основной экран. Здесь отображается вся информация о платеже и вводятся пользовательские данные.

2. Activity c webview для обработки 3ds

Если карта еще не привязана и поддерживает 3ds, после нажатия на кнопку оплаты пользователь попадает в activity с webview, внутри которой происходит redirect на страницу для ввода 3ds кода подтверждения. В результате обработки запроса на проверку 3ds может быть получено сообщение об ошибке или успехе проведения операции. Далее независимо от результата Sdk завершит свою работу, закрыв все activity.

ios
ios
ios

3. Broadcast recevier для парсинга SMS

Автоматически вставляет SMS код в соответствующий диалог, если отправитель PAYMO и текст SMS сообщения из 4 символов.

4. Broadcast recevier для слежения за состоянием интернета.

В случае прерывания соединения с интернетом показывается snackbar с ошибкой, который блокирует возможность нажать на кнопку оплаты.

12.4 Обработка ошибок

Обрабатываются все ошибки с некорректным вводом данных, отсутствием интернета, ошибки сервера. Отображаются при помощи snackbar или непосредственно внутри EditText.

12.5 Внедрение и использование

В корневом файле build.gradle добавить путь до репозитория:

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
        maven { url "/Users/Desktop/repo" }
    }
}

После этого в build.gradle файле проекта можно добавлять зависимость:

compile('ru.paymo.sdk:paymosdk:1.5')

И добавить в файл манифеста активности:

<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);

Для подключения sdk нужно добавить библиотеку к зависимостям проекта и задать основные параметры. Подключается библиотека следующим образом:



Основные параметры это apiKey, secretKey, purchaseInfo.

Название Описание
apiKey Ключ для доступа к api, тип данных String.
secretKey / customHash Хэш, который используется для проверки данных на стороне сервера, тип данных String. Должен быть указан один из двух вариантов.
customHash Следует использовать в том случае, когда требуется передать на сервер заранее сгенерированный хэш.
secretKey Используется для генерации хэша во время выполнения программы. Значение должно совпадать со значением, указанным на сервере.
purchaseName Название покупки, тип данных String.
purchaseDescription Описание покупки, тип данных String.
price Цена, тип данных float. Указывать надо в рублях. (100.0 – сто рублей, 1.0 – рубль, 200 – двести рублей).

Есть еще несколько неосновных параметров:

Название Описание
phone Мобильный номер пользователя, тип данных String.
email Электронная почта пользователя, тип данных String.
transactionId Id транзакции, тип данных String . Если этот параметр не задан, автоматически будет сгенерирован новый UUID и приведен к строке.
useTestGate Параметр отвечает за то, какой сервер использовать. По умолчанию равен false (что есть production сервер). True – тестовый сервер.
Payment_data Добавляются согласно примеру customDataExample.txt (дополнительные параметры платежа).
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.

Модули оплаты CMS

13.1 Bitrix

Если у Вас последняя версия Битрикс и срок действия лицензионного ключа ещё не закончился, то в её административной части перейдите на страницу Настройки / Marketplace/ Каталог решений (/bitrix/admin/update_system_market.php).

В поисковой строке напишите paymo и нажмите кнопку Enter. В результатах поиска Вы увидите наш модуль Paymo v2 - установите его.

bitrix1

Создание платёжной системы.

На странице Магазин / Платёжные системы (/bitrix/admin/sale_pay_system.php), Вам необходимо будет добавить новую платёжную систему Paymo. В качестве обработчиков необходимо выбрать обработчик «PAYMO2 (paymo2)»

Порядок установки модуля приема платежей для зарегистрированных в системе PAYMO продавцов:

  1. На странице Магазин \ Настройки магазина \ Платежные системы
    (/bitrix/admin/sale_pay_system.php) выбрать Добавить платежную систему.
  2. На вкладке Платежная система заполнить:
    • Название: PAYMO (Оплата картами VISA / MasterCard)
    • Обработчик: PAYMO2 (paymo2)
    • Активность: Да
    • Логотип платежной системы можно скачать тут - http://dl.paymo.ru/logo.png
  3. На вкладке (Типы плательщиков \ Физическое лицо) заполнить:
    • API ключ
    • Ключ шифрования
    • Сумма к оплате: Оплата => Цена
    • Код заказа: Заказ => Код заказа (ID)
    • Код платежа: Оплата => Код платежа (ID)
    • Валюта счета: Оплата => Валюта
  4. В личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки) указать:
    • Запрос подтверждения (start callback): http://[название_сайта]/bitrix/modules/sale/payment/paymo2/result.php
    • Отправка результата (finish callback): http://[название_сайта]/bitrix/modules/sale/payment/paymo2/result.php

bitrix2

13.2 Bitrix ТСЖ

Модуль оплаты PAYMO v2 для ТСЖ сайтов Bitrix (с компонентом Citrus ТСЖ).

  1. Скачиваем файл paymo_setup.php - здесь.
  2. Заливаем данный файл в корень сайта и заходим на него через браузер.
  3. Прописываем в ЛК на paymo.ru финишный коллбэк http://[название_сайта]/bitrix/tools/paymo_receive.php.

Для настройки платежной системы выставить:

В данном варианте в качестве дополнительных параметров указаны ФИО, Адрес и Сумма оплаты.

В описании способа оплаты можно использовать лого по адресу /images/logo_paymo.jpg и картинку карт оплаты по адресу /images/paymo_cards.png (они автоматически уже сохранились).

13.3 Simpla

  1. Скачать модуль - здесь.
  2. Разархивировать архив и скопировать папку Paymo в директорию /payment/ вашего сайта (через FTP).
  3. Зайти в админпанель по адресу http://вашсайт.ру/simpla/index.php.
  4. Выбрать пункт меню "Настройки". simpla1
  5. Выбрать вкладку "Оплата". simpla2
  6. Нажать кнопку "Добавить способ оплаты". simpla3 ЛИБО вместо шагов 3-6 просто зайдите на страницу http://ваш_сайт/simpla/index.php?module=PaymentMethodAdmin
  7. Заполнить форму добавления нового способа оплаты:
    • Назовите метод оплаты. Например: Paymo - Оплата картой VISA / Mastercard
    • Поставьте галочку АКТИВЕН
    • Укажите Api-Key магазина и секретный ключ из вашего личного кабинета paymo.ru
    • В поле "Использовать интерфейс оплаты Фрейм? (yes/no)" напишите yes, если Вы хотите использовать интерфейс Фрейм (форма оплаты на странице магазина - без переадресации). Иначе напишите no, если Вы хотите использовать интерфейс Редирект (переадресация на сайт Paymo). По умолчанию будет использоваться интерфейс Фрейм, даже если Вы ничего не пропишите.
    • Обязательно включите все доступные способы доставки.
  8. В общем списке появится новый метод и он будет отмечен иконкой "лампочка горит", которая является индикатором того, что он включен.
  9. Укажите адрес http://ваш_сайт/payment/Paymo/callback.php в поле "Запрос подтверждения (start callback)", а также в поле "Отправка результата (finish callback)" в личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки).

13.4 Joomla Virtuemart 3.x.x

  1. Скачать модуль - здесь.
  2. Зайти в панель управления Joomla на страницу Менеджера расширений и загрузить модуль в блоке "Загрузить файл пакета" (http://ваш_магазин/administrator/index.php?option=com_installer). joomla1
  3. После загрузки модуля, в Менеджере расширений перейдите на страницу Управление и включите расширение PAYMO Payment Module. joomla2
  4. Зайдите в раздел Virtuemart => Способы оплаты и создайте новый способ оплаты. (http://ваш_магазин/administrator/index.php?option=com_virtuemart&view=paymentmethod).
    Заполните форму нового способа оплаты:
    • Введите название способа платежа (например, "Paymo" или "Оплата картой VISA/Mastercard").
    • В качестве псевдонима введите "paymo".
    • В графе "Опубликовано" выберите "Да".
    • В графе "Способ оплаты" выберите PAYMO Payment Module.
  5. После того, как метод оплаты был успешно добавлен и опубликован, откройте его еще раз для редактирования. Во вкладке "Конфигурация" необходимо ввести следующие параметры:
    • Введите Api-Key магазина из личного кабинета PAYMO (раздел "Магазины").
    • Укажите секретный ключ из личного кабинета PAYMO (раздел "Магазины" → Настройки → технические настройки ЭЦП Secret_Key). Оставьте поле пустым, если не используете секретный ключ.
    • Нажмите кнопку "Сохранить", чтобы сохранить изменения.
    • Также есть возможность выбрать интерфейс оплаты, метод вызова виджета и статусы заказа. При наведении курсора на название поля, появится подсказка. joomla3
  6. Вставьте адрес http://ваш_сайт/index.php?option=com_virtuemart&view=pluginresponse&task=pluginnotification&pelement=Paymo в поле "Запрос подтверждения (start callback)", а также в поле "Отправка результата (finish callback)" в личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки).

13.5 ocStore 1.5.5 (Opencart)

  1. Скачать модуль - здесь. Либо для Opencart 2.1 - здесь.
  2. Распаковать архив и залить папки admin, catalog и view в корень сайта.
  3. Необходимо добавить статус заказа «Оплачен» (если у Вас такого статуса еще нет). Для этого зайдите в раздел Система => Локализация => Статусы заказов. Если среди статусов нет статуса «Оплачен», нажмите кнопку Добавить и добавьте данный статус. opencart1
  4. Зайти в админку Дополнения => Оплата, найти в списке модуль Paymo и установить его.
  5. После успешной установки снова найдите в списке модуль Paymo и нажмите на ссылку Редактирование. opencart1
  6. Заполните форму:
    • Api-Key магазина
    • Секретный ключ
    • Статус заказа: Оплачен
    • Выберите интерфейс оплаты (фрейм или редирект)
    • Статус: Включено
    • Сохраните изменения
  7. Скопируйте адрес (ссылку) из поля "Адрес для оповещения" и вставьте в поле "Запрос подтверждения (start callback)", а также в поле "Отправка результата (finish callback)" в личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки).

13.6 Webasyst (Shop Script 6)

  1. Скачать модуль - здесь.
  2. Распаковать архив и залить папку wa-plugins в корень сайта.
  3. В админке магазина зайти в раздел Магазин => Настройки => Оплата и добавить Cпособ оплаты Paymo (Либо просто перейти по ссылке http://ваш_сайт/webasyst/shop/?action=settings#/payment/plugin/add/paymo/). В настройках способа оплаты ввести ключ API и секретное слово из Вашего личного кабинета Paymo.
  4. Скопируйте "Адрес для оповещения" и вставьте в поле "Запрос подтверждения (start callback)", а также в поле "Отправка результата (finish callback)" в личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки).

13.7 Hostcms

  1. Скачать модуль - здесь.
  2. Распакуйте архив. Открыть оба файла в текстовом редакторе.
  3. Зайти в админку Вашего сайта, перейти в раздел Контент => Интернет магазины => Название_вашего_магазина => Справочники => Платежные системы.
  4. Добавьте новую платежную систему:
    • Название: Paymo
    • Описание: Оплата любой банковской картой через Paymo
    • Обработчик: Скопировать сюда содержимое файла handler_paymo
    • Нажмите кнопку "Применить"
  5. В списке платежных систем посмотрите, какой код был присвоен для Paymo, а затем нажмите на кнопку "Редактирование". hostcms1
  6. Отредактируйте код в поле “Обработчик”:
    • Замените в название класса число "27" на код, который был присвоен для Paymo.
    • Укажите Ваш ключ API (обязательно).
    • Укажите секретное слово (обязательно).
    • Укажите интерфейс оплаты (iframe или redirect - по умолчанию стоит iframe).
    • Сохраните изменения. hostcms2
  7. Перейдите в раздел Структура сайта => Типовые динамические страницы => Интернет-магазин и войдите в редактирование страницы корзины hostcms3
  8. Зайдите во вкладку "Настройки страницы" и вставьте код из файла tds_paymo после 6 строки (после строки переменной $bCheckStock) и сохраните изменения.
  9. Вставьте адрес http://ваш_сайт/shop/cart/?paymo в поле "Запрос подтверждения (start callback)", а также в поле "Отправка результата (finish callback)" в личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки).

13.8 Oscommerce 2.3

  1. Скачать модуль - здесь.
  2. Распакуйте архив. Закачайте с помощью ФТП менеджера папки ext и includes в корневую папку вашего сайта.
  3. Перейдите в админку сайта. В раздел Модули => Оплата. И нажмите кнопку "Установить модуль". oscommerce1
  4. Найдите в списке модулей Paymo и нажмите на него. Затем нажмите кнопку "Установить модуль". oscommerce2 oscommerce3
  5. В списке установленных модулей выберите Paymo и нажмите кнопку "Редактировать". oscommerce4
  6. Заполните форму:
    • Введите ваш ключ API (из вашего личного кабинета paymo.ru).
    • Укажите ваше секретное слово (из вашего личного кабинета paymo.ru).
    • Обязательно выберите статус для оплаченного заказа (если у вас нет подходящего статуса, его можно добавить в разделе Локализация => Статусы заказов).
      oscommerce5
  7. Скопируйте "Адрес для оповещения" и вставьте в поле "Запрос подтверждения (start callback)", а также в поле "Отправка результата (finish callback)" в личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки)

13.9 WordPress (WooCommerce)

  1. Скачать модуль - здесь.
  2. Распакуйте архив. Закачайте с помощью ФТП менеджера папку wp_content в корень сайта.
  3. Зайдите в админку сайта и активируйте плагин Paymo Payment Gateway.
  4. Перейдите в раздел WooCommerce => Настройки => Оплата => Paymo и заполните форму.
  5. Скопируйте "Адрес для оповещения" и вставьте в поле "Запрос подтверждения (start callback)", а также в поле "Отправка результата (finish callback)" в личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки).

13.10 VamShop

  1. Скачать модуль - здесь.
  2. Распакуйте архив. Закачайте с помощью ФТП менеджера содержимое папки paymo_vamshop в корневую папку вашего сайта.
  3. Зайдите в админку сайта => Вкладка Модули => Модули оплаты. Выберите там PAYMO и нажмите "Установить". Затем отредактируйте настройки для способа оплаты:
    • Введите Api-Key магазина
    • Введите Секретный ключ
    • Скопируйте ссылку из поля "Адрес для оповещения" и вставьте в поле "Запрос подтверждения (start callback)", а также в поле "Отправка результата (finish callback)" в личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки)
    • Сохраните настройки

13.11 NetCat

  1. Скачать модуль - здесь.
  2. Распакуйте архив. Закачайте с помощью ФТП менеджера папки netcat и paymo в корневую папку вашего сайта.
  3. Зайдите на страницу http://ваш_сайт/paymo/install.php - должна появиться надпись DONE. После чего закройте эту страницу.
  4. Зайдите в админку сайта в раздел Настройки => Управление модулями. netcat1
  5. В списке модулей найдите PAYMO. Проверьте стоит ли галочка Вкл/Выкл и нажмите на иконку "Шестеренки". netcat2
  6. Перейдите на вкладку "Настройки" и заполните необходимые поля. netcat3
  7. Скопируйте "Адрес для оповещения" и вставьте его в поле "Запрос подтверждения (start callback)", а также в поле "Отправка результата (finish callback)" в личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки).

13.12 Amiro

  1. Скачать модуль - здесь.
  2. Зайдите на страницу http://ваш_сайт/_admin/engine.php?mod_id=ami_market&upload=1 и загрузите этот архив с модулем. amiro1
  3. Зайдите в раздел Сервис => Настройка системы => Способы оплаты и установите модуль Paymo.
    amiro2
  4. Настройте способ оплаты - укажите Api-Key магазина, секретный ключ и выберите интерфейс оплаты.
  5. Вставьте адрес http://ваш_сайт/drivers/gate_paymo.php в поле "Запрос подтверждения (start callback)", а также в поле "Отправка результата (finish callback)" в личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки).
  6. Если способ PAYMO не появился в списке вариантов оплаты при оформлении заказа, зайдите в админку на страницу списка заказов и нажмите иконку "гаечного ключа".
    amiro3
  7. Отредактируйте поле Доступные способы оплаты. amiro4

13.13 Diafan

  1. Скачать модуль - здесь
  2. Распакуйте архив и залейте папку modules через ФТП в корень вашего сайта.
  3. Зайдите в админку в раздел Интернет магазин => Оплата и добавьте способ оплаты PAYMO. При добавлении укажите:
    • Api-Key магазина из личного кабинета PAYMO (раздел «Магазины»),
    • Секретный ключ из личного кабинета PAYMO (раздел Магазины» → Настройки → технические настройки ЭЦП Secret_Key. Оставьте поле пустым, если не используете секретный ключ)
    • Выберите интерфейс оплаты - Фрейм или Редирект
  4. Вставьте адрес http://ваш_сайт/payment/get/paymo в поле "Запрос подтверждения (start callback)", а также в поле "Отправка результата (finish callback)" в личном кабинете PAYMO (раздел Магазины => Настройки => Технические настройки).