专栏首页我的小碗汤发送手机验证码实现

发送手机验证码实现

今天来用java实现手机验证码的发送。

短信平台有很多,中国网建提供的SMS短信通,注册免费5条短信,3条彩信,

http://sms.webchinese.cn/

但是刚才试了,第一次用官方提供的demo发送成功,然后整合到自己项目中,调试时由于参数配置错误导致发送了几次失败后,5次就用完了。按理说成功才能算一次,果断放弃。

然后试了一下腾讯云SMS平台,每月可以免费发送100条国内短信

https://cloud.tencent.com/product/sms

首先需要注册腾讯云账号,注册时可以微信认证,认证时支付1分钱验证是人为操作,这一分钱注册成功后会放到账户中。

注册后,需要添加一个应用,这个随便写,创建好后点击 -> 应用名称,然看AppID和AppKey,这个比较重要,调用短信API接口时需要提供。

然后需要在 -> 国内短信 -> 短信内容配置 -> 短信签名中创建签名和短信正文中创建正文模板。

一个完整的短信由短信签名和短信正文内容两部分组成,您可以根据业务需求分别设置不同的短信正文内容模板,然后进行组合形成最终展示。短信签名+短信正文内容=最终显示内容

审核可能得需要花一段时间,我创建后,审核只花了2小时不到。这些步骤做完之后,就可以根据官方提供的API接口发送短信了。

https://cloud.tencent.com/document/product/382/5808

官方提供了java、python、c#、node.js的SDK,这里用java的SDK调用,这里有详细说明:

https://github.com/qcloudsms/qcloudsms_java

首先加入maven依赖:

<dependency>
      <groupId>com.github.qcloudsms</groupId>
      <artifactId>qcloudsms</artifactId>
      <version>1.0.4</version>
</dependency>

编写调用SDK的代码:

/**
     * 腾讯云短信,100条一个月
     * 方法说明
     *
     * @param phone
     * @return void
     * @Discription:扩展说明
     * @throws HTTPException  http status exception
     * @throws IOException    network problem
     */
    public static void sendMsgByTxPlatform(String phone) throws Exception {

        // 短信应用SDK AppID
        // 1400开头
        int appId = 1402126548;

        // 短信应用SDK AppKey
        String appKey = "b67d0bf7876c1d42121ca561953532";

        // 需要发送短信的手机号码
    // String[] phoneNumbers = {"15212111830"};

        // 短信模板ID,需要在短信应用中申请
        //NOTE: 这里的模板ID`7839`只是一个示例,真实的模板ID需要在短信控制台中申请
        int templateId = 148464;

        // 签名
        // NOTE: 这里的签名"腾讯云"只是一个示例,真实的签名需要在短信控制台中申请,另外签名参数使用的是`签名内容`,而不是`签名ID`
        String smsSign = "我的小碗汤";

        SmsSingleSender sSender = new SmsSingleSender(appId, appKey);
        //第一个参数0表示普通短信,1表示营销短信
        SmsSingleSenderResult result = sSender.send(0, "86",
                phone,
                RandomCodeUtils.getSixValidationCode() + "为您的登录验证码,请于" + 10 + "分钟内填写。如非本人操作,请忽略本短信。", "", "");

        if (result.result != 0) {
            throw new Exception("send phone validateCode is error" + result.errMsg);
        }
    }

参数说明:

@param type 短信类型,0 为普通短信,1 营销短信,需要和刚才页面上提交的短信正文下的类型一致
@param nationCode 国家码,如 86 为中国
@param phoneNumber 不带国家码的手机号
@param msg 信息内容,必须与申请的模板格式一致,否则将返回错误,{1}占位符可在代码中用实际需要发送的值替换
@param extend 扩展码,可填空
@param ext 服务端原样返回的参数,可填空

编写好以后用测试类测试时,返回错误码1014,可以点击错误描述中的链接去查看可能的原因。我是由于正文内容和刚才页面上提交的正文不一样导致的。

https://cloud.tencent.com/document/product/382/3771

以下有很多错误码,可以供排查问题参考:

正常情况下,返回的result为0时表示发送成功,这也是100条次数减1的参考。按照接口要求修改参数后,发送短信成功。

本文分享自微信公众号 - 我的小碗汤(mysmallsoup),作者:小碗汤

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 爬虫性能分析及优化

    我们可以通过网络利用率看一下,我们用任务管理器中的性能分析窗口可以看到下载速率大概是保持在了200kbps左右,这可以说是相当慢了。

    我的小碗汤
  • 这个问题你能答对吗?

    首先,还是给大家说声抱歉,由于微信限制,前两天抽奖的好友请求还没有全部通过验证,这两天都会通过并拉大家进抽奖群的,还请大家海涵。

    我的小碗汤
  • (图文并茂,权威最详细)Wireshark抓包分析 TCP三次握手/四次挥手详解

    本文结合wireshark抓包,对TCP协议的三次握手和四次挥手进行详细的讲解。大家要认真看完,这可能是全网讲得最详细的文章了。

    我的小碗汤
  • 短信互联网化能否“拯救”短信?

    时至今日,PC端互联网日渐饱和已不可逆转,而移动互联网正在蓬勃发展,席卷各个细分行业并衍生出更多垂直服务,比如app储存、app测试等,然而还有很多渐入末路,意...

    曾响铃
  • 短信 | 教你使用 JAVA实现 【短信发送】 功能

    码神联盟
  • 腾讯云短信套餐优惠活动价格

    腾讯云短信99%到达率,支持大容量、高并发处理,自购买之日起两年内有效。(因腾讯云短信优惠活动,价格有时会有变动。具体实际价格以腾讯云短信显示的价格为准)

    大大小小
  • 腾讯云短信怎么样?

    腾讯云短信依托腾讯强大的技术和丰富的经验,为 QQ、微信等亿级平台和10万+客户提供短信服务,稳定可靠,秒级触达。现在腾讯云有了关于国内短信套餐的优惠活动,让...

    return null
  • 短信,到底是怎么工作的?

    近日,工信部发布的《2018年上半年通信业经济运行情况》显示,上半年我国移动短信业务量同比增长8.8%;移动短信业务收入完成195亿元,同比增长5.7%。业内人...

    鲜枣课堂
  • 苹果手机怎么恢复短信?简单方法教你恢复

      苹果手机怎么恢复短信?在手机中有时候一天会收到很多的短信,当然也有一些垃圾短信在里面,不过大多数都是垃圾短信收到的都比较多,一旦多了就想删除这些垃圾短信。由...

    科技第六人
  • 106短信平台如何申请

    短信平台作为企业开展业务不可或缺的部分,已被各行业广泛应用,如:给用户手机发送:验证码短信,物流、订单、账户信息变动通知短信,活动促销短信等。对于还没有接入短信...

    漫道短信平台

扫码关注云+社区

领取腾讯云代金券