Ім'я файлу: PayeerMerchantru.pdf
Розширення: pdf
Розмір: 189кб.
Дата: 21.03.2022
скачати


Подключение
Для подключения необходимо:
1. ​
Зарегистрироваться​
в системе Payeer
2. Активировать Мерчант на вкладке “​
Настройка мерчанта​
”, для этого необходимо перейти на вкладку “Активация” и заполнить следующие поля:
Название

- имя Вашего сайта, например “Google”, данное название будет отображаться как в Вашем списке мерчантов, так и у пользователя при оплате счета.
Секретный ключ

- строка символов для подписи данных, передаваемых в форме инициализации платежа и для проверки поступивших данных в обработчике платежа.
Домен - домен Вашего сайта, например “google.com”, необходимо использовать только латинские символы, а цифры и знак дефиса, для конвертации национальных доменов, необходимо использовать любой punycode-конвертор, например ​
punycoder​
3. Подтвердить владение сайтом через размещение текстового файла в корневой директории Вашего сайта.
1

4. Заполнить поля:
Success URL

- на данный адрес клиент будет перенаправлен после успешной оплаты.
Fail URL

- этот адрес используется для перенаправления в случае ошибки в процессе оплаты или отмены платежа.
Status URL

- адрес обработчика платежа, на данной странице заказ должен помечаться как оплаченный или, например, происходить зачисление денег на счет клиента на Вашем сайте.
Ключ для шифрования дополнительных параметров

- секретный ключ для шифрования дополнительных полей, а также динамических success, fail и status url.
5. Отправить мерчант на модерацию. До модерации оплату может производить только владелец мерчанта, при условии, что до оплаты он уже авторизован в Payeer.
Настройка мерчанта
На вкладке “Настройки” возможно:
1. Задать новый секретный ключ (к сожалению, посмотреть старый секретный ключ невозможно в целях безопасности, но Вы всегда можете изменить его на новый).
2. Установить плательщика комиссии:
2.1. По-умолчанию: клиент платит комиссию выбранного платежного метода, мерчант - комиссию Payeer (по умолчанию: 0.95 %), на счет мерчанта зачисляется сумма счета минус 0.95 %.
2.2. Клиент: комиссию платежного метода и комиссию Payeer платит клиент, на счет мерчанта зачисляется сумма счета полностью.
2.3. Мерчант: комиссию платежного метода и комиссию Payeer платит мерчант, на счет мерчанта зачисляется сумма за вычетом двух комиссий.
3. Задать ключ для шифрования дополнительных параметров, если Вы планируете их передавать в форму оплаты или Вам нужны динамические адреса взаимодействия
(успешной, неуспешной оплаты или адрес обработчика).
4. Задать адреса успешной, неуспешной оплаты и адрес обработчика платежа.
2

5. Выбрать сервер уведомлений (по умолчанию, при отправке уведомления происходит автоматический выбор).
На вкладке “Внешний вид” можно отключить ненужные разделы, методы оплаты или оставить только нужные валюты. Серым цветом выделены методы, недоступные для прямой оплаты счета, но Ваш клиент всегда может пополнить внутренний счет Payeer, а затем оплатить Ваш счет с аккаунта Payeer, для этого после клика на такие методы предоставлена подробная инструкция с возвратом к оплате Вашего счета.
На вкладке “Подключение на сайт” можно скачать готовой модуль для CMS и найти примеры для ручного подключения.
Для тестирования сгенерированной подписи можно использовать одноименную вкладку в настройках мерчанта.
Форма инициализации платежа
Для перехода на страницу оплаты необходимо сформировать следующую форму:









-->

-->


3

