fix(bot): remove redundant deposit amount step, add Visa/MC label, Mercuryo auth note, enforce product completeness

- Remove deposit amount-selection step; deposit_wallet_<TYPE> now routes directly to instruction
- Add VISA / Mastercard text to Mercuryo card button (i18n en/es/de)
- Add deposit_important5: Mercuryo 1-payment-without-auth + top-up-reserve warning
- Admin validation: description + photo required on product create/update (products.js, catalogProducts.js)
- Cleanup orphan uploaded files on validation failure (catalogProducts.js)
- Bot guards: fallback to products.no_description / products.no_photo for incomplete products
- Add vitest + 7 purchase edge-case tests (src/__tests__/userProductHandler.test.js)
- Bump version to v1.2.1
This commit is contained in:
NW
2026-07-18 14:28:26 +01:00
parent b6eb42ccfc
commit 776d0e8552
17 changed files with 344 additions and 103 deletions

View File

@@ -55,7 +55,9 @@
"error_loading_product": "Fehler beim Laden der Produktdetails. Bitte versuche es erneut.",
"not_found": "Standort nicht gefunden. Zurück zum vorherigen Menü.",
"mono_product": "📦 Digitales Produkt",
"infinite_stock": "∞ Immer verfügbar"
"infinite_stock": "∞ Immer verfügbar",
"no_description": "Keine Beschreibung",
"no_photo": "Kein Foto verfügbar"
},
"purchase": {
"summary": "🛒 Kaufübersicht:",
@@ -156,13 +158,12 @@
"wallet_not_found": "Wallet nicht gefunden. Bitte versuche es erneut.",
"wallet_not_found_short": "Wallet nicht gefunden.",
"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_title": "💳 *{{type}} aufladen*",
"deposit_instructions_title": "📋 *Schritt-für-Schritt-Anleitung:*",
"deposit_step1": "1⃣ Tippe auf *Adresse kopieren* unten, um deine Wallet-Adresse zu kopieren",
"deposit_step2": "2⃣ Öffne Mercuryo über den Button unten",
"deposit_step2": "2⃣ Öffne Mercuryo über den Button unten und gib den gewünschten Betrag ein",
"deposit_step3": "3⃣ Füge die kopierte Adresse als Empfangswallet ein",
"deposit_step4": "4⃣ Wähle die richtige Währung: *{{type}}* und den Betrag €{{amount}}",
"deposit_step4": "4⃣ Wähle die richtige Währung: *{{type}}* und gib den gewünschten Betrag ein",
"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:*",
@@ -171,14 +172,14 @@
"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_important5": "• Ohne Autorisierung erlaubt Mercuryo nur 1 Zahlung. Danach fordert Mercuryo Autorisierung & Identitätsverifikation. Lade dein Guthaben einmalig mit Reserve auf.",
"deposit_open_mercuryo": "💳 Mit Karte zahlen (VISA / Mastercard)",
"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_instruction": "Sende den gewünschten Betrag in 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",
"deposit_wallet_address": "{{type}} Wallet-Adresse:",
"back_to_deposit": "« Zurück zur Einzahlung",

View File

@@ -55,7 +55,9 @@
"error_loading_product": "Error loading product details. Please try again.",
"not_found": "Location not found. Returning to previous menu.",
"mono_product": "📦 Digital Product",
"infinite_stock": "∞ Always available"
"infinite_stock": "∞ Always available",
"no_description": "No description provided",
"no_photo": "No photo available"
},
"purchase": {
"summary": "🛒 Purchase Summary:",
@@ -156,13 +158,12 @@
"wallet_not_found": "Wallet not found. Please try again.",
"wallet_not_found_short": "Wallet not found.",
"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_title": "💳 *Deposit {{type}}*",
"deposit_instructions_title": "📋 *Step\\-by\\-step instructions:*",
"deposit_step1": "1⃣ Tap *Copy Address* below to copy your wallet address",
"deposit_step2": "2⃣ Open Mercuryo via the button below",
"deposit_step2": "2⃣ Open Mercuryo via the button below and enter your desired amount",
"deposit_step3": "3⃣ Paste the copied address as the receiving wallet",
"deposit_step4": "4⃣ Select the correct currency: *{{type}}* and the amount €{{amount}}",
"deposit_step4": "4⃣ Select the correct currency: *{{type}}* and enter your desired amount",
"deposit_step5": "5⃣ Complete 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:*",
@@ -171,14 +172,14 @@
"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_important5": "• Without authorization, Mercuryo allows only 1 payment. Then Mercuryo will request authorization & identity verification. Top up your balance with a reserve in one go.",
"deposit_open_mercuryo": "💳 Pay with Card (VISA / Mastercard)",
"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_instruction": "Send the desired amount in 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",
"deposit_wallet_address": "{{type}} wallet address:",
"back_to_deposit": "« Back to Deposit",

View File

@@ -55,7 +55,9 @@
"error_loading_product": "Error al cargar detalles del producto. Inténtalo de nuevo.",
"not_found": "Ubicación no encontrada. Volviendo al menú anterior.",
"mono_product": "📦 Producto Digital",
"infinite_stock": "∞ Siempre disponible"
"infinite_stock": "∞ Siempre disponible",
"no_description": "Sin descripción",
"no_photo": "Sin foto disponible"
},
"purchase": {
"summary": "🛒 Resumen de compra:",
@@ -156,13 +158,12 @@
"wallet_not_found": "Billetera no encontrada. Inténtalo de nuevo.",
"wallet_not_found_short": "Billetera no encontrada.",
"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_title": "💳 *Depositar {{type}}*",
"deposit_instructions_title": "📋 *Instrucciones paso a paso:*",
"deposit_step1": "1⃣ Toca *Copiar dirección* abajo para copiar tu dirección de billetera",
"deposit_step2": "2⃣ Abre Mercuryo con el botón de abajo",
"deposit_step2": "2⃣ Abre Mercuryo con el botón de abajo e ingresa la cantidad deseada",
"deposit_step3": "3⃣ Pega la dirección copiada como billetera receptora",
"deposit_step4": "4⃣ Selecciona la moneda correcta: *{{type}}* y la cantidad €{{amount}}",
"deposit_step4": "4⃣ Selecciona la moneda correcta: *{{type}}* e ingresa la cantidad deseada",
"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}}:*",
@@ -171,14 +172,14 @@
"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_important5": "• Sin autorización, Mercuryo permite solo 1 pago. Luego Mercuryo pedirá autorización y verificación de identidad. Recarga tu saldo con reserva de una sola vez.",
"deposit_open_mercuryo": "💳 Pagar con Tarjeta (VISA / Mastercard)",
"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_instruction": "Envía la cantidad deseada en 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",
"deposit_wallet_address": "Dirección de billetera {{type}}:",
"back_to_deposit": "« Volver al depósito",