Прием платежей для бизнеса Без Верификации от AlwaysMoney: Пошаговое Руководство

У вас есть интернет-магазин, лендинг или вы продаёте товары и услуги онлайн, но всё ещё нет удобного способа принимать оплату? С нашим 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.

Шаг 1: Получение направлений обмена (список валют и направлений)

Первым шагом нужно получить перечень валют и доступных направлений обмена. Для этого используются методы 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"
}
]

В ответе содержатся направления обмена для выбранной валюты. Эти данные помогут при создании заявок и последующих запросах.

Шаг 2: Получение информации о конкретном направлении (метод get_direction)

Имея 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 (при необходимости), где описаны данные, которые нужно указать для проведения обмена (например, номер кошелька или ФИО получателя).

Шаг 3: Калькуляция суммы обмена (метод get_calc)

Когда пользователь выбрал направление и ввёл сумму, желательно рассчитать точный результат обмена с учётом актуального курса и возможных комиссий до создания заявки. Для этого используется метод 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 позволяет отобразить пользователю итоговую сумму до создания заявки и избежать ошибок (например, из-за слишком маленькой суммы).

Шаг 4: Создание заявки на обмен (метод create_bid)

Когда все детали проверены и пользователь подтвердил намерение обменять, можно создать заявку с помощью метода 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.

Шаг 5: Отслеживание статуса заявки через IPN (Instant Payment Notification)

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";
?>

Рекомендации по безопасности:

  • Проверяйте цифровую подпись в IPN.
  • Ограничьте приём IPN-запросов по IP-адресам AlwaysMoney (если доступно).
  • Тщательно проверяйте порядок и состав полей для формирования подписи в документации API.

Роли callback_url и clientCallbackUrl:

  • callback_url (IPN) — серверный callback для автоматического обновления статуса в вашей системе. Работает независимо от действий пользователя.
  • clientCallbackUrl — URL для перенаправления пользователя после завершения заявки (например, на страницу с результатом обмена).

Совместное использование этих подходов повышает надёжность и улучшает пользовательский опыт: IPN гарантирует актуализацию статуса в системе, а clientCallbackUrl возвращает клиента на ваш сайт с результатом операции.

Следуя этой инструкции, вы сможете интегрировать обменный сервис AlwaysMoney в своё приложение. Мы последовательно:

  • получили список валют и направлений обмена;
  • узнали детали выбранного направления;
  • рассчитали итоговые суммы обмена;
  • создали заявку на обмен;
  • настроили автоматическое отслеживание статуса заявки через IPN.

Все запросы выполняются через POST с использованием ваших API-LOGIN и API-KEY. Ответы возвращаются в формате JSON.

Используйте приведённые примеры PHP/cURL как основу, адаптируя их под свои значения API-LOGIN, API-KEY, требуемые параметры и логику вашего приложения.

Удачной интеграции!

⇒ Полная API документация ⇐

Выбрать файл
Give
Get
Обмен
дней
часов