Все провайдеры

Monero

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

Что вам нужно

ПолеЧто оно делает
URL эндпоинта минтаПубличный маршрут вашего узла для создания адресов. Мы вызываем его, чтобы получить свежий адрес на каждый заказ. Не секретный.
Секрет вебхукаОбщий секрет, которым подписывает ваш наблюдатель и который мы проверяем. Он никогда не может коснуться вашего кошелька. Секретный.

Этот вариант для тех, кто хочет держать собственный узел. Вы также держите узел Monero, кошелёк только для просмотра и небольшой постоянно работающий наблюдатель на собственной машине. Это руководство проходит через всё это. Если вы предпочли бы ничего не держать, подключите вместо этого размещённый крипто-сервис.

Money flow

Money

  1. Buyer

    Taps your Coin Moebius Buy Button and pays from their own wallet.

  2. Your product page

    Your Coin Moebius Buy Button asks Coin Moebius to start a checkout.

  3. Coin Moebius Messages only

    Gets a fresh address from your server and shows it to the buyer.

  4. Blockchain

    Carries the coins from the buyer straight to you.

    • Monero
    • Zano
    • Freedom Dollar
    • Bitcoin
    • Bitcoin Cash
  5. Your wallet

    Receives the coins.

  6. Your server

    Sees the payment land in your wallet and tells Coin Moebius the sale is paid. Your keys and balance never leave your server.

    Coin Moebius dashboardSale shows as paid.
  • No buyer data

    Card numbers never reach us. Buyer names, addresses and contact details are stripped before a sale is saved.

  • No cut of your sales

    You pay a flat plan price. We never take a percentage of what you sell.

Почему мы спрашиваем каждое поле

URL эндпоинта минта

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

Секрет вебхука

Ваш наблюдатель сообщает нам «этот заказ оплачен», отправляя подписанное сообщение. Этот общий секрет позволяет нам подтвердить, что сообщение подлинно пришло от вашего наблюдателя, так что никто не подделает событие «оплачено». Он ничего не может прочитать и ничего не может двинуть.

