Files
modstagram-back/utils/smsIr.js
payacom 3f416a7a60 full
2026-08-31 20:45:41 +03:30

61 lines
1.5 KiB
JavaScript

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
}