Как установить, развернуть и настроить BTCPay Server
Подробный пошаговый мануал о том, как поставить на VPS или сервер BTCPay Server. Сама система Ubuntu 20 без панели управления. Итак, мы уже имеем готовый настроенный сервер. Как настроить ВПС с нуля я писал в этой статье. Правда под платёжку рекомендуется ВПС с не менее 4 ядра и 4 ОЗУ, рекомендую брать по низкой цене вот тут, тарифа low-B хватает сполна. Для выполнения команд у нас должен стоять Putty.

Ставим дополнительные модули и Докер (все команды вводятся построчно):
sudo apt update
sudo apt-get install curl
sudo apt install -y nginx
sudo apt-get install gnupg
sudo apt-get install ca-certificates
sudo apt-get install lsb-release
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce

Проверяем работоспособность докера - он должен быть Active (для выхода жмём ctrl+c):
sudo systemctl status docker

Добавляем Докер в автозагрузку:
sudo systemctl enable docker

Ставим Redis:
sudo apt-get update
sudo apt-get install redis-server

Скачиваем БТЦПэй Сервер:
sudo su -
sudo apt install git
cd ~
git clone https://github.com/btcpayserver/btcpayserver-docker.git
cd ~/btcpayserver-docker/

Настраиваем BTCPAY (замените btcpay.EXAMPLE.com на свой домен)
export BTCPAY_HOST="btcpay.EXAMPLE.com"
export NBITCOIN_NETWORK="mainnet"
export BTCPAYGEN_CRYPTO1="btc"
export BTCPAYGEN_ADDITIONAL_FRAGMENTS="opt-save-storage-xs"
export BTCPAYGEN_REVERSEPROXY="nginx"
export BTCPAYGEN_LIGHTNING="clightning"
export BTCPAY_ENABLE_SSH=true


Чтобы проверить значение переменной среды, вы можете использовать команду echo. Например, echo $BTCPAY_HOST. Затем выполните следующую команду, чтобы установить и запустить контейнер BTCPay Docker.

. ./btcpay-setup.sh -i

Затем проверяем статус службы, должен быть active:

sudo systemctl status btcpayserver.service

Редактируем порт:
nano ~/btcpayserver-docker/Generated/docker-compose.generated.yml

И добавляем порт:
 ports:
    - "49392:49392"

Будет так:
https://i.yapx.cc/Vrkra.png

Перезагружаем службу и проверяем:
sudo systemctl restart btcpayserver
sudo docker ps

Должен прописаться порт:
CONTAINER ID   IMAGE                              COMMAND                  CREATED          STATUS          PORTS                      
cf182b7d5e6f   btcpayserver/btcpayserver:1.6.11   "/app/docker-entrypo…"   14 minutes ago   Up 14 minutes   0.0.0.0:49392->49392/tcp


Создаём новый конфиг для Нгиникс:
sudo nano /etc/nginx/conf.d/btcpay-server.conf

Добавляем в него код, заменив домен btcpay.example.com на свой:

map $http_x_forwarded_proto $proxy_x_forwarded_proto {
  default $http_x_forwarded_proto;
  ''      $scheme;
}
map $http_x_forwarded_port $proxy_x_forwarded_port {
  default $http_x_forwarded_port;
  ''      $server_port;
}
map $http_upgrade $proxy_connection {
  default upgrade;
  '' close;
}
server_names_hash_bucket_size 128;
server_tokens off;
map $scheme $proxy_x_forwarded_ssl {
  default off;
  https on;
}

gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
log_format vhost '$host $remote_addr - $remote_user [$time_local] '
                 '"$request" $status $body_bytes_sent '
                 '"$http_referer" "$http_user_agent"';
access_log off;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl;
proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;
proxy_buffer_size          128k;
proxy_buffers              4 256k;
proxy_busy_buffers_size    256k;
client_header_buffer_size 500k;
large_client_header_buffers 4 500k;
http2_max_field_size       500k;
http2_max_header_size      500k;
proxy_set_header Proxy "";

server {
        server_name btcpay.example.com;
        listen 80;

        access_log /var/log/nginx/btcpay.access;
        error_log /var/log/nginx/btcpay.error;
        client_max_body_size 100M;

        location / {
                proxy_pass http://127.0.0.1:49392;
        }
        location /rtl/ {
                proxy_pass http://127.0.0.1:3000/rtl/;
        }
}