Расшифровка параметров формы инициализации платежа
Название
Ключ
Описание
URL мерчанта
action
URL-адрес мерчанта
Идентификатор мерчанта
m_shop
Идентификатор мерчанта
Идентификатор платежа
m_orderid
В этом поле продавец задает идентификатор покупки в соответствии со своей системой учета.
Желательно использовать уникальный номер для каждого платежа.
Идентификатор должен представлять собой любую строку длиной не более 32 символов "A-z",
"_", "0-9", “-”.
Пример:​ 12345
Сумма платежа
m_amount
Сумма платежа, которую продавец желает получить от покупателя. Сумма должна быть больше нуля, дробная часть отделяется точкой, количество знаков после точки - два знака.
Пример:​ 1.00
Валюта платежа
m_curr
Валюта платежа
Возможные валюты:
USD, EUR, RUB
Описание платежа
m_desc
Описание товара или услуги. Формируется продавцом. Строка добавляется в назначение платежа.
Кодируется алгоритмом base64.
Пример:​ dGVzdA==
PHP код:4
base64_encode('test'); ?>
Электронная подпись
m_sign
Контрольная подпись, которая используется для проверки целостности полученной информации и однозначной идентификации отправителя.
Пример:
9F86D081884C7D659A2FE
AA0C55AD015A3BF4F1B2
B0B822CD15D6C15B0F00
A08
ID платежной системы
form[ps]
ID платежной системы для автоматического выбора.
Список ID можно увидеть на вкладке ​Внешний вид
Пример:​ 2609
Валюта платежной системы
form[curr[psId]]
Валюта платежной системы
Пример:​ USD
Дополнительные параметры
m_params
JSON массив данных дополнительных параметров, зашифрованный с помощью алгоритма
Rijndael-256 и закодированный с помощью алгоритма base64
Метод шифрования
m_cipher_method
Метод шифрования m_params.
Доступные методы:
● AES-256-CBC
● AES-256-CBC-IV
Дополнительные параметры
Название
Ключ
Описание
Success URL
success_url
на данный адрес клиент
5
будет перенаправлен после успешной оплаты
Fail URL
fail_url
этот адрес используется для перенаправления в случае ошибки в процессе оплаты или отмены платежа
Status URL
status_url
адрес обработчика платежа, на данной странице заказ должен помечаться как оплаченный или, например, происходить зачисление денег на счет клиента на Вашем сайте
Дополнительные поля
reference
Массив дополнительных полей, которые необходимо вернуть на обработчик платежа
Домен сабмерчанта
submerchant
Домен сабмерчанта
(только для агрегаторов)
Пример создания формы инициализации платежа
PHP
$m_shop = '12345'; // id мерчанта
$m_orderid = '1'; // номер счета в системе учета мерчанта
$m_amount = number_format(100, 2, '.', ''); // сумма счета с двумя знаками после точки
$m_curr = 'USD'; // валюта счета
$m_desc = base64_encode('Test'); // описание счета, закодированное с помощью алгоритма base64
$m_key = 'Ваш секретный ключ';
// Формируем массив для генерации подписи
$arHash = array(
$m_shop,
$m_orderid,
$m_amount,
$m_curr,
$m_desc
);
/*
6

// Формируем массив дополнительных параметров
$arParams = array(
'success_url' => 'http://google.com/new_success_url',
'fail_url' => 'http://google.com/new_fail_url',
'status_url' => 'http://google.com/new_status_url',
// Формируем массив дополнительных полей 'reference' => array(
'var1' => '1',
'var2' => '2',
'var3' => '3',
'var4' => '4',
'var5' => '5',
),
//'submerchant' => 'mail.com',
);
// Формируем ключ для шифрования
$key = md5('Ключ для шифрования дополнительных параметров'.$m_orderid);
// Шифруем дополнительные параметры
//$m_params = urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256,
$key, json_encode($arParams), MCRYPT_MODE_ECB)));
// Шифруем дополнительные параметры с помощью AES-256-CBC (для >= PHP 7)
$iv = substr(hash('sha256', $key), 0, 16);
$m_params = urlencode(base64_encode(openssl_encrypt(json_encode($arParams),
'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv)));
// Добавляем параметры в массив для формирования подписи
$arHash[] = $m_params;
*/
// Добавляем в массив для формирования подписи секретный ключ
$arHash[] = $m_key;
// Формируем подпись
$sign = strtoupper(hash('sha256', implode(':', $arHash)));
$arGetParams = array(
'm_shop' => $m_shop,
'm_orderid' => $m_orderid,
'm_amount' => $m_amount,
'm_curr' => $m_curr,
'm_desc' => $m_desc,
'm_sign' => $sign,
//'m_params' => $m_params,
//'m_cipher_method' => 'AES-256-CBC-IV',
//'form[ps]' => '2609',
7

//'form[curr[2609]]' => 'USD',
);
$url = 'https://payeer.com/merchant/?'.http_build_query($arGetParams); echo $url;
?>









*/ ?>


*/ ?>


