Raidopay API для веб-разработчиков

Регистрация и верификация

1) Зарегистрируйтесь в системе RaidoPay: https://secure.raidopay.com/site/signup

2) Войдите в систему и перейдите на страницу создания мерчанта: https://secure.raidopay.com/merchant

3) В левой части заполните необходимые поля, а в правой выберите доступные методы оплаты для Вашего мерчанта. Адрес веб-сайта необходимо указать вместе с протоколом, например: https://my-merchant-site.com .
После этого нажмите на кнопку "Отправить запрос". Добавленный сайт появится внизу страницы. Для просмотра параметров мерчанта просто кликните по ссылке сайта.

4) Пройдите верификацию сайта: https://secure.raidopay.com/verification/merchant .
Выберите сайт и нажмите на кнопку "Подтвердить". Будет создан автоматический запрос в Службу поддержки RaidoPay о том, что Вы хотите подтвердить свой сайт. Сохраните полученный текстовый файл и разместите его в корневой директории сайта, не меняя его название.

Файл должен быть доступен по сслыке, подобного вида:
https://my-merchant-site.com/6023275085114c5c1b7c4ddc1998d447.txt

Интеграция

1) Выберите добавленный сайт из списка внизу страницы: https://secure.raidopay.com/merchant

Вам понадобятся следующие параметры:

  • Merchant ID
  • Secret
  • Payment Methods ID

2) Создайте платеж.

Параметры платежа указываются в виде ассоциативного массива. Затем они кодируются и создается подпись в виде их хэша.

Параметр Ключ Описание
Мерчант merchant Ваш Merchant ID
Ордер order Номер ордера в Вашей системе
Цена amount Сумма, которую Вы хотите получить от покупателя
Валюта currency Валюта, в которой указана цена
Описание desc Описание платежа (Необязательно)
Метод оплаты method Payment Method ID (Необязательно)
Показать кнопку выбора метода оплаты allowchoice Если параметр allowchoice = true , то будет выводиться кнопка для выбора других платежных методов на странице оплаты. Если параметр не задан то нет. (Необязательно)
$params = [
	'merchant'  => 235,
	'order'     => '12345ABC',
	'amount'    => 51.3,
	'currency'  => 'EUR',
	'desc'     => 'purchase #43968',
];
$secret = 'Your_Secret';
$data = base64_encode(json_encode($params));
$sign = hash_hmac('sha256', $data, $secret);
                

Если передать method в параметрах, например:
$params['method'] => 123,
то клиент после нажатия на кнопку оплаты будет перенаправлен сразу на страницу оплаты с помощью указанного метода.

Доступные методы:

Метод Payment Methods ID
Bitcoin 2
Etherium 3

Если задать method в параметрах в виде пустой строки:
$params['method'] => '',
то клиент после нажатия на кнопку оплаты будет перенаправлен сразу на страницу оплаты через личный кабинет RaidoPay.

3) Создайте форму платежа.

В ней необходимо указать полученные значения $data и $sign. В результате форма оплаты будет выглядеть подобным образом:

<form action="https://secure.raidopay.com/api/merchant" method="post">
	<input type="hidden" name="data"
           value="eyJtZXJjaGFudCI6IjQiLCJvcmRlciI6IjIzNTMyNjIzMyIsImN1cnJlbmN5IjoiVVNEIiwiYW1vdW50IjoiNTEuNDAiLCJ==">
	<input type="hidden" name="sign" value="b657953b504975057c7a466b0131583daea940b12fdb26fbba84a36ec83518b2">
	<button type="submit">Pay</button>
</form>

RaidoPay поддерживает несколько языков. Для указания конкретного языка страниц оплаты необходимо отправлять форму на подобный адрес: https://secure.raidopay.com/ru/api/merchant

4) Задайте обработчик платежа.

После того, как произойдет оплата, её детали будут направлены по адресу Process URL Вашего мерчанта.
Чтобы задать Process URL, необходимо обратиться в Службу поддержки RaidoPay:
https://secure.raidopay.com/support

Данные в виде ассоциативного массива передаются в обработчик платежа с помощью POST-запроса.
Они имеют структуру:

$_POST = [
	'order' => string,
	'data' => array,
	'sign' => string,
];
                    

Информация, содержащаяся под ключом 'data', в свою очередь так же имеет структуру ассоциативного массива:

Параметр Ключ Описание
Дата счета date Дата выставления счета
Дата оплаты payDate Дата оплаты счета
Сумма счета amount Сумма выставленного Вами счета
Валюта счета currency Валюта выставленного Вами счета
Метод оплаты method Название метода, с помощью которого произошла оплата счета
Валюта оплаты methodCurrency Валюта, в которой оплачивался счет
Сумма оплаты methodAmount Сумма счета, пересчитанная в валюту оплаты счета
Итоговая сумма methodAmount Итоговая сумма счета в валюте оплаты с учетом комиссий
Raido транзакция transaction Номер транзакции в системе RaidoPay
Транзакции в сети transactionNetwork Номер транзакции в блокчейне
Валюта зачисления transactionCurrency Валюта, в которой поступили средства на счет мерчанта в системе RaidoPay
Сумма зачисления transactionAmount Сумма поступивших на счет мерчанта средств в системе RaidoPay
Итоговая сумма transactionTotal Итоговая сумма транзакции в системе RaidoPay с учетом комиссий
Описание desc Описание платежа
Задержка платежа cautionPaymentDelay Задержка платежа в секундах. Указывается, если покупатель произвел оплату, но по каким-то причинам, она пришла в RaidoPay с запазданием
Частичная оплата cautionPartialPayment Сумма частичной оплаты в валюте зачисления в системе RaidoPay. Указывается, если клиент произвел неполную оплату. Например, при переводе крипто валюты.

В ответ на переданные параметры наш сервис будет ожидать Вашего ответа.
Ответ ДОЛЖЕН имееть следующий вид:

  • Начинаться со слов 'success' или 'error'.
  • Далее через знак '|' может содержать URL для редиректа покупателя.
  • Быть не длиннее 255 символов.

Пример простейшего обработчика:

$post = $_POST;
$secret = 'Your_Secret';
if (isset($post['order'], $post['data'], $post['sign'])) {
	$data = base64_encode(json_encode($post['data']));
	$sign = hash_hmac('sha256', $data, $secret);
	if ($sign == $post['sign']) {
		if (isset($post['data']['cautionPartialPayment'])) {
			exit("error|https://my-merchant-site.com/payment/error/?order={$post['order']}");
		}
		exit("success|https://my-merchant-site.com/payment/complete/?order={$post['order']}");
	}
}
                

Переводы в Биткоинах будут зачислены на счет Вашего мерчанта только после 3х подтверждений, в то время как уведомления на Process URL отсылаются после 2-х подтверждений.

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

После получения корректного ответа от Вашего обработчика платежа покупателю будет показано уведомление об успешной/неуспешной оплате, а также предложено перейти по указанному URL, если он будет передан.

Аутентификация

Аутентификация происходит посредством Http Bearer Token. Токен выдается после подачи заявки. Ответ от сервера в JSON формате .

Информация об авторизованном пользователе

https://secure.raidopay.com/api/

curl -X GET "https://secure.raidopay.com/api/" -H "accept: application/json" -H "Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533"

Пример на PHP:

if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://secure.raidopay.com/api/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
$headers = array();
$headers[] = 'Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533';
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$out = curl_exec($curl);
curl_close($curl);
}
                    

История операций

https://secure.raidopay.com/api/history

account - номер кошелька, по которому нужно посмотреть историю

curl -X POST "https:// secure.raidopay.com/api/history " -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d "account=RD1234567" -H "Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533"

Пример на PHP:

$postData = array (
'account' => 'RD1234567',
);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://secure.raidopay.com/api/history');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
$headers = array();
$headers[] = 'Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533';
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postData));
$out = curl_exec($curl);
curl_close($curl);
}
                

Информация о балансе

https://secure.raidopay.com/api/balance

account - номер кошелька, по которому нужно получить баланс

currency - валюта

curl -X POST "https:// secure.raidopay.com/api/balance " -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d "account=RD1234567¤cy=USD" -H "Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533"

Пример на PHP:

$postData = array (
'currency' => 'USD',
'account' => 'RD1234567',
);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://secure.raidopay.com/api/balance');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
$headers = array();
$headers[] = 'Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533';
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postData));
$out = curl_exec($curl);
curl_close($curl);
}
                

Выплаты \ Массовые выплаты

https://secure.raidopay.com/api/payout

merchant - ID мерчанта в системе Raidopay

to - номер кошелька, email, телефон или крипто адрес получателя в системе RaidoPay

amount - сумма платежа

currency - валюта платежа

fee - признак того , кто платит комиссию. Если не задан, то платит мерчант, если true или 1 - то платит клиент

curl -X POST "https://secure.raidopay.com/api/payout" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d "merchant=123456&to=RD1234567&amount=10¤cy=USD" -H "Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533"

Возвращает JSON строку с номером транзакции при успешной операции.

Пример на PHP:

$postData = array (
'amount' => 10,
'currency' => 'USD',
'to' => 'client@gmail.com',
'merchant' => 12345678,
);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://secure.raidopay.com/api/payout');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
$headers = array();
$headers[] = 'Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533';
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postData));
$out = curl_exec($curl);
curl_close($curl);
}
                

Перевод средств

https://secure.raidopay.com/api/transfer

from - Ваш номер кошелька, с которого будет производится оплата

to - номер кошелька, email, телефон или крипто адрес получателя в системе RaidoPay

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

валюта платежа

curl -X POST "https://secure.raidopay.com/api/transfer" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d "from=RD1234567&to=RD1234568&amount=10¤cy=USD" -H "Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533"

Возвращает JSON строку с номером транзакции при успешной операции.

Пример на PHP:

$postData = array (
'from' => 'RD1234567',
'to' => 'RD1234568',
'amount' => 10,
'currency' => 'USD',
);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://secure.raidopay.com/api/transfer');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
$headers = array();
$headers[] = 'Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533';
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postData));
$out = curl_exec($curl);
curl_close($curl);
}
                

Проверка доступности кошелька

https://secure.raidopay.com/api/check-account

номер кошелька, который необходимо проверить

curl -X POST "ttps://secure.raidopay.com/api/check-account" -H "accept: application/json" -H "Content-Type: application/x-www-form-urlencoded" -d "account=RD1234567" -H "Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533"

Возвращает JSON строку true или false

{"success":true}

Пример на PHP:

$postData = array (
'account' => 'RD1234567',
);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'https://secure.raidopay.com/api/check-account');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
$headers = array();
$headers[] = 'Authorization: Bearer a9ac071cda6f4bd6e20d29695c9a4533';
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postData));
$out = curl_exec($curl);
curl_close($curl);
}
                

Индивидуальные выплаты

Обращение по api к выплатам требует передачи заголовка для аутентификации

Headers 
Authorization: Bearer {{access_token}}

Первый шаг - это запрос предложения

https://secure.raidopay.com/api/withdrawal/request

POST:

Обязательные параметры
Параметр Описание
amount Запрашиваемая сумма вывода
currency Валюта запрашиваемой суммы вывода
currency_in Валюта перевода
account_in Аккаунт для перевода (можно указывать email, кошельки, крипто адреса и пр.)
order Идентификатор заказа у Мерчанта
merchant ID мерчанта в системе Raidopay
Дополнительные параметры
client_id Идентификатор клиента у Мерчанта
desc Произвольное описание транзакции

Второй шаг - это подтверждение запроса

https://secure.raidopay.com/api/withdrawal/confirm

POST:

Параметр Описание
offer_id ID предложения в системе Raidopay
merchant ID мерчанта в системе Raidopay
sign Подпись

Подпись формируется следующим образом:

$sign = hash_hmac('sha256', $offer_id . $merchant, {{secret}});
                    

Ответ возвращается в формате JSON.:

Пример хорошего ответа:

{"status":"success","tx":"5B89B69E5533B2A9F2CAC64B6"}

tx - хэш транзакции в системе Raidopay

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

{"name":"Bad Request","message":"Amount cannot be blank.","code":0,"status":400}
{"name":"Bad Request","message":"Offer already paid","code":100,"status":400}