deploy change, update token system, fix abuses and add admin verify

This commit is contained in:
2026-05-26 12:50:25 +07:00
parent 1ef93c2025
commit 26d6f2db8a
25 changed files with 416 additions and 557 deletions
+11 -9
View File
@@ -18,14 +18,14 @@ pub struct BillingService {
// Добавляем Clone вручную, так как dyn Traits не поддерживают derive(Clone) легко
impl Clone for BillingService {
fn clone(&self) -> Self {
// ВАЖНО: В реальном проекте провайдеры стоит обернуть в Arc,
// но для простоты структуры мы пересоздаем их при клонировании сервиса
// Снова читаем из env при клонировании
let master_wallet = std::env::var("TON_MASTER_WALLET")
.expect("КРИТИЧЕСКАЯ ОШИБКА: TON_MASTER_WALLET не задан в .env!");
let mut providers: HashMap<&'static str, Box<dyn PaymentProvider>> = HashMap::new();
providers.insert(
"TON",
Box::new(super::providers::ton::TonProvider {
master_wallet: "UQ_MASTER_WALLET_ADDRESS".into(),
}),
Box::new(super::providers::ton::TonProvider { master_wallet }),
);
Self {
@@ -37,12 +37,14 @@ impl Clone for BillingService {
impl BillingService {
pub fn new(repo: Arc<dyn AppRepository>) -> Self {
// Читаем адрес из переменной окружения
let master_wallet = std::env::var("TON_MASTER_WALLET")
.expect("КРИТИЧЕСКАЯ ОШИБКА: TON_MASTER_WALLET не задан в .env!");
let mut providers: HashMap<&'static str, Box<dyn PaymentProvider>> = HashMap::new();
providers.insert(
"TON",
Box::new(super::providers::ton::TonProvider {
master_wallet: "UQ_MASTER_WALLET_ADDRESS".into(),
}),
Box::new(super::providers::ton::TonProvider { master_wallet }),
);
Self { repo, providers }
@@ -135,7 +137,7 @@ impl BillingService {
// 3. Провайдер лезет в блокчейн и проверяет транзакцию
let is_valid = provider
.verify_payment(external_tx_id, invoice.amount)
.verify_payment(external_tx_id, invoice.amount, &invoice.id.to_string()) // <--- ПЕРЕДАЕМ ID
.await?;
if !is_valid {