У вас есть интернет-магазин, лендинг или вы продаёте товары и услуги онлайн, но всё ещё нет удобного способа принимать оплату? С нашим API вы откроете новые возможности для своего бизнеса! Принимайте платежи с разных банков, карт и популярных платёжных систем по выгодным курсам для ваших клиентов — легко, безопасно и с полной автоматизацией процесса.
Автоматические заявки 24/7, мгновенные IPN-уведомления, простое подключение и надёжная защита транзакций с цифровой подписью и API-ключом. Полный контроль над каждым обменом: задавайте свои callback-адреса, настраивайте IPN, используйте кастомные поля и интегрируйте решение под свои задачи. Подключайтесь — с нами проще, быстрее и выгоднее!
AlwaysMoney предоставляет API для автоматизации обмена валют. Ниже описаны ключевые этапы интеграции: от получения доступных направлений обмена до создания заявки и отслеживания её статуса через IPN. В примерах используются запросы с помощью PHP (cURL).
Точка входа API: https://alwaysmoney.org/api/userapi/v1/
– все методы вызываются по этому базовому URL.
Авторизация: выполняется через заголовки HTTP: API-LOGIN
(ваш API-логин) и API-KEY
(секретный API-ключ). Опционально можно указать язык ответов в заголовке API-LANG
(например, ru
для русского). Все запросы выполняются методом POST, параметры передаются в теле запроса. Ответы возвращаются в формате JSON.
Первым шагом нужно получить перечень валют и доступных направлений обмена. Для этого используются методы get_direction_currencies
и get_directions
.
get_direction_currencies
— возвращает список валют, которые можно отдать (give) и получить (get).get_directions
— возвращает список направлений обмена (пары валют).Пример 1а: Получение списка доступных валют
<?php
$ch = curl_init("https://alwaysmoney.org/api/userapi/v1/get_direction_currencies");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"API-LOGIN: ВАШ_API_LOGIN",
"API-KEY: ВАШ_API_KEY",
"API-LANG: ru"
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
?>
Пример ответа:
{
"give": [
{ "id": 1, "title": "Bitcoin (BTC)", "logo": "https://.../btc.png" },
{ "id": 2, "title": "Ethereum (ETH)", "logo": "https://.../eth.png" }
],
"get": [
{ "id": 5, "title": "Visa/MasterCard USD", "logo": "https://.../visa.png" },
{ "id": 6, "title": "PerfectMoney USD", "logo": "https://.../pm.png" }
]
}
Ответ содержит два массива: give
(валюты для отдачи) и get
(валюты для получения). Каждый элемент содержит id валюты, название и ссылку на логотип.
Пример 1б: Получение списка направлений для Bitcoin
<?php
$ch = curl_init("https://alwaysmoney.org/api/userapi/v1/get_directions");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"API-LOGIN: ВАШ_API_LOGIN",
"API-KEY: ВАШ_API_KEY",
"API-LANG: ru"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, "currency_id_give=1");
$response = curl_exec($ch);
curl_close($ch);
$directions = json_decode($response, true);
print_r($directions);
?>
Пример ответа:
[
{
"direction_id": 101,
"currency_give_id": 1,
"currency_give_title": "Bitcoin (BTC)",
"currency_get_id": 6,
"currency_get_title": "PerfectMoney USD"
},
{
"direction_id": 102,
"currency_give_id": 1,
"currency_give_title": "Bitcoin (BTC)",
"currency_get_id": 5,
"currency_get_title": "Visa/MasterCard USD"
}
]
В ответе содержатся направления обмена для выбранной валюты. Эти данные помогут при создании заявок и последующих запросах.
Имея direction_id
нужного направления, можно запросить подробную информацию о нём с помощью метода get_direction
. Этот метод возвращает текущие условия обмена: курс, доступный резерв по валюте, минимальную и максимальную суммы, комиссию и другие параметры. Также возвращаются списки дополнительных полей, которые требуется заполнить для этого направления (например, номера счетов, имена получателей и прочее).
Перед созданием заявки обязательно проверьте ограничения (минимумы/максимумы) и резерв по направлению, чтобы убедиться, что обмен возможен на заданную сумму.
Пример 2: Запрос информации по направлению (для примера возьмем direction_id = 101
, обмен BTC → PerfectMoney USD)
<?php
$ch = curl_init("https://alwaysmoney.org/api/userapi/v1/get_direction");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"API-LOGIN: ВАШ_API_LOGIN",
"API-KEY: ВАШ_API_KEY",
"API-LANG: ru"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, "direction_id=101");
$response = curl_exec($ch);
curl_close($ch);
$info = json_decode($response, true);
print_r($info);
?>
Пример ответа (основные параметры):
{
"id": 101,
"url": "https://alwaysmoney.org/exchange/BTC-to-PMUSD",
"currency_code_give": "BTC",
"currency_code_get": "USD",
"reserve": 5000.00,
"course_give": 1,
"course_get": 48000,
"min_give": "0.001",
"max_give": "10",
"min_get": "no",
"max_get": "no",
"com_give": "0%",
"com_get": "0%"
}
Пример показывает, что направление BTC → PerfectMoney USD имеет курс ~1 BTC = 48 000 USD, минимальную сумму отдачи 0.001 BTC и максимальную 10 BTC. Резерв направления составляет 5000 USD. Комиссии com_give
и com_get
равны 0% — дополнительных комиссий нет. Значения min_get
и max_get
равные "no"
означают отсутствие явных ограничений по сумме получения.
Метод также возвращает списки полей give_fields
, get_fields
и dir_fields
(при необходимости), где описаны данные, которые нужно указать для проведения обмена (например, номер кошелька или ФИО получателя).
Когда пользователь выбрал направление и ввёл сумму, желательно рассчитать точный результат обмена с учётом актуального курса и возможных комиссий до создания заявки. Для этого используется метод get_calc
– калькулятор обмена.
Параметры:
direction_id
– ID направления обмена.calc_amount
– сумма для расчёта.calc_action
– тип суммы: 1
если сумма в валюте «отдаю», 2
если сумма в валюте «получаю».На выходе API возвращает расчёт: сколько пользователь отдаст и получит, включая комиссии, а также обновлённые данные по курсу и резерву. Метод удобен для динамического пересчёта при вводе суммы пользователем.
Пример 3: Пользователь хочет обменять 0.005 BTC на USD (PerfectMoney)
<?php
$ch = curl_init("https://alwaysmoney.org/api/userapi/v1/get_calc");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"API-LOGIN: ВАШ_API_LOGIN",
"API-KEY: ВАШ_API_KEY",
"API-LANG: ru"
]);
$postData = [
"direction_id" => 101,
"calc_amount" => 0.005,
"calc_action" => 1
];
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
$response = curl_exec($ch);
curl_close($ch);
$calcResult = json_decode($response, true);
print_r($calcResult);
?>
Пример ответа:
{
"currency_code_give": "BTC",
"currency_code_get": "USD",
"reserve": 5000.00,
"course_give": 1,
"course_get": 48000,
"sum_give": 0.005,
"sum_give_com": 0.005,
"sum_get": 240.00,
"sum_get_com": 240.00,
"com_give": "0%",
"com_get": "0%",
"min_give": "0.001",
"max_give": "10",
"min_get": "no",
"max_get": "no",
"changed": 0
}
В примере рассчитано, что 0.005 BTC эквивалентны 240 USD. Поля sum_give_com
и sum_get_com
показывают сумму с учётом комиссии (здесь они равны из-за отсутствия комиссии). Флаг changed=0
означает, что сумма допустима; если бы сумма была меньше минимальной, API изменил бы её и вернул changed=1
.
Метод get_calc
позволяет отобразить пользователю итоговую сумму до создания заявки и избежать ошибок (например, из-за слишком маленькой суммы).
Когда все детали проверены и пользователь подтвердил намерение обменять, можно создать заявку с помощью метода create_bid
. Этот запрос регистрирует обмен на стороне AlwaysMoney.
Основные параметры:
direction_id
– ID направления обмена.calc_amount
– сумма обмена.calc_action
– признак суммы: 1
если сумма в валюте «отдаю», 2
если в валюте «получаю».account2
– счет/адрес для получения средств (например, счёт PerfectMoney).cfN
– дополнительные данные (например, cf6
для email).callback_url
– URL вашего сервера для IPN-уведомлений о статусе заявки.Пример 4: Создание заявки (обмен 0.005 BTC → PerfectMoney USD)
<?php
$ch = curl_init("https://alwaysmoney.org/api/userapi/v1/create_bid");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"API-LOGIN: ВАШ_API_LOGIN",
"API-KEY: ВАШ_API_KEY",
"API-LANG: ru"
]);
$orderData = [
"direction_id" => 101,
"calc_amount" => 0.005,
"calc_action" => 1,
"account2" => "U1234567",
"cf6" => "[email protected]",
"callback_url" => "https://example.com/ipn_handler.php"
];
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($orderData));
$response = curl_exec($ch);
curl_close($ch);
$order = json_decode($response, true);
print_r($order);
?>
Пример ответа:
{
"id": 5001,
"hash": "a1b2c3d4",
"status": "created",
"status_title": "Ожидает оплаты",
"psys_give": "Bitcoin",
"psys_get": "PerfectMoney",
"currency_code_give": "BTC",
"currency_code_get": "USD",
"amount_give": 0.005,
"amount_get": 240.00,
"api_actions": {
"instruction": "Отправьте 0.005 BTC на адрес 1ABC... После поступления мы отправим 240 USD на ваш PerfectMoney счёт U1234567.",
"pay_amount": 0.005,
"type": "manual",
"cancel": "api",
"pay": "api"
},
"url": "https://alwaysmoney.org/exchange/5001"
}
Заявка успешно создана. В ответе мы получили id
заявки (5001), её status
(created — ожидает оплаты) и instruction
с подробным описанием, как оплатить заявку. Пользователь должен перевести средства согласно инструкции. Ссылка url
ведёт на страницу заявки на сайте AlwaysMoney.
Instant Payment Notification (IPN) — это механизм уведомления AlwaysMoney вашего сервера о смене статуса заявки. После создания заявки и передачи callback_url
, сервис отправляет POST-запросы на этот URL при изменении статуса заявки.
Например, вы получите уведомление, когда средства поступят от пользователя (заявка оплачена) или когда обмен завершён и деньги отправлены.
Что приходит в IPN:
bid_id
— ID заявкиstatus
— новый статус заявкиaccount1
, account2
— реквизиты оплатыcfN
— дополнительные поля заявкиsign
— цифровая подпись для проверки подлинностиПример IPN-обработчика на PHP (ipn_handler.php):
<?php
// Получаем POST-данные
$postData = $_POST;
$bidId = $postData['bid_id'] ?? null;
$newStatus = $postData['status'] ?? null;
$recipientAccount = $postData['account2'] ?? null;
$receivedSign = $postData['sign'] ?? '';
$secretKey = "ВАШ_API_KEY";
// Вычисляем подпись
$expectedSign = hash('sha256', $bidId . $newStatus . $secretKey);
// Проверяем подпись
if ($receivedSign !== $expectedSign) {
http_response_code(400);
exit("Invalid signature");
}
// Обработка статуса
// Например, обновляем статус заявки в базе данных
// Если $newStatus == 'paid' — заявка оплачена
// Если $newStatus == 'success' — обмен завершён
http_response_code(200);
echo "OK";
?>
Рекомендации по безопасности:
Роли callback_url и clientCallbackUrl:
callback_url
(IPN) — серверный callback для автоматического обновления статуса в вашей системе. Работает независимо от действий пользователя.clientCallbackUrl
— URL для перенаправления пользователя после завершения заявки (например, на страницу с результатом обмена).Совместное использование этих подходов повышает надёжность и улучшает пользовательский опыт: IPN гарантирует актуализацию статуса в системе, а clientCallbackUrl возвращает клиента на ваш сайт с результатом операции.
Следуя этой инструкции, вы сможете интегрировать обменный сервис AlwaysMoney в своё приложение. Мы последовательно:
Все запросы выполняются через POST с использованием ваших API-LOGIN
и API-KEY
. Ответы возвращаются в формате JSON.
Используйте приведённые примеры PHP/cURL как основу, адаптируя их под свои значения API-LOGIN
, API-KEY
, требуемые параметры и логику вашего приложения.
Удачной интеграции!