最近因为公司项目需要接入短信验证码功能,在网上转了几圈,最终选定了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;