TP3.2.3 接入阿里sms 短信接口

阿里云短信接口

配置文件

config.php

//阿里大鱼
    ‘Ali_SMS‘ =>array(
        ‘sms_temp‘ =>‘短信模板‘,
        ‘sms_sign‘ =>‘签名‘,
        ‘appkey‘   =>‘appkey‘,
        ‘secretKey‘=>‘secretKey‘,
    ),

TestController.php

Vendor(‘alisms.Alisms‘);
        $alisms = new \Alisms(C(‘Ali_SMS.appkey‘),C(‘Ali_SMS.secretKey‘));
        $mobile = $phone;
        $temp_code   = C(‘Ali_SMS.sms_temp‘);

        $paramString = ‘{"code":"‘.$code.‘"}‘;
        $alisms->signName = C(‘Ali_SMS.sms_sign‘);
        $re = $alisms->smsend($mobile,$temp_code,$paramString);
        if($re[‘Code‘] ==‘OK‘){
            $info[‘status‘] = 1;
            $info[‘info‘]   = ‘短信发送成功!‘;
            echo json_encode($info);
            exit;
        }else{
            $info[‘info‘]   = ‘短信发送失败‘;
            $info[‘status‘] = 0;
            echo json_encode($info);
            exit;
        }

Alisms.php

<?php

/**
 * 阿里云短信接口
 * @author 墨白<[email protected]>
 * 示例
 *     $alisms = new \Common\Model\Alisms($accessKeyId,$accessKeySecret);
 *       $mobile = ‘18788830181‘;
 *       $code   = ‘SMS_36225243‘;
 *       $paramString = ‘{"code":"344556"}‘;
 *       $re = $alisms->smsend($mobile,$code,$paramString);
 *       print_r($re);
 *
 */

class Alisms{
    public $config = array(
              ‘Format‘  =>‘json‘, //返回值的类型,支持JSON与XML。默认为XML
              ‘Version‘ =>‘2017-05-25‘, //API版本号,为日期形式:YYYY-MM-DD,本版本对应为2016-09-27
              ‘SignatureMethod‘ =>‘HMAC-SHA1‘, //签名方式,目前支持HMAC-SHA1
              ‘SignatureVersion‘=>‘1.0‘,
            );
    private    $accessKeySecret;
    private    $http = ‘http://dysmsapi.aliyuncs.com‘;//https://sms.aliyuncs.com/‘;        //短信接口
    private    $dateTimeFormat = ‘Y-m-d\TH:i:s\Z‘; 

