通用免认证的短信接口,每天单个号码100条以上
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通用免认证的短信接口,每天单个号码100条以上相关的知识,希望对你有一定的参考价值。
参考技术A 下面介绍一下moduyun平台的短信php接口。链接:www.moduyun.com// Works well with php5.3 and php5.6.
namespace Moduyun\Sms;
require_once('SmsSenderUtil.php');
class SmsSingleSender
var $url;
var $accesskey;
var $secretkey;
var $util;
function __construct($accesskey, $secretkey)
$this->url = "https://live.moduyun.com/sms/v1/sendsinglesms";
$this->accesskey = $accesskey;
$this->secretkey = $secretkey;
$this->util = new SmsSenderUtil();
/**
* 普通单发,明确指定内容,如果有多个签名,请在内容中以【】的方式添加到信息内容中,否则系统将使用默认签名
* @param int $type 短信类型,0 为普通短信,1 营销短信
* @param string $nationCode 国家码,如 86 为中国
* @param string $phoneNumber 不带国家码的手机号
* @param string $msg 信息内容,必须与申请的模板格式一致,否则将返回错误
* @param string $extend 扩展码,可填空串
* @param string $ext 服务端原样返回的参数,可填空串
* @return string json string "result": xxxxx, "errmsg": "xxxxxx" ... ,被省略的内容参见协议文档
*/
function send($type, $nationCode, $phoneNumber, $msg, $extend = "", $ext = "")
/*
请求包体
"tel":
"nationcode": "86",
"mobile": "13788888888"
,
"type": 0,
"msg": "你的验证码是1234",
"sig": "fdba654e05bc0d15796713a1a1a2318c",
"time": 1479888540,
"extend": "",
"ext": ""
应答包体
"result": 0,
"errmsg": "OK",
"ext": "",
"sid": "xxxxxxx",
"fee": 1
*/
$random = $this->util->getRandom();
$curTime = time();
$wholeUrl = $this->url . "?accesskey=" . $this->accesskey . "&random=" . $random;
// 按照协议组织 post 包体
$data = new \stdClass();
$tel = new \stdClass();
$tel->nationcode = "".$nationCode;
$tel->mobile = "".$phoneNumber;
$data->tel = $tel;
$data->type = (int)$type;
$data->msg = $msg;
$data->sig = hash("sha256",
"secretkey=".$this->secretkey."&random=".$random."&time=".$curTime."&mobile=".$phoneNumber, FALSE);
$data->time = $curTime;
$data->extend = $extend;
$data->ext = $ext;
return $this->util->sendCurlPost($wholeUrl, $data);
/**
* 指定模板单发
* @param string $nationCode 国家码,如 86 为中国
* @param string $phoneNumber 不带国家码的手机号
* @param int $templId 模板 id
* @param array $params 模板参数列表,如模板 1...2...3,那么需要带三个参数
* @param string $sign 签名,如果填空串,系统会使用默认签名
* @param string $extend 扩展码,可填空串
* @param string $ext 服务端原样返回的参数,可填空串
* @return string json string "result": xxxxx, "errmsg": "xxxxxx" ... ,被省略的内容参见协议文档
*/
function sendWithParam($nationCode, $phoneNumber, $templId = 0, $params, $sign = "", $extend = "", $ext = "")
/*
请求包体
"tel":
"nationcode": "86",
"mobile": "13788888888"
,
"sign": "Moduyun",
"tpl_id": 19,
"params": [
"验证码",
"1234",
"4"
],
"sig": "fdba654e05bc0d15796713a1a1a2318c",
"time": 1479888540,
"extend": "",
"ext": ""
应答包体
"result": 0,
"errmsg": "OK",
"ext": "",
"sid": "xxxxxxx",
"fee": 1
*/
$random = $this->util->getRandom();
$curTime = time();
$wholeUrl = $this->url . "?sdkaccesskey=" . $this->accesskey . "&random=" . $random;
// 按照协议组织 post 包体
$data = new \stdClass();
$tel = new \stdClass();
$tel->nationcode = "".$nationCode;
$tel->mobile = "".$phoneNumber;
$data->tel = $tel;
$data->sig = $this->util->calculateSigForTempl($this->secretkey, $random, $curTime, $phoneNumber);
$data->tpl_id = $templId;
$data->params = $params;
$data->sign = $sign;
$data->time = $curTime;
$data->extend = $extend;
$data->ext = $ext;
return $this->util->sendCurlPost($wholeUrl, $data);
class SmsMultiSender
var $url;
var $accesskey;
var $secretkey;
var $util;
function __construct($accesskey, $secretkey)
$this->url = "https://live.moduyun.com/sms/v1/sendsinglesms";
$this->accesskey = $accesskey;
$this->secretkey = $secretkey;
$this->util = new SmsSenderUtil();
/**
* 普通群发,明确指定内容,如果有多个签名,请在内容中以【】的方式添加到信息内容中,否则系统将使用默认签名
* 【注意】海外短信无群发功能
* @param int $type 短信类型,0 为普通短信,1 营销短信
* @param string $nationCode 国家码,如 86 为中国
* @param string $phoneNumbers 不带国家码的手机号列表
* @param string $msg 信息内容,必须与申请的模板格式一致,否则将返回错误
* @param string $extend 扩展码,可填空串
* @param string $ext 服务端原样返回的参数,可填空串
* @return string json string "result": xxxxx, "errmsg": "xxxxxx" ... ,被省略的内容参见协议文档
*/
function send($type, $nationCode, $phoneNumbers, $msg, $extend = "", $ext = "")
/*
请求包体
"tel": [
"nationcode": "86",
"mobile": "13788888888"
,
"nationcode": "86",
"mobile": "13788888889"
],
"type": 0,
"msg": "你的验证码是1234",
"sig": "fdba654e05bc0d15796713a1a1a2318c",
"time": 1479888540,
"extend": "",
"ext": ""
应答包体
"result": 0,
"errmsg": "OK",
"ext": "",
"detail": [
"result": 0,
"errmsg": "OK",
"mobile": "13788888888",
"nationcode": "86",
"sid": "xxxxxxx",
"fee": 1
,
"result": 0,
"errmsg": "OK",
"mobile": "13788888889",
"nationcode": "86",
"sid": "xxxxxxx",
"fee": 1
]
*/
$random = $this->util->getRandom();
$curTime = time();
$wholeUrl = $this->url . "?accesskey=" . $this->accesskey . "&random=" . $random;
$data = new \stdClass();
$data->tel = $this->util->phoneNumbersToArray($nationCode, $phoneNumbers);
$data->type = $type;
$data->msg = $msg;
$data->sig = $this->util->calculateSig($this->secretkey, $random, $curTime, $phoneNumbers);
$data->time = $curTime;
$data->extend = $extend;
$data->ext = $ext;
return $this->util->sendCurlPost($wholeUrl, $data);
/**
* 指定模板群发
* 【注意】海外短信无群发功能
* @param string $nationCode 国家码,如 86 为中国
* @param array $phoneNumbers 不带国家码的手机号列表
* @param int $templId 模板 id
* @param array $params 模板参数列表,如模板 1...2...3,那么需要带三个参数
* @param string $sign 签名,如果填空串,系统会使用默认签名
* @param string $extend 扩展码,可填空串
* @param string $ext 服务端原样返回的参数,可填空串
* @return string json string "result": xxxxx, "errmsg": "xxxxxx" ... ,被省略的内容参见协议文档
*/
function sendWithParam($nationCode, $phoneNumbers, $templId, $params, $sign = "", $extend ="", $ext = "")
/*
请求包体
"tel": [
"nationcode": "86",
"mobile": "13788888888"
,
"nationcode": "86",
"mobile": "13788888889"
],
"sign": "Moduyun",
"tpl_id": 19,
"params": [
"验证码",
"1234",
"4"
],
"sig": "fdba654e05bc0d15796713a1a1a2318c",
"time": 1479888540,
"extend": "",
"ext": ""
应答包体
"result": 0,
"errmsg": "OK",
"ext": "",
"detail": [
"result": 0,
"errmsg": "OK",
"mobile": "13788888888",
"nationcode": "86",
"sid": "xxxxxxx",
"fee": 1
,
"result": 0,
"errmsg": "OK",
"mobile": "13788888889",
"nationcode": "86",
"sid": "xxxxxxx",
"fee": 1
]
*/
$random = $this->util->getRandom();
$curTime = time();
$wholeUrl = $this->url . "?accesskey=" . $this->accesskey . "&random=" . $random;
$data = new \stdClass();
$data->tel = $this->util->phoneNumbersToArray($nationCode, $phoneNumbers);
$data->sign = $sign;
$data->tpl_id = $templId;
$data->params = $params;
$data->sig = $this->util->calculateSigForTemplAndPhoneNumbers(
$this->secretkey, $random, $curTime, $phoneNumbers);
$data->time = $curTime;
$data->extend = $extend;
$data->ext = $ext;
return $this->util->sendCurlPost($wholeUrl, $data);
更多,欢迎关注云服务-moduyun平台
官网:https://www.moduyun.com/
阿里云通信发布全新号码认证服务, 重新定义手机号码认证的方式
摘要:12月12日,阿里云通信宣布号码认证服务正式商用,将重新定义手机号码认证的方式。因移动应用实名制的政策要求,手机号码认证在移动APP的注册、登录等场景用的越来越多。而对于开发者来说,能完成手机号码认证的选择并不多,一般是借助短信、语音的基础通信通道,自己实现短信验证码或语音验证码来实现。此次,阿里云通信针对移动应用开发者对号码认证的强诉求,推出的号码认证服务可以解决APP在注册、登录和安全校验场景下的号码认证需求。一键注册转化高,免密登录体验佳,机卡校验安全好。一点接入,全网服务。
12月12日,阿里云通信宣布号码认证服务正式商用,将重新定义手机号码认证的方式。
因移动应用实名制的政策要求,手机号码认证在移动APP的注册、登录等场景用的越来越多。而对于开发者来说,能完成手机号码认证的选择并不多,一般是借助短信、语音的基础通信通道,自己实现短信验证码或语音验证码来实现。
此次,阿里云通信针对移动应用开发者对号码认证的强诉求,推出的号码认证服务可以解决APP在注册、登录和安全校验场景下的号码认证需求。一键注册转化高,免密登录体验佳,机卡校验安全好。一点接入,全网服务。
优势1:一键注册转化高
让我们先从用户的角度来看看目前最常用的短信验证码的使用流程:
输入手机号码 → 点击获取短信验证码 → 收到验证码短信 → 切换短信APP查看验证码 → 返回应用APP输入验证码 → 验证成功
从上面的流程可以看到,待验证码下发到手机后,用户需要切换到短信界面记下验证码,若碰到APP设计有问题,切回应用APP界面后登录流程又需要走一遍;有时候验证码没记住,又要切回短信界面去再背一遍验证码,周而复始,十分麻烦。
说了这么多,是不是觉得上面的验证方式很“坑爹”?
为了解决上述一系列App验证过程中的问题,阿里云通信推出号码认证服务(Phone Number Verification Service),不走普通验证方式的"寻常路",采用用户无感知的验证方式,全程无需等待,验证结果秒知,将用户的验证流程精简为:输入手机号码 → 验证成功。
(图1)号码认证服务注册流程:
由于注册认证的步骤被大幅减少,由原来的9个步骤减少为2个步骤,用户的注册转化率大幅提高。经验证,注册转化率比短验提升10%-15%(不用业务场景略有差异)。
优势2:免密登录体验佳
移动互联网时代,APP满天飞。作为互联网应用的用户,要记住这么多不同应用的密码,那真是一件头疼的事情。如果你用相同的密码,那又给撞库留下了安全隐患。
另外,目前有一些第三方登录的存在,但在登录之后,应用开发者往往又会要求绑定一遍手机号码,费时费力。
能否让用户“不用记忆密码”一步安全验证呢?让阿里云号码认证服务来帮您。
(图2)号码认证服务登录流程:
别看上面的流程貌似有点多,对于用户来说,仅需“授权提交认证”即可,后面的步骤都是由阿里云号码认证服务来完成。真正地,把方便留给用户,把麻烦留给自己。
经过实际验证,阿里云号码认证的整体登录时长比短验要短13到19秒。
优势3:机卡校验安全好
今年开始,一种仿佛是“黑魔法”的新诈骗手段叫人人心惶惶:受害者只是睡了个觉,醒来就看到手机显示数百条在各大购物网站、手机银行甚至借贷网站的消费转账记录。另外,应用开发者为拉新提供的互联网权益,也往往被很快薅完,白白浪费了拉新成本。
分析这些出现业务风险漏洞的应用,本质上是高安全等级的业务(如转账、权益领取等)办理过程中,使用短验进行安全校验。而短信验证码与手机SIM卡是可以机卡分离的,机卡不在一起就给不良分子留下了作恶的空间。
目前,短信验证码已经成为互联网金融、电商服务验证的主要形式,一旦短信验证码被窃取,最后一道安全屏障就被突破了。
(图3)号码认证服务安全校验流程:
阿里云推出的“号码认证服务”,利用独有的机卡一体校验能力,可以为高安全等级的业务提供用户无感的安全校验。由于整个验证流程是通过后台的加密数据包进行的,没有明文的收发流程,而且可以快速验证当前应用所在的手机是否有办理业务的手机号码对应的SIM卡。因此,“短信嗅探”、“卡池远程提供验证码”等手段也就失效啦。
优势4:一点接入,全网服务
作为此前短信验证码的升级方案,阿里云号码认证服务整合三大运营商特有的网关认证能力,对所有阿里云客户提供。客户仅需在阿里云平台一点接入,就可以获得覆盖全网的号码认证服务。
在阿里云通信的官网上,已经有试用的 Demo 可以体验了。整个过程非常的快,输入电话号码耗时 3 秒,认证不到 2 秒,整个过程也就不到 5 秒钟,也就是说秒速 5 厘米的樱花刚刚离开树梢一点点,「亚洲飞人」苏炳添还没跑到百米的一半,玛莎拉蒂 Levante 还没从零加速到百公里,认证就完成了。
小结
可以预见的是,未来升级到号码验证服务的互联网应用会越来越多,尤其是对安全要求比较高的那些应用和服务。比如支付宝的注册场景、优酷的红包领取场景等;外部也有BOSS直聘、天眼查等一批知名应用已经开始使用阿里云的号码认证服务。
某种程度上来说,号码验证服务相比于短信验证码服务的进步,就有些类似于苹果 Face ID 相比于指纹识别的更新,更安全是基本要求,更方便是升级体验的核心动力,更无感则是用户「喜新厌旧」的附加因素。
以上是关于通用免认证的短信接口,每天单个号码100条以上的主要内容,如果未能解决你的问题,请参考以下文章