feat: Mercuryo gateway, crypto QR deposit, mono products, wallet auto-refresh

- Replace Quickex/Guardarian with Mercuryo (https://mercuryo.io/)
- Add crypto QR code payment option in deposit flow (qrcode package)
- Add is_mono product flag for digital/infinite products
- Mono products: no quantity buttons in bot, always available
- Admin wallet page: auto-refresh balances from blockchain APIs
- Migration 010: add is_mono column to products
- i18n updates for en/de/es
This commit is contained in:
NW
2026-07-08 12:08:13 +01:00
parent 2b30bc4a91
commit f0afada884
24 changed files with 1393 additions and 268 deletions

View File

@@ -53,7 +53,9 @@
"error_loading_districts": "Fehler beim Laden der Bezirke. Bitte versuche es erneut.",
"error_loading_categories": "Fehler beim Laden der Kategorien. Bitte versuche es erneut.",
"error_loading_product": "Fehler beim Laden der Produktdetails. Bitte versuche es erneut.",
"not_found": "Standort nicht gefunden. Zurück zum vorherigen Menü."
"not_found": "Standort nicht gefunden. Zurück zum vorherigen Menü.",
"mono_product": "📦 Digitales Produkt",
"infinite_stock": "∞ Immer verfügbar"
},
"purchase": {
"summary": "🛒 Kaufübersicht:",
@@ -103,7 +105,7 @@
"address": "Adresse",
"network": "Netzwerk",
"deposit": "💳 {{type}} aufladen",
"deposit_via_changenow": "💳 Über ChangeNOW aufladen",
"deposit_via_crypto": "💳 Über Krypto aufladen",
"select_crypto": "🔐 Wähle eine Kryptowährung zum Wallet erstellen:",
"wallet_generated": "✅ Neues Wallet erfolgreich erstellt!",
"wallet_type": "Typ",
@@ -153,22 +155,28 @@
"next_page": "➡️ Weiter",
"wallet_not_found": "Wallet nicht gefunden. Bitte versuche es erneut.",
"wallet_not_found_short": "Wallet nicht gefunden.",
"deposit_changenow_select": "💳 *Einzahlung über ChangeNOW*\n\nWähle das Wallet zum Aufladen:",
"deposit_select_gateway": "💳 *Einzahlung über Krypto*\n\nWähle das Wallet zum Aufladen:",
"deposit_select_amount": "💳 *{{type}} aufladen*\n\nWähle den Betrag (USD) zum Aufladen:",
"deposit_title": "💳 *{{type}} aufladen — €{{amount}}*",
"deposit_instructions_title": "📋 *Schritt-für-Schritt-Anleitung:*",
"deposit_step1": "1⃣ Tippe auf *Adresse kopieren* unten, um deine Wallet-Adresse zu kopieren",
"deposit_step2": "2Tippe auf *ChangeNOW öffnen* \\— Betrag €{{amount}} und Währung {{type}} sind bereits eingestellt",
"deposit_step3": "3⃣ Füge auf ChangeNOW die kopierte Adresse als Empfangswallet ein",
"deposit_step4": "4Gib deine E-Mail ein und erstelle ein Passwort \\— dies ist *gesetzlich vorgeschrieben* für Kartenzahlungen \\(KYC-Verifizierung\\)\\. Deine Daten sind durch ChangeNOWs Sicherheit geschützt",
"deposit_step5": "5⃣ Bezahle mit deiner Bankkarte \\(Visa\\/Mastercard\\)",
"deposit_step2": "2Öffne Mercuryo über den Button unten",
"deposit_step3": "3⃣ Füge die kopierte Adresse als Empfangswallet ein",
"deposit_step4": "4Wähle die richtige Währung: *{{type}}* und den Betrag €{{amount}}",
"deposit_step5": "5⃣ Bezahle mit deiner Bankkarte",
"deposit_step6": "6⃣ Die Kryptowährung wird innerhalb von 5\\-30 Minuten in deinem Wallet eintreffen",
"deposit_your_address": "🔐 *Deine {{type}} Wallet-Adresse:*",
"deposit_important_title": "⚠️ *Wichtig:*",
"deposit_important1": "• Überprüfe die Wallet-Adresse doppelt vor der Bestätigung",
"deposit_important2": "• E-Mail \\+ Passwort auf ChangeNOW ist ein Standard-Verifizierungsschritt für Kartenzahlungen \\— keine Sorge\\, es ist sicher",
"deposit_important3": "• Wenn die Kryptowährung nicht innerhalb von 30 Minuten eintrifft \\— prüfe den Transaktionsstatus in deiner ChangeNOW E-Mail-Bestätigung",
"deposit_open_changenow": "🌐 ChangeNOW öffnen — €{{amount}} → {{type}}",
"deposit_important2": "• Stelle sicher\\, dass du die richtige Währung in Mercuryo auswählst",
"deposit_important3": "• E-Mail \\+ Telefonnummer können von Mercuryo für die Verifizierung verlangt werden",
"deposit_important4": "• Wenn die Kryptowährung nicht innerhalb von 30 Minuten eintrifft \\— kontaktiere den Mercuryo-Support",
"deposit_open_mercuryo": "💳 Mercuryo",
"deposit_pay_crypto": "💰 Mit Krypto zahlen",
"deposit_crypto_title": "💳 *{{type}} über Krypto einzahlen*",
"deposit_crypto_address": "🔐 *Deine {{type}} Wallet-Adresse:*",
"deposit_crypto_instruction": "Sende {{amount}} USD in {{type}} an die Adresse oben. Der QR-Code enthält die Zahlungsadresse.",
"deposit_crypto_scan_qr": "📱 Scanne den QR-Code unten, um die Wallet-Adresse zu erhalten",
"deposit_copy_address": "📋 Adresse kopieren",
"deposit_change_amount": "🔄 Betrag ändern",
"deposit_choose_different": "💸 Anderes Wallet wählen",

View File

@@ -53,7 +53,9 @@
"error_loading_districts": "Error loading districts. Please try again.",
"error_loading_categories": "Error loading categories. Please try again.",
"error_loading_product": "Error loading product details. Please try again.",
"not_found": "Location not found. Returning to previous menu."
"not_found": "Location not found. Returning to previous menu.",
"mono_product": "📦 Digital Product",
"infinite_stock": "∞ Always available"
},
"purchase": {
"summary": "🛒 Purchase Summary:",
@@ -103,7 +105,7 @@
"address": "Address",
"network": "Network",
"deposit": "💳 Deposit {{type}}",
"deposit_via_changenow": "💳 Deposit via ChangeNOW",
"deposit_via_crypto": "💳 Deposit via Crypto",
"select_crypto": "🔐 Select cryptocurrency to generate wallet:",
"wallet_generated": "✅ New wallet generated successfully!",
"wallet_type": "Type",
@@ -153,22 +155,28 @@
"next_page": "➡️ Next",
"wallet_not_found": "Wallet not found. Please try again.",
"wallet_not_found_short": "Wallet not found.",
"deposit_changenow_select": "💳 *Deposit via ChangeNOW*\n\nSelect the wallet you want to top up:",
"deposit_select_gateway": "💳 *Deposit via Crypto*\n\nSelect the wallet you want to top up:",
"deposit_select_amount": "💳 *Deposit {{type}}*\n\nSelect the amount (USD) you want to deposit:",
"deposit_title": "💳 *Deposit {{type}} — €{{amount}}*",
"deposit_instructions_title": "📋 *Step\\-by\\-step instructions:*",
"deposit_step1": "1⃣ Tap *Copy Address* below to copy your wallet address",
"deposit_step2": "2Tap *Open ChangeNOW* \\— the amount €{{amount}} and currency {{type}} are already set",
"deposit_step3": "3On ChangeNOW\\, paste the copied address as the receiving wallet",
"deposit_step4": "4Enter your email and create a password when prompted \\— this is *required by law* for card payments \\(KYC verification\\)\\. Your data is protected by ChangeNOW\\'s security",
"deposit_step5": "5Pay with your bank card \\(Visa\\/Mastercard\\)",
"deposit_step2": "2Open Mercuryo via the button below",
"deposit_step3": "3Paste the copied address as the receiving wallet",
"deposit_step4": "4Select the correct currency: *{{type}}* and the amount €{{amount}}",
"deposit_step5": "5Complete the payment with your bank card",
"deposit_step6": "6⃣ Crypto will arrive in your wallet within 5\\-30 minutes",
"deposit_your_address": "🔐 *Your {{type}} wallet address:*",
"deposit_important_title": "⚠️ *Important:*",
"deposit_important1": "• Double\\-check the wallet address before confirming",
"deposit_important2": "• Email \\+ password on ChangeNOW is a standard verification step for card payments \\— don\\'t worry\\, it\\'s safe",
"deposit_important3": "• If crypto doesn\\'t arrive within 30 min \\— check the transaction status in your ChangeNOW email confirmation",
"deposit_open_changenow": "🌐 Open ChangeNOW — €{{amount}} → {{type}}",
"deposit_important2": "• Make sure you select the correct currency in Mercuryo",
"deposit_important3": "• Email \\+ phone may be required by Mercuryo for verification",
"deposit_important4": "• If crypto doesn't arrive within 30 min \\— contact Mercuryo support",
"deposit_open_mercuryo": "💳 Mercuryo",
"deposit_pay_crypto": "💰 Pay with Crypto",
"deposit_crypto_title": "💳 *Deposit {{type}} via Crypto*",
"deposit_crypto_address": "🔐 *Your {{type}} wallet address:*",
"deposit_crypto_instruction": "Send {{amount}} USD in {{type}} to the address above. The QR code contains the payment address.",
"deposit_crypto_scan_qr": "📱 Scan the QR code below to get the wallet address",
"deposit_copy_address": "📋 Copy Address",
"deposit_change_amount": "🔄 Change Amount",
"deposit_choose_different": "💸 Choose Different Wallet",

View File

@@ -53,7 +53,9 @@
"error_loading_districts": "Error al cargar distritos. Inténtalo de nuevo.",
"error_loading_categories": "Error al cargar categorías. Inténtalo de nuevo.",
"error_loading_product": "Error al cargar detalles del producto. Inténtalo de nuevo.",
"not_found": "Ubicación no encontrada. Volviendo al menú anterior."
"not_found": "Ubicación no encontrada. Volviendo al menú anterior.",
"mono_product": "📦 Producto Digital",
"infinite_stock": "∞ Siempre disponible"
},
"purchase": {
"summary": "🛒 Resumen de compra:",
@@ -103,7 +105,7 @@
"address": "Dirección",
"network": "Red",
"deposit": "💳 Depositar {{type}}",
"deposit_via_changenow": "💳 Depositar vía ChangeNOW",
"deposit_via_crypto": "💳 Depositar vía Cripto",
"select_crypto": "🔐 Selecciona criptomoneda para generar billetera:",
"wallet_generated": "✅ ¡Nueva billetera generada exitosamente!",
"wallet_type": "Tipo",
@@ -153,22 +155,28 @@
"next_page": "➡️ Siguiente",
"wallet_not_found": "Billetera no encontrada. Inténtalo de nuevo.",
"wallet_not_found_short": "Billetera no encontrada.",
"deposit_changenow_select": "💳 *Depositar vía ChangeNOW*\n\nSelecciona la billetera que quieres recargar:",
"deposit_select_gateway": "💳 *Depositar vía Cripto*\n\nSelecciona la billetera que quieres recargar:",
"deposit_select_amount": "💳 *Depositar {{type}}*\n\nSelecciona la cantidad (USD) que quieres depositar:",
"deposit_title": "💳 *Depositar {{type}} — €{{amount}}*",
"deposit_instructions_title": "📋 *Instrucciones paso a paso:*",
"deposit_step1": "1⃣ Toca *Copiar dirección* abajo para copiar tu dirección de billetera",
"deposit_step2": "2Toca *Abrir ChangeNOW* \\— la cantidad €{{amount}} y la moneda {{type}} ya están configuradas",
"deposit_step3": "3En ChangeNOW\\, pega la dirección copiada como billetera receptora",
"deposit_step4": "4Ingresa tu correo y crea una contraseña cuando se solicite \\— esto es *requerido por ley* para pagos con tarjeta \\(verificación KYC\\)\\. Tus datos están protegidos por la seguridad de ChangeNOW",
"deposit_step5": "5⃣ Paga con tu tarjeta bancaria \\(Visa\\/Mastercard\\)",
"deposit_step2": "2Abre Mercuryo con el botón de abajo",
"deposit_step3": "3Pega la dirección copiada como billetera receptora",
"deposit_step4": "4Selecciona la moneda correcta: *{{type}}* y la cantidad €{{amount}}",
"deposit_step5": "5⃣ Paga con tu tarjeta bancaria",
"deposit_step6": "6⃣ Las criptomonedas llegarán a tu billetera en 5\\-30 minutos",
"deposit_your_address": "🔐 *Tu dirección de billetera {{type}}:*",
"deposit_important_title": "⚠️ *Importante:*",
"deposit_important1": "• Verifica dos veces la dirección de la billetera antes de confirmar",
"deposit_important2": "• Correo \\+ contraseña en ChangeNOW es un paso de verificación estándar para pagos con tarjeta \\— no te preocupes\\, es seguro",
"deposit_important3": "• Si las criptomonedas no llegan en 30 min \\— verifica el estado de la transacción en tu confirmación por correo de ChangeNOW",
"deposit_open_changenow": "🌐 Abrir ChangeNOW — €{{amount}} → {{type}}",
"deposit_important2": "• Asegúrate de seleccionar la moneda correcta en Mercuryo",
"deposit_important3": "• Correo \\+ teléfono pueden ser requeridos por Mercuryo para verificación",
"deposit_important4": "• Si las criptomonedas no llegan en 30 min \\— contacta al soporte de Mercuryo",
"deposit_open_mercuryo": "💳 Mercuryo",
"deposit_pay_crypto": "💰 Pagar con Cripto",
"deposit_crypto_title": "💳 *Depositar {{type}} vía Cripto*",
"deposit_crypto_address": "🔐 *Tu dirección de billetera {{type}}:*",
"deposit_crypto_instruction": "Envía {{amount}} USD en {{type}} a la dirección de arriba. El código QR contiene la dirección de pago.",
"deposit_crypto_scan_qr": "📱 Escanea el código QR de abajo para obtener la dirección de la billetera",
"deposit_copy_address": "📋 Copiar dirección",
"deposit_change_amount": "🔄 Cambiar cantidad",
"deposit_choose_different": "💸 Elegir otra billetera",