miraikumiko.com/content/ru/blog/monero_payment_gateway.md

22 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

+++
title = "Своя платёжка Monero"
description = "Создание собственной анонимной платёжки"
date = 2025-03-19
tags = [
"tech",
"guide",
"monero"
]
+++
Создать собственную платёжную систему Monero очень легко, вот основные шаги:
1. Запускайте `monero-wallet-rpc --tx-notify "script.sh %s"`, где **%s** — это **txid**, который автоматически будет передаваться вашему скрипту в качестве первого аргумента. Ваш скрипт будет отрабатывать с каждой полученной транзакцией.
2. Когда покупатель, например в вашем интернет-магазине, хочет оплатить товар, сайт ему должен выдать адрес на который будут переводиться деньги. Для этого ваше веб-приложение должно выполнить RPC запрос [make_integrated_address](https://docs.getmonero.org/rpc-library/wallet-rpc/#make_integrated_address) к демону которого вы запустили для получения такого адреса **integrated_address** и **payment_id**. Адрес отдаётся покупателю, а идентификатор платежа сохраняется для будущей верификации.
3. После того как деньги будут переведены, ваш скрипт из первого пункта получит **txid** который нужно передать вашему веб-приложению. Оно с помощью RPC метода [get_transfer_by_txid](https://docs.getmonero.org/rpc-library/wallet-rpc/#get_transfer_by_txid) получит **payment_id** и **amount** — идентификатор и сумму платежа.
4. Приложение сверяет идентификатор платежа и полученную сумму, которая измеряется в атомных единицах 1 XMR = 1e12 (atomic-units). Имейте это ввиду при сравнении суммы, об этом написано в начале [документации](https://docs.getmonero.org/rpc-library/wallet-rpc).
Делать одноразовые платежи без внутреннего баланса очень не удобно, поэтому на сайте лучше всего сделать пользовательский баланс в базе данных, который можно будет пополнить в любое время.