Приём платежей — криптовалюта и карта

Клиент платит чем хочет. Вы получаете то, что заказали.

Покупатель выбирает на кассе любую монету и сеть — биткоин, эфир, USDT, USDC — или платит обычной картой. Вам приходит та валюта, которую вы назначили. Ссылка на оплату ставится на сайт без единой строки кода; API нужен, только если сумма берётся из корзины.

1,5% с платежа. Кабинет открывается сразу, приём — после проверки.

  1. 01ПокупательПлатит монетой или картой на вашей кассе
  2. 02СетьПеревод виден, набираются подтверждения
  3. 03ОбменПолученное меняется на вашу валюту
  4. 04Ваш балансСостояние settled — можно отгружать

01 / Подключение

Два пути, и они не исключают друг друга

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

Без кода

Ценник

Создаёте в кабинете, получаете ссылку, ставите кнопкой на сайт. Цена фиксированная или та, которую покупатель вводит сам.

Ценник бывает многоразовым — для товара в каталоге, и одноразовым — для счёта конкретному человеку. Одноразовый закрывается в тот момент, когда первый покупатель переходит к оплате: двое, открывшие ссылку одновременно, не заплатят дважды за один товар.

<a href="https://api.priem.io/pay/ВАШ-ЦЕННИК">
  Оплатить криптовалютой
</a>

Когда сумма из корзины

API

Ваш сервер создаёт платёж на нужную сумму и ведёт покупателя на полученную ссылку. Проект определяется ключом, поэтому в теле его указывать не нужно.

POST https://api.priem.io/v1/payments
Authorization: Bearer priem_…

{
  "amount": "49.00",
  "currency": "USD",
  "idempotencyKey": "zakaz-12345"
}

Ключ идемпотентности берите из номера заказа, а не из времени и не случайный. Повторный запрос с тем же ключом вернёт тот же платёж вместо второго счёта. Ключ из Date.now() не защищает ни от чего.

Оплата картой работает на той же кассе и настраивать её не нужно. Покупатель покупает биткоин у провайдера, тот приходит прямо на адрес счёта, платёж проводится как обычный.

Минимум для карты — 10 долларов. Ниже порога кнопка не показывается, и покупателю сказано почему.

02 / Деньги

Сколько это стоит — полностью

Комиссий три, и только одна наша. Две остальные берёт сеть, и мы показываем их здесь, а не после подключения.

Нам, с каждого платежа

1,5%

Удерживается при зачислении и видна в коллбэке отдельным полем.

Сети, при выводе

≈1 USDT

Фиксированно в TRON, платите вы. Копить и выводить разом дешевле, чем по платежу.

Сети, при оплате

Платит покупатель

Сверх вашего ценника. Не зависит от суммы, поэтому на мелком чеке заметна.

Надбавка сети к чеку, которую видит покупатель до подтверждения
Чем платитЧек $5Чек $30Чек $100
USDT в BSC+1,3%+0,5%+0,3%
USDT в TON+9,3%+1,8%+0,8%
USDT в TRON+16,3%+3,0%+1,1%
USDT в Ethereum+19,5%+3,5%+1,3%

Оговорка Ниже 10 долларов продавать через криптовалюту тяжело. На трёх долларах даже недорогая сеть съедает заметную долю, а TRON и Ethereum добавляют четверть цены. Если у вас мелкие тарифы — продавайте их пакетами. Мы говорим это до подключения, а не после первых брошенных заказов.

03 / Разработчикам

Интеграция на один вечер

Создать платёж, дождаться коллбэка, проверить подпись, отгрузить по settled. Больше ничего не требуется.

Обработчик коллбэка · Node
// сырое тело, до разбора JSON:
// подпись считается по байтам
const expected = createHmac('sha256', secret)
  .update(`${timestamp}.${rawBody}`)
  .digest('hex');

if (!timingSafeEqual(a, b)) return res.sendStatus(401);

markOrderPaid(event.paymentId, event.creditedAmount);
res.sendStatus(200);
  • Подпись — HMAC-SHA256 от {timestamp}.{тело}, заголовки X-Priem-Timestamp и X-Priem-Signature.
  • Повторы — семь попыток за полторы суток: через минуту, 5 минут, 30 минут, 2 часа, 6 часов и сутки.
  • ОпросGET /v1/payments/{id} отдаёт актуальное состояние всегда. Полагаться на один коллбэк не стоит.

Состояния платежа

  • createdЗаведён, монета ещё не выбрана
  • awaiting_paymentМонета выбрана, ждём перевода
  • onramp_pendingПлатит картой, покупаем крипту
  • detectedПеревод виден в сети
  • confirmingНабираются подтверждения
  • convertingМеняем на вашу валюту
  • settledДеньги на вашем балансе
  • underpaidПрислали меньше нужного
  • expiredСрок счёта вышел
  • refundedВозвращён покупателю

Отгружайте заказ по settled и только по нему.

04 / Надёжность

Что происходит, пока вы торгуете

Работа, которую не видно из кабинета, но из-за отсутствия которой теряют деньги.

Ночная сверка

Каждую ночь мы сходимся: всё, что мы должны мерчантам, против того, что фактически лежит у провайдера. Недостача останавливает выплаты автоматически — до выяснения, а не до утра.

Сутки на адрес выплаты

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

Недоплата за наш счёт

Курс дрогнул, кошелёк удержал своё — пришло чуть меньше. В пределах допуска (по умолчанию 1%) платёж всё равно закрывается, и вы получаете полную сумму ценника. Разницу берём мы.

Журнал и запирание

Входы, ключи, адреса, выплаты и ценники пишутся в журнал по сквозному номеру. Пять неудачных попыток входа запирают учётную запись на пятнадцать минут.

05 / До того, как вы решите

Что стоит знать заранее

Приём включается не сразу
Кабинет открывается в момент регистрации, но принимать платежи можно после проверки бизнеса — она занимает от нескольких часов. Это не бюрократия: деньги ваших клиентов идут через наш счёт у провайдера, и отвечать за то, кто через нас торгует, приходится нам. Настроить проект, ключи, коллбэк и ценники можно сразу; приём включится сам, без действий с вашей стороны.
Сеть у адреса выплаты обязательна
USDT в TRON и USDT в BSC — разные адреса. Отправка не в ту сеть теряет деньги безвозвратно, и вернуть их не может никто.
Первый боевой платёж делайте на $20–30
Не на два доллара: на такой сумме комиссия сети даёт около сорока процентов накрутки, и вы решите, что всё сломано. Сломано не будет — просто фиксированная комиссия на мелком чеке выглядит дико.
Ключ API показывается один раз
Восстановить его неоткуда — только выпустить новый и отозвать старый. Держите его на сервере: в браузере им создают платежи от вашего имени.

Приём.
Как слышно?

Регистрация занимает минуту, настройка — около получаса, и почти всё это время уйдёт на обработчик коллбэка.