/**
* 发送接口
* @param $info 发送信息的某些参数
* @return bool
*/
public function send($info) {
$config = target('tools/ToolsSendConfig')->getConfig('ali');//获取ali短信的配置 key 秘钥之类的
if(empty($config)){
return $this->error('配置不存在!');
}
$receive = $info['receive'];//手机号
if($info['user_info']) {
$receive = $info['user_info']['tel'];
}
$AccessKeyId=$config['accessKeyId'];
$accessKeySecret=$config['accessKeySecret'];
$params["PhoneNumbers"] = $receive;
$params["SignName"] = $config['SignName'];
$params["TemplateCode"] = $info['param']['TemplateCode'];//选择ali短信配置好的模板
$params['TemplateParam'] = Array (
"code" => $info['param']['code']//需要替换的内容
);
if(!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) {
$params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE);
}
$params=array_merge($params, array(
"RegionId" => "cn-hangzhou",
"Action" => "SendSms",
"Version" => "2017-05-25",
));
//配置参数
$apiParams = array_merge(array (
"SignatureMethod" => "HMAC-SHA1",
"SignatureNonce" => uniqid(mt_rand(0,0xffff), true),
"SignatureVersion" => "1.0",
"AccessKeyId" => $AccessKeyId,
"Timestamp" => gmdate("Y-m-d\TH:i:s\Z"),
"Format" => "JSON",
), $params);
ksort($apiParams);
$sortedQueryStringTmp = "";
foreach ($apiParams as $key => $value) {
$sortedQueryStringTmp .= "&" . $this->encode($key) . "=" . $this->encode($value);
}
$stringToSign = "GET&%2F&" . $this->encode(substr($sortedQueryStringTmp, 1));
$sign = base64_encode(hash_hmac("sha1", $stringToSign, $accessKeySecret . "&",true));
$signature = $this->encode($sign);
//拼接url
$url = ($security ? 'https' : 'http')."://dysmsapi.aliyuncs.com/?Signature={$signature}{$sortedQueryStringTmp}";
//发送curl请求
$content = $this->fetchContent($url);
//$return = json_decode($content, true);
if($return['code']<>'OK'){
return $this->error($return['Message']); }
return $this->success();
}

还是比较简单,拼接好参数后一步到位。

ali验证码推送接口调用的更多相关文章

  1. 关于调用三方平台接口与推送接口的总结<二>(2020.7.27)

    前言:本篇博客是接着上篇总结写的,想了解怎么对接第三方平台接口的同学可以看我上一篇博客,地址是  https://www.cnblogs.com/alanturingson/p/13377500.ht ...

  2. Android平台摄像头/屏幕/外部数据采集及RTMP推送接口设计描述

    好多开发者提到,为什么大牛直播SDK的Android平台RTMP推送接口怎么这么多?不像一些开源或者商业RTMP推送一样,就几个接口,简单明了. 不解释,以Android平台RTMP推送模块常用接口, ...

  3. 如何使用Postman调试HMS Core推送接口?

    HMS Core推送服务支持开发者使用HTTPS协议接入Push服务端.Postman是一款接口测试工具,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果.Postma ...

  4. JPush极光推送 Java调用服务器端API开发

       极光推送是:使得开发者可以即时地向其应用程序的用户推送通知或者消息,与用户保持互动,从而有效地提高留存率,提升用户体验.简单的说就是通过JPush后台管理网站进行app消息的推送.可以让用户及时 ...

  5. 企业微信人员日程推送接口(python版)

    企业在使用企业微信中,有时想批量推送员工日程信息.这里写了个接口工具分享给大家,供交流学习. 主入口程序: # -*- coding: utf-8 -*-import time as time imp ...

  6. iOS 推送所调用的函数详解

    AppDelegate类中: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDic ...

  7. 使用WeCloud消息推送接口发送消息NodeJs版

    WeCloud是一家初创公司的产品,眼下主要在做Android和IOS消息推送这块.他们提供了用于向设备发送消息的协议,详细协议内容见消息推送协议. 这篇文章将使用NodeJs基于这个推送协议完毕向A ...

  8. Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用

    近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...

  9. 对JSON数据的解析(数据推送接口)

    package com.liuqi.www; import java.util.HashMap; import java.util.Map; import org.springframework.st ...

随机推荐

  1. 为 HTTP/2 头压缩专门设计的 HPACK

          HTTP/2 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量.如何理解 HPACK 压缩呢? 如果我们约定将常用的请求头的参数用一些特殊的编号来表示,比如 GET ...

  2. 常用数据库validationQuery语句

    validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句.每种数据库都有各自的验证语句,下表中收集了几种常见数据库的validationQue ...

  3. Integer和new Integer

    Java code   ? 1 2 3 4 5 6 7 8 9 10 public static void main(String[] args) {     Integer i1=10;     I ...

  4. 移动端meta标签设置

    移动端meta标签设置 1.设置当前html文件的字符编码 <meta charset="UTF-8"> 1 2设置浏览器的兼容模式(让IE使用最新的浏览器渲染) &l ...

  5. JS将秒换成时分秒实现代码 [mark]

    将秒换成时分秒的方法有很多,在本文将为大家介绍下,使用js的具体的实现思路,有需要的朋友可以参考下,希望对大家有所帮助 http://www.jb51.net/article/41098.htm fu ...

  6. linux 软件包安装方式选择、安装位置、源码包安装

    对外提供服务,比如apache,应使用源码包安装对内提供服务,比如gcc,只是我自己使用,使用rpm包安装 rpm包不需要指定安装位置,源码包的安装需要手动指定安装位置 rpm包默认安装位置/etc/ ...

  7. zookeeper应用 - 配置服务

    一端不停的更新配置,另一端监听这个配置的变化.     需要注意的是:监听端不一定读取到所有的变化.在zk服务器发送通知到客户端,客户端读取数据注册监听之间可能发生了多次数据变化,这些数据变化是得不到 ...

  8. 通过html导出PDF如何分页

    每页一个DIV,加上样式page-break-inside:avoid; 即可分页了 .pdfpage{page-break-inside:avoid;} <div class="pd ...

  9. C#判断奇偶数的函数

    // 现代流行的"程序员"public static bool IsOdd(int n) {     while (true)    {        switch (n)     ...

  10. AWS CSAA -- 03 Identity Access Management IAM

    009 IAM 101 012 IAM Summary 问题汇总: Lab1:对root account进行加固 Lab 2:利用CloudWatch设置BillingAlarm