const axios = require('axios') /** * کلید API پیامک — سازگاری با نام‌های قدیمی و جدید env */ function getSmsIrApiKey () { return ( process.env.SMS_IR_API_KEY || process.env.SMS_VERIFY_KEY || process.env.SMS_SECRET || '' ) } function getSmsIrTemplateId (fallback = '930719') { return process.env.SMS_IR_TEMPLATE_ID || fallback } /** * ارسال OTP از طریق SMS.ir Verify API * @returns {{ ok: boolean, error?: any }} */ async function sendSmsIrVerify ({ mobile, otp, templateId }) { const apiKey = getSmsIrApiKey() if (!apiKey) { console.error('[smsIr] missing API key (SMS_IR_API_KEY / SMS_VERIFY_KEY)') return { ok: false, error: 'SMS_API_KEY_MISSING' } } try { await axios({ method: 'post', url: 'https://api.sms.ir/v1/send/verify', headers: { 'Content-Type': 'application/json', Accept: 'application/json', 'x-api-key': apiKey }, data: { mobile: String(mobile), templateId: String(templateId || getSmsIrTemplateId()), parameters: [{ name: 'CODE', value: String(otp) }] }, timeout: 15000 }) return { ok: true } } catch (error) { console.error( '[smsIr] send failed:', error?.response?.data || error.message ) return { ok: false, error: error?.response?.data || error.message } } } module.exports = { getSmsIrApiKey, getSmsIrTemplateId, sendSmsIrVerify }