    public     $signName = ‘短信签名‘; //管理控制台中配置的短信签名(状态必须是验证通过)
    public     $method = ‘GET‘;
    /**
    *发送短信
    *@AccessKeyId      阿里云申请的 Access Key ID
    *@AccessKeySecret  阿里云申请的 Access Key Secret
    */
    function __construct($accessKeyId,$accessKeySecret){
         $this->config[‘AccessKeyId‘] = $accessKeyId;
         $this->AccessKeySecret = $accessKeySecret;
    }
    /**
    *发送短信
    *@mobile  目标手机号,多个手机号可以逗号分隔
    *@code 短信模板的模板CODE
    *@ParamString  短信模板中的变量;,参数格式{“no”:”123456”}, 个人用户每个变量长度必须小于15个字符
    */
    public function smsend($mobile,$code,$ParamString){
        $apiParams = $this->config;
        $apiParams["Action"]         = ‘SendSms‘;//‘SingleSendSms‘;
        $apiParams[‘TemplateCode‘]     = $code;  //短信模板的模板CODE
        //$apiParams[‘RecNum‘]         = $mobile;   //目标手机号,多个手机号可以逗号分隔
        //$apiParams[‘ParamString‘]     = $ParamString;   //短信模板中的变量;,此参数传递{“no”:”123456”}, 个人用户每个变量长度必须小于15个字符
        $apiParams[‘SignName‘]         = $this->signName;   //管理控制台中配置的短信签名(状态必须是验证通过)
        date_default_timezone_set("GMT");
        $apiParams["Timestamp"] = date($this->dateTimeFormat);
        $apiParams["SignatureNonce"]   = md5(md5(‘wbh‘).rand(100000,999999).uniqid()); //唯一随机数

        $apiParams[‘RegionId‘] = ‘cn-hangzhou‘;
        $apiParams[‘PhoneNumbers‘] = $mobile;
        $apiParams[‘TemplateParam‘] = $ParamString;

        $apiParams["Signature"] = $this->computeSignature($apiParams, $this->AccessKeySecret);//签名

        $tag = ‘?‘;
        $requestUrl = $this->http;
        foreach ($apiParams as $apiParamKey => $apiParamValue){
            $requestUrl .= $tag."$apiParamKey=" . urlencode($apiParamValue);
            $tag = ‘&‘;
        }
        return $this->postSMS($requestUrl);
    }
    private function postSMS($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        $output = curl_exec($ch);
        curl_close($ch);
        return json_decode($output,true);
/*
        $opts = array(
            ‘http‘=>array(
                ‘method‘=>$this->method,
                ‘timeout‘=>600,
                ‘header‘=>‘Content-Type: application/x-www-form-urlencoded‘,
            )
        );
        $html = file_get_contents($url, false, stream_context_create($opts));
        if($html){
            return json_decode($html,true);
        }else{
            return false;
        }*/
    }

    //生成取短信签名
    private function computeSignature($parameters, $accessKeySecret){
        ksort($parameters);
        $canonicalizedQueryString = ‘‘;
        foreach($parameters as $key => $value){
            $canonicalizedQueryString .= ‘&‘ . $this->percentEncode($key). ‘=‘ . $this->percentEncode($value);
        }
        $stringToSign = $this->method.‘&%2F&‘ . $this->percentencode(substr($canonicalizedQueryString, 1));
        $signature = $this->signString($stringToSign, $accessKeySecret."&");
        return $signature;
    }
    protected function percentEncode($str){
        $res = urlencode($str);
        $res = preg_replace(‘/\+/‘, ‘%20‘, $res);
        $res = preg_replace(‘/\*/‘, ‘%2A‘, $res);
        $res = preg_replace(‘/%7E/‘, ‘~‘, $res);
        return $res;
    }
    private function signString($source, $accessSecret){
        return    base64_encode(hash_hmac(‘sha1‘, $source, $accessSecret, true));
    }
}

原文地址:https://www.cnblogs.com/inkwhite/p/8607464.html

时间: 2025-01-11 17:22:14

TP3.2.3 接入阿里sms 短信接口的相关文章

阿里大鱼短信接口整合Tp3.2.3开发整理

阿里大鱼 http://www.alidayu.com/ 的短信接口总体是不错的,别安驹个人认为不管是从性价比还是稳定性上都是跟同类的短信接口好些,毕竟是大公司的东西不会差到哪去.下面把之前开发的短信接口做个整理. 1,登陆阿里大鱼的管理中心新增自己的应用,然后使用什么模板请提交审核,此处不做多说. 2,核心步骤,整理阿里大鱼给出的php示例核心包,不过别安驹已经为你整理好了只需要下载即可  核心包传送门 (ps:解压密码:http://www.bieanju.com/). 3,前台调用发送短信

对接阿里云短信接口

阿里云短信服务 简单说明 之前使用过阿里的阿里大于这个短信代发服务,今天使用的是阿里云最新的一个短信代发服务,文档真的有点不详细,加上网上的博客也太少了,几经蹉跎还是把它给搓出来了,供大家学习 阿里云短信 首先没用过的玩家需要去阿里云注册账户,然后开启两个私钥,这两个密钥是我们的必需品 然后去申请签名和模版,这个也是我们的必需品 现在不怎么好申请了,建议申请理由都写成个人项目测试啥的,过不了就多申请几次,我申了三次才ojbk! 上面两个环境已经装备好了的你,怎么可以吃霸王餐呢?当然是充钱进去呀,

