Http短信验证码Json接入----腾讯云短信

最近因为公司项目需要接入短信验证码功能,在网上转了几圈,最终选定了2家公司;一家是腾讯云的短信业务,这个是收费的。另一个是Mob的短信业务,这个是免费的。

本篇文章主要是介绍腾讯云的接入,后面一章节会介绍Mob的接入方法。

腾讯云的接入文档参考地址:

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

参数问题和错误码等直接看文档,下面我们说说流程。

首先是需要去腾讯云注册账号,然后做个人或者公司的实名认证。通过之后再注册应用,应用也是需要通过认证来申请短信模板的;

注册地址如下:https://console.cloud.tencent.com/sms/smslist

创建应用之后如下:https://console.cloud.tencent.com/sms/smsinfo/1400248333/0

这里是应用的管理后台,可以查看很多信息。管理短信模板等。一样的是ID和key:

验证流程是,手机端生成验证码,并本地保存,好后面做验证;然后把手机号和验证码通过Http的json格式的数据发生给TX,TX校验通过之后,会把验证码发给对应手机号。TX本身是不生成验证码和做校验的。验证码生成和校验都是需要我们自己做的。手机端收到验证码之后,和之前的缓存做对比,本地判断是否验证成功。TX的作用就是一个短信息的发送。我们的测试环境是cocos2dx3.16,用的是cocos的http和json解析。

下面我们看看详细的接入代码:

引入头文件:

#include "network/HttpClient.h"
#include "json/rapidjson.h"
#include "json/document.h"
#include "json/stringbuffer.h"
#include "json/writer.h"
    //------------函数声明------------
    //生成本地验证码
    int CreateCode();
    //发送TX短信验证码
    void SendSMSCode();
    //拼接TX需要的JSON格式的数据,并做哈希加密
    std::string getJsonData();
    //TX回复的消息处理
    void onRequestCompleted(cocos2d::network::HttpClient* sender, cocos2d::network::HttpResponse* response);
    //哈希函数
    char* StrSHA256(const char* str, long long length, char* sha256);

    int m_smsCode;
    std::string m_phoneNum;

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 协议说明 协议 HTTP POST 编码格式 UTF8 URL 举例:https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=xxxxx&random=xxxx 接口说明 给用户发短信验证码短信通知,营销短信(内容长度不超过450字)。 注:sdkappid请填写您在腾讯云上申请到的,random请填成随机数。 2 请求包体 包体为json字符串,参数如下: { "tel": { //如需使用国际电话号码通用格式,如:"+8613788888888" ,请使用sendisms接口见下注 "nationcode": "86", //国家码 "mobile": "13788888888" //手机号码 }, "type": 0, //0:普通短信;1:营销短信(强调:要按需填值,不然会影响到业务的正常使用) "msg": "你的验证码是1234", //utf8编码,需要匹配审核通过的模板内容 "sig": "ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4", //app凭证,具体计算方式见下注 "time": 1457336869, //unix时间戳,请求发起时间,如果和系统时间相差超过10分钟则会返回失败 "extend": "", //通道扩展码,可选字段,默认没有开通(需要填空)。 //在短信回复场景中,腾讯server会原样返回,开发者可依此区分是哪种类型的回复 "ext": "" //用户的session内容,腾讯server回包中会原样返回,可选字段,不需要就填空。 } 注: 1、"msg"字段需要匹配审核通过的模板内容 如果您的模板是"你的验证码是{1}",则"msg"字段可赋值为:"你的验证码是xxxx"。(其中"xxxx"为下发的验证码) 如果您有多个短信签名,请将需要的短信签名放在短信内容前面 例如您有"【腾讯科技】","【腾讯云】"两个签名,但是想以"【腾讯云】"签名发送短信, 则"msg"字段可赋值为:"【腾讯云】你的验证码是xxxx"。(其中"xxxx"为下发的验证码) 2、"extend"字段的配置请联系腾讯云短信技术支持 3、sendisms接口,"tel"字段为国际电话号码通用格式,如:"+8613788888888" 4、"sig"字段根据公式sha256(appkey=$appkey&random=$random&time=$time&mobile=$mobile)生成 伪代码如下: string strMobile = "13788888888"; //tel的mobile字段的内容 string strAppKey = "5f03a35d00ee52a21327ab048186a2c4"; //sdkappid对应的appkey,需要业务方高度保密 string strRand = "7226249334"; //url中的random字段的值 string strTime = "1457336869"; //unix时间戳 string sig = sha256(appkey=5f03a35d00ee52a21327ab048186a2c4&random=7226249334&time=1457336869&mobile=13788888888) = ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4; 3 应答包体 { "result": 0, //0表示成功(计费依据),非0表示失败 "errmsg": "OK", //result非0时的具体错误信息 "ext": "", //用户的session内容,腾讯server回包中会原样返回 "sid": "xxxxxxx", //标识本次发送id,标识一次短信下发记录 "fee": 1 //短信计费的条数 } 1.需要申请腾讯云短信的 appid 和 appkey  (详见 https://console.cloud.tencent.com/sms) 2.需要申请一个 短信签名+ 短信模版

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值