微信小程序基于腾讯短信发送验证码

使用腾讯的短信服务,官网是有Node JS的SDK的,but你要知道小程序和Node的是有差别的,先附上官网的网址。先看官网的文档NodeJS SDK 请先搞懂基本概念!

看我来填坑~~~

  1. 首先官网的的NodeJs SDK没有错很good!但是如果你以为小程序的短信发送可以直接Copy你就so easy l啦!**可以试一试下哦,会提示缺少“crypto"这加密模块~~
  2. 不让费大家的时间,直接上代码解决方案:下载个cryptojs,然后自己按照API进行封装~~~就直接上代码了。
  3. 先引用下模块cryptojs.js
import CryptoJS from "../../util/cryptojs.js"

代码来来~~~

  sendMessage: function() {
      var sdkappid = 14000000  //短信APPID
      var appkey = "9287f8efe4444444445f89#####be" //短信APPkey
      var random = Math.round(Math.random() * 99999); //不要调皮,不能改哦!
      var times = Math.floor(Date.now() / 1000) //不要调皮,不能改哦!
      var mobile = '151111111'
      var params = ["99998"]  //验证码内容
      //签名加密     
      var sig = CryptoJS.SHA256("appkey=" + appkey + "&random=" + random + "&time=" + times +
                    "&mobile=" + mobile).toString(CryptoJS.enc.Hex)              
      wx.request({
          url: "https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=" + sdkappid + "&random=" + random,
          header: {
              "content-type": 'application/json'
          },
          method: "POST",
          data: {
              "tel": { "nationcode": '86', "mobile": mobile }, //业务不广就86够了!!
              "sign": '',
              "tpl_id": 276802, //短信模板ID
              "params": params,
              "sig": sig,
              "time": times,
              "extend": '',
              "ext": ''
          },
          complete: function(res) {
              console.log(res)
          },
      })
  },

3.吐槽腾讯的地方

1.   官网的文档 https://cloud.tencent.com/document/product/382/5976       
string strRand = "7226249334"; //url 中的 random 字段的值
string strTime = "1457336869"; //UNIX 时间戳

这文档真的无力吐槽啊!可以这么说一般程序员第一下意识肯定是这样的

string strRand = Math.floor(Math.random() * 10000);
string strTime = new Date().getTime()

你吖文档就不能写明白啊 !结果只有翻开qcloudsms_js的SDK的util.js里找到了!有种想哭的feel~~~

/**
 * Get a random number
 *
 * @return {number}
 * @public
 */
function getRandom() {
    return Math.round(Math.random() * 99999);
}

/**
 * Get current time
 *
 * @return {number}
 * @public
 */
function getCurrentTime() {
    return Math.floor(Date.now() / 1000);
}

写在最后:这是写在客户端的,请别在实际中使用~!

你懂的,要写在服务器端~~~~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MarkDown基本语法总结 一、标题(header) 标题一共有两种写法,现在分别使用两种方法进行演示:1.使用...
    未栀li阅读 178评论 0 0
  • 吴军,原腾讯副总裁。吴军博士是当前Google中日韩文搜索算法的主要设计者。 1月份看完了他的两本书《态度》和《见...
    冷冻西红柿阅读 1,372评论 0 0
  • 中秋 月明星稀是常理, 今夜月明尽思念。 千里婵娟庆中秋, 中秋佳节共团圆。 昭君 大漠连黄沙,...
    夜玥浅阅读 192评论 1 0