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": "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",