Java
import java.util.*; import java.lang.*; import java.security.MessageDigest; import java.util.Base64; class Rextester
{ public static void main(String args[])
{
String m_shop = "12345";
String m_orderid = "1";
String m_amount = "1.00";
String m_curr = "USD";
String m_desc = "Test invoice";
String m_key = "Ваш секретный ключ'";
String m_desc64 = Base64.getEncoder().encodeToString(m_desc.getBytes());
String m_sign = sha256(m_shop + ":" + m_orderid + ":" + m_amount + ":" + m_curr +
":" + m_desc64 + ":" + m_key);
String url = "https://payeer.com/merchant/?m_shop=" + m_shop + "&m_orderid=" + m_orderid + "&m_amount=" + m_amount + "&m_curr=" + m_curr + "&m_desc=" +
8
m_desc64 + "&m_sign=" + m_sign;
System.out.println(url);
} public static String sha256(String base)
{ try
{
MessageDigest digest = MessageDigest.getInstance("SHA-256"); byte[] hash = digest.digest(base.getBytes("UTF-8")); return bytesToHex(hash).toUpperCase();
} catch(Exception ex)
{ throw new RuntimeException(ex);
}
} public static String bytesToHex(byte[] bytes)
{
StringBuffer result = new StringBuffer(); for (byte b : bytes) result.append(Integer.toString((b & 0xff) + 0x100,
16).substring(1)); return result.toString();
}
}
Формирование цифровой подписи
Цифровая подпись представляет собой строку символов, которая состоит из значений передаваемых переменных, с добавлением в конец секретного ключа, разделенных символом “:” (двоеточие) и захэшированных с помощью алгоритма SHA-256. Все буквы преобразуются в прописные.
Пример формирования подписи
PHP
$m_shop = '12345'; // id мерчанта
$m_orderid = '1'; // номер счета в системе учета мерчанта
$m_amount = number_format(100, 2, '.', ''); // сумма счета с двумя знаками после точки
$m_curr = 'USD'; // валюта счета
$m_desc = base64_encode('Test'); // описание счета, закодированное с помощью
9
алгоритма base64
$m_key = 'Ваш секретный ключ';
$arHash = array(
$m_shop,
$m_orderid,
$m_amount,
$m_curr,
$m_desc
);
// Добавляем доп. параметры, если Вы их задали if (isset($m_params))
{
$arHash[] = $m_params;
}
// Добавляем секретный ключ
$arHash[] = $m_key;
// Формируем подпись
$sign = strtoupper(hash('sha256', implode(":", $arHash)));
Python 2
import binascii from hashlib import sha256 m_shop = "12345" m_orderid = "1" m_amount = "1.00" m_curr = "USD" description = "Test" m_desc = binascii.b2a_base64(description.encode('utf8'))[:-1].decode() m_key = "Секретный ключ" list_of_value_for_sign = map(str, [m_shop, m_orderid, m_amount, m_curr, m_desc, m_key]) result_string = ":".join(list_of_value_for_sign) sign_hash = sha256(result_string) sign = sign_hash.hexdigest().upper()
C#
using System; using System.Security.Cryptography;
10
using System.Text; namespace Rextester
{ public class Program
{ public static void Main(string[] args)
{ var m_shop = "12345"; var m_orderid = "1"; var m_amount = "1.00"; var m_curr = "USD"; var m_desc = Base64Encode("Test"); var m_key = "Секретный ключ"; var arr = new string[] { m_shop, m_orderid, m_amount, m_curr, m_desc, m_key }; var sign = sign_hash(String.Join(":", arr));
} public static string sign_hash(string text)
{ byte[] data = Encoding.Default.GetBytes(text); var result = new SHA256Managed().ComputeHash(data); return BitConverter.ToString(result).Replace("-","").ToUpper();
} public static string Base64Encode(string plainText)
{ var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText); return System.Convert.ToBase64String(plainTextBytes);
}
}
}
Обработчик платежа
Обработчик платежа предназначен для завершения процесса оплаты на Вашем сайте.
На данной странице заказ должен помечаться как оплаченный или, например, происходить зачисление денег на счет клиента.
Пример обработчика платежа
PHP
// Отклоняем запросы с IP-адресов, которые не принадлежат Payeer if (!in_array($_SERVER['REMOTE_ADDR'], array('185.71.65.92', '185.71.65.189',
11