Настройка

  1. Что вы будете держать

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

    • Узел Monero (monerod) и кошелёк только для просмотра (monero-wallet-rpc), оба приватные.
    • Эндпоинт минта: один небольшой публичный маршрут, выдающий свежий адрес на каждый заказ.
    • Наблюдатель: крошечная постоянно работающая программа, которая следит за вашим кошельком и сообщает нам, когда платёж приходит.
  2. Создайте кошелёк только для просмотра

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

    monero-wallet-cli --generate-from-view-key ~/monero/view-only

    Он запрашивает ваш основной адрес и ваш приватный ключ просмотра. Никогда не вводите ваш seed или ключ трат, держите их на отдельной машине. Он записывает view-only и view-only.keys; задайте пароль и сохраните его в файле (wallet.password, рядом с кошельком) для следующего шага.

  3. Запустите ваш узел Monero

    Демон синхронизируется и держит блокчейн. Запустите его как сервис (systemd или Docker), чтобы он перезапускался сам. Его RPC слушает на 127.0.0.1:18081.

    monerod --data-dir ~/.bitmonero --prune-blockchain --restricted-rpc

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

  4. Запустите wallet RPC

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

    monero-wallet-rpc \
      --wallet-file ~/monero/view-only \
      --password-file ~/monero/wallet.password \
      --rpc-bind-ip 127.0.0.1 --rpc-bind-port 18083 \
      --daemon-address 127.0.0.1:18081 --trusted-daemon \
      --disable-rpc-login

    Никогда не раскрывайте wallet RPC в публичный интернет; привязывайте его к localhost или приватной сети. --disable-rpc-login допустим, только потому что он только на localhost; используйте --rpc-login, если он доступен откуда-либо ещё. Публичен только эндпоинт минта ниже.

  5. Установите пакет Coin Moebius Monero

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

    npm install @aquarian-metals/coin-moebius-monero
  6. Сгенерируйте ваш секрет вебхука

    Сильное случайное значение, которое подписывает и проверяет вебхук. Два способа создать его на ваш выбор: нажмите «Сгенерировать», когда добавляете провайдера в панели (выполняется в вашем браузере, никогда на наших серверах), или запустите команду ниже сами. В любом случае вставьте одно и то же значение и в ваш наблюдатель, и в панель.

    openssl rand -hex 32
  7. Поднимите эндпоинт минта

    Один публичный POST-маршрут, фасад вашего кошелька. Он использует createMoneroCreator из пакета, чтобы создавать свежий адрес на каждый заказ. Это единственное, что вы раскрываете в интернет, и раскрывать это безопасно: он возвращает адрес для приёма и не двигает денег.

    // POST /coin-moebius/monero/mint
    import { createMoneroCreator } from '@aquarian-metals/coin-moebius-monero/server';
    
    const mint = createMoneroCreator({
      walletRpcUrl: 'http://127.0.0.1:18083/json_rpc',
      store: myStore,
      xmrPerUnit: async (cur) => (cur === 'XMR' ? 1 : await myPriceFeed(cur)),
    });
    // return mint({ productId, amount, currency, metadata }) as JSON

    Вы выбираете, откуда берутся цены. Coin Moebius никогда не вызывает ценовой оракул.

  8. Запустите наблюдатель и направьте его на нас

    Наблюдатель, это постоянно работающая программа, которая каждые несколько секунд проверяет ваш кошелёк и подписывает нам сообщение, когда платёж подтверждается. Задайте его URL вебхука на адрес вашего проекта (ниже), а секрет, на сгенерированное вами значение. Запустите его рядом с вашим кошельком, под systemd или Docker.

    import { createMoneroIndexer } from '@aquarian-metals/coin-moebius-monero/server';
    
    const watcher = createMoneroIndexer({
      walletRpcUrl: 'http://127.0.0.1:18083/json_rpc',
      store: myStore,
      webhookUrl: process.env.MONERO_WEBHOOK_URL,   // your Coin Moebius URL, below
      hmacSecret: process.env.MONERO_HMAC_SECRET,   // the secret you generated
      requiredConfirmations: 10,
    });
    watcher.start();

    Он по замыслу «догоняющий». Если он отключён на какое-то время, следующий запуск видит пропущенные платежи и сообщает нам тогда. Домашний сервер подойдёт; идеальный аптайм не нужен.

  9. Ваш URL вебхука

    Задайте webhookUrl наблюдателя на адрес вашего проекта. Id вашего проекта в настройках проекта в панели.

    https://api.coinmoebius.com/webhook/monero/<your project id>
  10. Подключите в панели управления

    Добавить провайдера, выберите «Быть собственным провайдером», затем Monero. Вставьте URL эндпоинта минта и секрет вебхука. Это всё, что мы храним, и ни одно из значений не может коснуться вашего кошелька.

После подключения

Для самостоятельно размещённого узла песочницы нет, так что ваш первый небольшой реальный платёж, это тест:

  1. Создайте товар и поставьте кнопку покупки на страницу (подойдёт локальный HTML-файл), направленную на ваш проект.
  2. Оплатите небольшую сумму Monero из собственного кошелька.
  3. Дождитесь подтверждений. Monero занимает около двадцати минут до полного подтверждения, по замыслу.
  4. Откройте вкладку «Транзакции». Когда новая строка достигнет succeeded, ваш эндпоинт минта, наблюдатель и секрет все работают от начала до конца.

Решение проблем

Оформление падает сразу же.

Мы не смогли достучаться до вашего эндпоинта минта. Подтвердите, что это публичный URL https и что ваш узел онлайн. Панель показывает это как сообщение о доступности при сохранении.

Покупатель заплатил, но заказ остаётся в ожидании.

Либо наблюдатель не запущен, либо его секрет не совпадает. Подтвердите, что процесс наблюдателя поднят и что его MONERO_HMAC_SECRET, это точное значение, которое вы вставили в панель.

Платёж появился не сразу.

Это нормально. Monero подтверждается за несколько блоков; наблюдатель ждёт десять подтверждений (около двадцати минут), прежде чем сообщить об успехе.

Полезно знать

Держите кошелёк только для просмотра на «горячей» машине. Наблюдателю нужно лишь видеть входящие платежи. Держите ваш ключ трат на отдельной, офлайн-машине и выводите средства оттуда.

Никогда не раскрывайте wallet RPC. Публичен только эндпоинт минта. Всегда привязывайте wallet RPC к localhost или приватной сети.

Простой обходится дёшево. Наблюдатель догоняет после простоя и сообщает о пропущенных платежах. Ничего не теряется.

Ротация секрета. Генерируйте новый секрет когда угодно, затем вставьте его и в наблюдатель, и в панель.

Monero circular economy

Вопросы? Join our Discord

Готовы подключить провайдера?

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