上一篇
html调用短信接口
- 行业动态
- 2025-04-27
- 2
fetch(‘https://api.example.com/sms’,{method:’POST’,body:JSON.stringify({phone:’13800000000′,text:’验证码1234′})}).then(res=>console.log(res))
HTML调用短信接口的实现流程
前端页面设计
使用HTML创建表单,收集用户手机号和验证码(可选)。
<form id="smsForm"> <input type="text" id="phone" placeholder="请输入手机号" required /> <button type="button" onclick="sendSMS()">发送短信</button> </form> <script> function sendSMS() { const phone = document.getElementById('phone').value; // 通过AJAX将数据发送到后端 fetch('/api/send-sms', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({phone}) }).then(response => response.json()) .then(data => alert(data.message)) .catch(error => console.error('Error:', error)); } </script>
后端接口逻辑
后端接收请求,调用短信服务商API,以下以Node.js为例(其他语言逻辑类似):
const express = require('express'); const axios = require('axios'); const app = express(); app.use(express.json()); app.post('/api/send-sms', async (req, res) => { const { phone } = req.body; if (!/^1[3-9]d{9}$/.test(phone)) { return res.json({ message: '手机号格式错误' }); } try { // 调用短信服务商API(以阿里云为例) const smsResponse = await axios.post('https://dysmsapi.aliyuncs.com/', { Action: 'SendSms', Version: '2017-05-25', PhoneNumbers: phone, SignName: '你的签名', TemplateCode: 'SMS_12345678', TemplateParam: JSON.stringify({ code: '1234' }) // 验证码参数 }, { headers: {'Content-Type': 'application/x-www-form-urlencoded'}, auth: { username: 'your-access-key-id', password: 'your-access-key-secret' } }); res.json({ message: '短信发送成功' }); } catch (error) { res.json({ message: '短信发送失败' }); } }); app.listen(3000);
短信接口核心参数说明
参数名称 | 类型 | 描述 | 必填 |
---|---|---|---|
Action | String | API操作名(固定值) | 是 |
Version | String | API版本号(固定值) | 是 |
AccessKeyId | String | 访问密钥ID | 是 |
AccessKeySecret | String | 访问密钥Secret | 是 |
PhoneNumbers | String | 接收短信的手机号 | 是 |
SignName | String | 短信签名(需预先审核) | 是 |
TemplateCode | String | 短信模板ID(需预先申请) | 是 |
TemplateParam | String | 模板参数(JSON格式) | 否 |
主流短信服务商对比
服务商 | 免费额度 | 国内号码支持 | 接口响应速度 |
---|---|---|---|
阿里云 | 新用户10条/月 | 是 | 平均200ms |
酷盾安全 | 新用户100条/月 | 是 | 平均150ms |
Twilio | 试用$10信用额度 | 否(需香港/海外号) | 平均300ms |
网易云 | 新用户50条/月 | 是 | 平均250ms |
相关问题与解答
问题1:如何选择短信服务商?
解答:需综合考虑以下几点:
- 业务范围:是否支持国内号码(如阿里云、酷盾安全),或需要国际短信(如Twilio);
- 成本:对比单价和免费额度,例如酷盾安全单价约0.045元/条;
- 稳定性:查看接口平均响应时间和SLA保障;
- 合规性:是否提供签名审核、内容过滤等增值服务。
问题2:如何处理短信发送失败的情况?
解答:建议采取以下措施:
- 重试机制:失败后间隔5秒重试2次;
- 日志记录:保存失败记录至数据库,便于后续排查;
- 用户提示:前端显示“发送失败,请稍后重试”;
- 告警监控:当连续失败次数超过阈值时触发运维告