NextCoin платёжный шлюз

Принимайте оплату
монетой NXT

Перевод доходит за шесть секунд и стоит доли копейки. Ни эквайринга, ни договора, ни процента с оборота. Всё, что нужно от вас - адрес кошелька и тридцать строк кода.

6секунд на перевод
0,001NXT комиссия сети
0%берём с оборота
30строк на подключение

Как это работает

1

Заведите кошелёк

Адрес - это всё, что от вас нужно. Ключ остаётся у вас, нам он не нужен и мы его не видим. Кошелёк создаётся за минуту на nxt.stackworks.ru.

2

Выставьте счёт

К сумме заказа добавьте уникальный хвост в младших разрядах. По нему вы отличите одну оплату от другой: поля для комментария в переводе нет, и сумма - единственная метка.

3

Дождитесь прихода

Опрашивайте адрес раз в несколько секунд и ищите перевод на точную сумму. Одна функция из нашей библиотеки, зависимостей нет.

Попробуйте прямо здесь

Соберём счёт, покажем ссылку и код. Это настоящая сеть, а не песочница: если оплатить, монеты действительно уйдут.

Здесь появится код

Подключение

Библиотека на стандартной библиотеке Python, зависимостей нет. Скачайте два файла и положите рядом со своим кодом.

Приём оплаты, целиком
import time
import nextcoin_merchant as nxt

ADDR = "nxt1ваш_адрес_для_приёма"
seen = set()          # засчитанные хэши, держите их в своей базе

def выставить_счёт(цена_в_монетах, заказ):
    # Уникальный хвост в младших разрядах: по нему отличим одну
    # оплату от другой. Поля для комментария в переводе нет.
    units = nxt.to_base_units(цена_в_монетах) + (заказ % 1000)
    return units

def ждать_оплату(units, минут=30):
    край = time.time() + минут * 60
    while time.time() < край:
        оплата = nxt.find_payment(ADDR, units, seen=seen)
        if оплата:
            seen.add(оплата.hash)     # сохраните в базу, а не в память
            return оплата
        time.sleep(6)                 # блок выходит раз в шесть секунд
    return None

Три вещи, на которых теряют деньги

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

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

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

Что нужно знать

Единицы

Шесть знаков после запятой, внутри всегда целые базовые единицы, 1 NXT это 1 000 000. Никаких дробных чисел с плавающей точкой: ноль целых одна десятая плюс две десятых в них не даёт три десятых.

Адреса

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

Подтверждения

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

Курс

Цену держите в своей валюте и переводите в NXT в момент выставления счёта, а курс закрепляйте на срок жизни счёта. Курс отдаёт /rate, там же признак протухания внешних источников.