以下是針對 AA公司微信小程序接入騰訊云短信驗證碼 的 全流程操作指南,包含資質申請、簽名/模板配置、代碼對接的完整解決方案:
一、資質申請(必須通過審核才能發短信)
1?? 進入資質管理頁
- 路徑:騰訊云控制臺 → 短信 → 實名資質管理 → 添加資質
2?? 填寫資質信息
字段 | 填寫要求 | 示例 (AA公司) |
---|---|---|
資質名稱 | 自定義標識名稱 | AA公司短信主資質 |
資質屬性 | 選「自用」(AA公司小程序主體與騰訊云賬號實名主體一致) ? 若不一致需選「他用」并上傳授權書 | ○ 自用 |
企業證件類型 | 營業執照或統一社會信用代碼證 | 營業執照 |
資質證件 | 上傳蓋公章的營業執照 → 支持PNG/JPG ≤5MB → 水印文字: 僅用于辦理騰訊云短信增值服務 | ![]() |
法定代表人 | 上傳法人身份證正反面(需在有效期內) | 張三的身份證正反面掃描件 |
3?? 提交審核
- ? 審核時效:2小時內(工作時間優先審核)
- ?? 注意事項:
- 公章必須清晰可見,且與營業執照名稱一致
- 避免非工作時間提交(周末/節假日延審)
二、創建短信簽名(標識短信發送方)
1?? 路徑:短信 → 簽名管理 → 創建簽名
2?? 關鍵配置項
字段 | 填寫規范 | AA公司示例 |
---|---|---|
簽名類型 | APP應用 → 選**「微信小程序」** | |
簽名內容 | 小程序全稱(需與微信開放平臺一致) | AA生活服務 |
證明文件 | 上傳兩者之一: ① 《軟件著作權證書》 ② 微信小程序后臺設置頁截圖 | ![]() |
申請說明 | 寫明用途:用于AA公司微信小程序用戶注冊驗證碼發送 |
三、申請短信模板(驗證碼內容規范)
1?? 路徑:短信 → 正文模板管理 → 創建模板
2?? 模板配置
模板名稱:用戶注冊驗證碼
模板類型:驗證碼
短信內容:您的驗證碼為:{1},請于{2}分鐘內填寫。如非本人操作,請忽略本短信。 #騰訊云會過濾【】符號
申請說明:用戶手機號注冊驗證場景
3?? 參數說明
占位符 | 類型 | 示例值 | 作用 |
---|---|---|---|
{1} | 數字 | 384592 | 隨機6位驗證碼 |
{2} | 數字 | 5 | 驗證碼有效期(分鐘) |
四、微信小程序代碼對接(Node.js示例)
1?? 安裝 SDK
npm install tencentcloud-sdk-nodejs-sms --save
2?? 封裝短信服務 (/service/sms.js
)
const tencentcloud = require("tencentcloud-sdk-nodejs-sms");
const SmsClient = tencentcloud.sms.v20210111.Client;const client = new SmsClient({credential: {secretId: process.env.TENCENT_SECRET_ID, // 從環境變量讀取secretKey: process.env.TENCENT_SECRET_KEY,},region: "ap-guangzhou", // 按資質所屬地域填寫
});// 發送驗證碼函數
exports.sendVerificationCode = async (phone, code) => {const req = {PhoneNumberSet: [phone],SmsSdkAppId: "1400006789", // 短信應用ID(控制臺獲取)SignName: "AA生活服務", // 第2步創建的簽名TemplateId: "1717171", // 第3步模板IDTemplateParamSet: [code.toString(), "5"], // 驗證碼+有效期};try {const res = await client.SendSms(req);return { success: res.SendStatusSet[0].Code === "Ok" };} catch (err) {console.error("短信發送失敗:", err);throw new Error("SMS_SERVICE_ERROR");}
};
3?? 注冊接口調用(/controllers/user.js
)
const { sendVerificationCode } = require("../service/sms");
const crypto = require("crypto");// 生成6位數字驗證碼
const generateCode = () => Math.floor(100000 + Math.random() * 900000);// 用戶注冊入口
exports.register = async (req, res) => {const { phone } = req.body;// 1. 生成驗證碼并緩存(Redis推薦)const code = generateCode();await cache.set(`REG:${phone}`, code, "EX", 300); // 5分鐘有效期// 2. 發送短信try {await sendVerificationCode(phone, code);res.json({ code: 0, message: "驗證碼已發送" });} catch (err) {res.status(500).json({ code: 1001, message: "短信服務異常" });}
};
五、全流程避坑指南
環節 | 高頻錯誤 | 解決方案 |
---|---|---|
資質審核 | 公章模糊/證件過期 | 使用高清掃描件+有效期驗證 |
簽名駁回 | 小程序名稱與簽名不一致 | 檢查微信開放平臺名稱 |
模板審核 | 未聲明「驗證碼」用途 | 在模板中顯式包含「驗證碼」關鍵詞 |
代碼發送失敗 | SecretId/Key 泄露 | 用環境變量存儲密鑰 → 嚴禁硬編碼 |
用戶收不到 | 觸發頻率限制(默認1條/分鐘,30條/天) | 控制臺調整頻控策略 → 設置鏈接 |
💡 終極調試方案:
- 在騰訊云控制臺使用「短信調試」工具直接測試API
- 查看錯誤碼:騰訊云短信錯誤碼列表
完成以上步驟后,AA公司微信小程序即可實現 「手機號→獲取驗證碼→注冊」 的安全閉環。建議上線前用測試手機號全鏈路驗證(測試模板需單獨申請)。