'149.202.17.210'))) return; if (isset($_POST['m_operation_id']) && isset($_POST['m_sign']))
{
$m_key = 'Ваш секретный ключ';
// Формируем массив для генерации подписи
$arHash = array(
$_POST['m_operation_id'],
$_POST['m_operation_ps'],
$_POST['m_operation_date'],
$_POST['m_operation_pay_date'],
$_POST['m_shop'],
$_POST['m_orderid'],
$_POST['m_amount'],
$_POST['m_curr'],
$_POST['m_desc'],
$_POST['m_status']
);
// Если были переданы дополнительные параметры, то добавляем их в массив if (isset($_POST['m_params']))
{
$arHash[] = $_POST['m_params'];
}
// Добавляем в массив секретный ключ
$arHash[] = $m_key;
// Формируем подпись
$sign_hash = strtoupper(hash('sha256', implode(':', $arHash)));
// Если подписи совпадают и статус платежа “Выполнен” if ($_POST['m_sign'] == $sign_hash && $_POST['m_status'] == 'success')
{
// Здесь можно пометить счет как оплаченный или зачислить денежные средства Вашему клиенту
// Возвращаем, что платеж был успешно обработан ob_end_clean(); exit($_POST['m_orderid'].'|success');
}
// В противном случае возвращаем ошибку ob_end_clean(); exit($_POST['m_orderid'].'|error');
}
12

Обработчик платежа должен обязательно вернуть m_orderid со статусом success или error как указано в примере выше. В противном случае уведомление будет отправляться, пока не будет получен правильный ответ.
Для безопасности принимаемых запросов с нашего сайта обязательно установите проверку по IP-адресу отправителя. Список наших IP-адресов
Вы можете получить по ссылке ​
https://payeer.com/merchant/ips.txt
Вы всегда можете посмотреть, что отвечает Ваш обработчик платежа на наше уведомление об оплате, если зайдете в ​
Историю​
, кликните на вкладку Вашего мерчанта и нажмете на значок уведомления.
Расшифровка параметров обработчика платежа
Название
Ключ
Описание
Внутренний номер платежа
m_operation_id
Уникальный номер платежа в системе
«Payeer».
Пример:​ 123456
Способ оплаты
m_operation_ps
Идентификатор способа оплаты с помощью которого была произведена оплата. Все способы оплаты можно посмотреть на вкладке
“Внешний вид” в настройках мерчанта.
Дата и время формирования операции
m_operation_date
Дата и время формирования операции
(UTC+3)
Пример:​ 21.12.2012 21:12
Дата и время выполнения платежа
m_operation_pay_date
Дата и время оплаты
(UTC+3)
Пример:​ 21.12.2012 21:12
Идентификатор мерчанта
m_shop
Идентификатор мерчанта
13
зарегистрированного в системе Payeer
Идентификатор платежа
m_orderid
Идентификатор покупки в соответствии с системой учета мерчанта.
Пример:​ 12345
Сумма платежа
m_amount
Сумма платежа
Пример:​ 1.00
Валюта платежа
m_curr
Валюта платежа
Возможные валюты:
USD, EUR, RUB
Описание платежа
m_desc
Описание товара или услуги закодированное алгоритмом base64.
Пример:​ dGVzdA==
Статус платежа
m_status
Статус платежа в системе
Payeer
Принимаемые значения:
success
Электронная подпись
m_sign
Контрольная подпись, которая используется для проверки целостности полученной информации и однозначной идентификации отправителя
Пример:
9F86D081884C7D659A2FE
AA0C55AD015A3BF4F1B2
B0B822CD15D6C15B0F00
A08
E-mail клиента
client_email
E-mail клиента, который оплатил данный счет
Пример:​ client@email.com
Номер аккаунта клиента
client_account
Номер Payeer аккаунта клиента, который оплатил данный счет
14

Пример:​ P1000001
ID зачисления
transfer_id
ID операции зачисления денежных средств на счет мерчанта по данному платежу
Пример:​ 12345
Сумма зачисления
summa_out
Сумма за вычетом всех комиссий, которая была зачислена на счет мерчанта по данному платежу
Пример:​ 1.00
Дополнительные параметры
m_params
JSON массив данных дополнительных параметров
15

скачати

© Усі права захищені
написати до нас