Сохраняем и перезапускаем Nginx:
sudo nginx -t
sudo systemctl reload nginx


Далее можно переходить на ваш сайт и приступать к регистрации. Подразумевается что SSL-сертификат используется от Cloudflare.

Мы попадаем на страницу регистрации администратора. Вводим и записываем данные админа. После этого рега для новых юзеров будет недоступна.
https://i.yapx.ru/VrnCY.png


После регистрации в правом нижнем углу вы можете проверить статус синхронизации узла Биткойн. Рекомендуется дождаться завершения этого процесса, прежде чем делать что-либо еще на панели инструментов сервера BTCPay.

Далее можно создавать магазин и начинать приём средств. Не забудьте настроить магазин в пункте Settings - выберите лого, укажите максимальное время на оплату и так далее. Для создания формы оплаты вам необходимо использовать API BTCPay Server. Для начала вам необходимо получить токен API для вашего магазина. Для этого зайдите в раздел «Магазины» в административной панели BTCPay Server, выберите нужный магазин и нажмите на кнопку «Показать секреты». Скопируйте значение «Токен API». Далее создадим форму оплаты. Для этого создайте новый файл с расширением .php и вставьте следующий код:

<!DOCTYPE html>
<html>
<head>
    <title>Оплата через BTCPay Server</title>
</head>
<body>
    <form method="post" action="https://your-btcpay-server-url.com/api/v1/invoices">
        <input type="hidden" name="token" value="ваш токен API">
        <input type="hidden" name="storeId" value="идентификатор вашего магазина">
        <input type="hidden" name="priceCurrency" value="USD">
        <input type="hidden" name="notificationUrl" value="адрес для оповещения об оплате">
        <input type="hidden" name="redirectURL" value="редирект на страницу успеха после оплаты">
        <label>Сумма (USD):</label>
        <input type="number" name="price">
        <button type="submit">Оплатить</button>
    </form>
</body>
</html>

В этом коде мы создаем форму с полем для ввода суммы оплаты в USD и кнопкой для отправки формы. Мы также включаем скрытые поля, которые передают токен API, идентификатор магазина, валюту оплаты (USD) и адрес для оповещения об оплате. После отправки формы пользователь будет перенаправлен на страницу оплаты на BTCPay Server. Когда платеж будет выполнен, BTCPay Server отправит уведомление на адрес, указанный в поле «notificationUrl». Вы можете обработать это уведомление и выполнить нужные действия, например, обновить статус заказа в вашей базе данных. Это можно сделать, например, с помощью следующего кода на PHP:

<?php
$raw_post_data = file_get_contents('php://input');
$data = json_decode($raw_post_data, true);

// получаем идентификатор заказа
$orderId = $data['orderId'];

// получаем статус платежа
$status = $data['status'];

// обновляем статус заказа в базе данных
if ($status === 'complete') {
    // платеж завершен успешно
    // обновляем статус заказа в базе данных
} elseif ($status === 'expired') {
    // платеж истек
    // обновляем статус заказа в базе данных
} else {
    // платеж не выполнен
    // обновляем статус заказа в базе данных
}
?>

В этом коде мы сначала получаем идентификатор заказа и статус платежа из уведомления BTCPay Server. Затем мы обновляем статус заказа в нашей базе данных в зависимости от статуса платежа. В данном случае мы обрабатываем только три возможных статуса: успешно завершенный платеж, истекший платеж и невыполненный платеж, но вы можете настроить эту логику в соответствии со своими потребностями.

Надеюсь, Вам помогла данная статья! :sm3:

Не забываем про:
Канал в Телеграм: @crabs_channel
Чат в Телеграм: @crabsmoney
Канал магазина: @crabs_money_shop
Группа для реклам: @crabs_ads


Категория: Прочее Сайты, шаблоны, CMS
Рейтинг поста: 1
Дата добавления: 2 марта 2023 в 17:49
Комментариев: 0
Автор: MrCrabs
Рейтинг автора: 196.39
Просмотров всего: 476
Просмотров за неделю: 14
Комментариев нет
Авторизуйтесь для добавления комментария