asp.net mvc 接入阿里大于 短信验证码发送

项目前端页面实例 第1步:登录阿里大于控制台 https://www.alidayu.com/center/user/account?spm=0.0.0.0.P1K1jG 第2步:创建应用 第3步:配置短信签名 第4步:配置短信模板 第5步:前端 <tr class="margin-top"> <td class="padding-top text-center">手机号</td> <td><input type

阿里大鱼短信接口

阿里大于短信验证实现完整代码分享 http://bbs.2ccc.com/topic.asp?topicid=515649 补充:跨平台的例子可以去csdn下载这位大神的demo http://download.csdn.net/detail/hansxia888/9603061 1 这两天搞那个sign,搞的烦躁,问了一下论坛的那位同学,开口500. 2 唉,delphi这种偏门的就是这样,啥都贵. 3 后来想想用C#按阿里那边的帮助文档写了个,可以正常发送.然后把C#翻译成Delphi就可以

阿里大于短信接口提示500错误的解决方法

这两天做公司项目的邀请加入页面时需要调试阿里大于的短信接口,因为项目中其他地方也有用到这个接口,老大已经写好了,于是我就直接拿过来用了,可是不管怎么调试服务器那边都是一直返回500错误[无可用用户信息],在网上搜了好多资料来看,可是都没有找到相关的,因为之前做另一个项目时自己也亲自接入过这个接口,当时是可以用的,于是先在本地试了下那个项目的大于接口,发现是正常的,于是就把那个项目的代码直接搬了过来,可是原来好好的代码一般到了现在项目里面就不能用了,真的是头痛死了,调的心里都烦了,于是就想着先跳过

THINKPHP3.2.3增加阿里云短信接口思路整理

https://help.aliyun.com/document_detail/55359.html?spm=5176.product44282.4.7.O4lc1n 阿里云短信服务地址,感冒的下载看看 1 文件存放位置的问题 阿里云的短信接口 属于第三方扩展 所以文件放在 thinkphp\vendor\ 比如起名message 把SDK的文件都存到里面 2 把实现功能的代码 写好 放在message目录 不过注意文件的路径 代码里面的文件头 引用的文件地址用类似的 require_once

阿里大鱼短信接口 for Thinkphp

不得不说阿里云为创业者在起步时期提供了不少便利,短信接口不管是web应用还是APP都必不可少.大鱼一张口,这是要生吞其他小虾米的节奏啊,四分的价格很便宜了,现在注册会送60元代金券,时间不到一个月,也就是让你免费调试,短信发送效果很好,基本能够达到承诺的三秒,一般情况两三秒,具体效果还待检验,好了,直奔主题. 第一步:注册阿里大鱼账号:http://www.alidayu.com 第二步:进入<开发者控制台>--><应用管理>中创建应用,应用标签选择"阿里大鱼&qu

调用阿里的短信接口!总结,精辟!!!

接口的调用 总结:首先在pom文件中加入阿里公司的jar包,利用springmvc框架写一个方法,在所需要的地方调用即可.详细的步骤请看下面的说明. 1.在项目pom文件中加入阿里的jar包 2.在配置文件中加入公司开的户,和链接!短信发送一般都是需要收取费用的.注意,配置文件一定要加载到框架的容器中,方便在代码中取值. 3.控制层的代码!!!!!! /** * 短信的控制层 *title: *@author taotk *@2016年8月12日 *@company  */@Controller

pyhthon 利用爬虫结合阿里大于短信接口实现短信发送天气预报

1 # -*- coding: utf-8 -*- 2 ''''' 3 SDK for alidayu 4 5 requires: python3.x, requests 6 7 @author: [email protected] 8 requests 打包出错故替换成urllib库 9 ''' 10 11 #import requests 12 import urllib.request 13 import urllib.parse 14 import hashlib 15 from tim