当前位置: 首页 > news >正文

适合PbootCMS的阿里云短信发送类

前言介绍

一款大佬分享的简单方便阿里云短信封装代码,不用官网复杂的SDK,快速上手。

现在我把它适配成pbootcms,可以拿来快速制作短信发送功能。

封装代码

<?php
/*** @author CMS88*  阿里云SMS*/
namespace core\sms;
use core\basic\Config;
class AliyunSms {// 保存错误信息public $error;// Access Key IDprivate $accessKeyId = '';// Access Access Key Secretprivate $accessKeySecret = '';// 签名private $signName = '';// 模版IDprivate $templateCode = '';public function __construct() {// 配置参数$this->accessKeyId = Config::get('sms_appid');$this->accessKeySecret = Config::get('sms_secret');$this->signName = Config::get('sms_signame');$this->templateCode = Config::get('sms_checkcodetpl');}private function percentEncode($string) {$string = urlencode ( $string );$string = preg_replace ( '/\+/', '%20', $string );$string = preg_replace ( '/\*/', '%2A', $string );$string = preg_replace ( '/%7E/', '~', $string );return $string;}/*** 签名* @param unknown $parameters            * @param unknown $accessKeySecret            * @return string*/private function computeSignature($parameters, $accessKeySecret) {ksort( $parameters );$canonicalizedQueryString = '';foreach ( $parameters as $key => $value ) {$canonicalizedQueryString .= '&' . $this->percentEncode ( $key ) . '=' . $this->percentEncode ( $value );}$stringToSign = 'GET&%2F&' . $this->percentencode ( substr ( $canonicalizedQueryString, 1 ) );$signature = base64_encode ( hash_hmac ( 'sha1', $stringToSign, $accessKeySecret . '&', true ) );return $signature;}/*** @param unknown $mobile            * @param unknown $verify_code            **/public function send_verify($mobile, $tpljson) {$params = array (//此处作了修改'SignName' => $this->signName,'Format' => 'JSON','Version' => '2017-05-25','AccessKeyId' => $this->accessKeyId,'SignatureVersion' => '1.0','SignatureMethod' => 'HMAC-SHA1','SignatureNonce' => uniqid (),'Timestamp' => gmdate ( 'Y-m-d\TH:i:s\Z' ),'Action' => 'SendSms','TemplateCode' => $this->templateCode,'PhoneNumbers' => $mobile,//'TemplateParam' => '{"code":"' . $verify_code . '"}' 'TemplateParam' => $tpljson   //更换为自己的实际模版);//var_dump($params);die;// 计算签名并把签名结果加入请求参数$params ['Signature'] = $this->computeSignature( $params, $this->accessKeySecret );// 发送请求(此处作了修改)//$url = 'https://sms.aliyuncs.com/?' . http_build_query ( $params );$url = 'http://dysmsapi.aliyuncs.com/?' . http_build_query ( $params );$result = json_decode( get_url($url) );if( isset($result->Code) && $result->Code=='OK' ) {return ['code'=>1,'msg'=>$result->Message];}else{return ['code'=>0,'msg'=>$result->Message];}}
}

相关文章:

  • 使用Lua脚本保证原子性的Redis分布式锁实现
  • gcn+tcn+transformer入侵检测
  • Java基础 - 练习(五)根据今天日期获取一周内的日期(基姆拉尔森公式)
  • SAP AI Copilot Joule有可能是对SAP顾问的王炸
  • python pyautogui实现图片识别点击失败后重试
  • 【linux】操作系统使用wget下载网络文件,内核tcpv4部分运行日志
  • 【ClickHouse】副本、分片集群 (六)
  • 随机产生一些江河上的坐标数据
  • 秋招突击——6/17——复习{整理昨天的面试资料}——新作{删除链表倒数第n个节点}
  • Jmeter多个请求按照比例并发压测的几种方式
  • POI:接收上传上来的excel,解析并导入到数据库
  • Kafka中的时间轮算法
  • 2024广东省职业技能大赛云计算赛项实战——Ansible部署Zabbix
  • error: the type ‘const zjloc::<lambda(const Vec2i, const Vec2i)>’
  • JAVA NIO(二) Buffer和Channel
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • Java基本数据类型之Number
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • MySQL的数据类型
  • opencv python Meanshift 和 Camshift
  • PHP变量
  • redis学习笔记(三):列表、集合、有序集合
  • Sass Day-01
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 初探 Vue 生命周期和钩子函数
  • 构建工具 - 收藏集 - 掘金
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前嗅ForeSpider中数据浏览界面介绍
  • 让你的分享飞起来——极光推出社会化分享组件
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 微信开源mars源码分析1—上层samples分析
  • 一些关于Rust在2019年的思考
  • python最赚钱的4个方向,你最心动的是哪个?
  • 说说我为什么看好Spring Cloud Alibaba
  • #APPINVENTOR学习记录
  • #Linux(make工具和makefile文件以及makefile语法)
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (35)远程识别(又称无人机识别)(二)
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (简单) HDU 2612 Find a way,BFS。
  • (十七)、Mac 安装k8s
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .NET C# 操作Neo4j图数据库
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net FrameWork简介,数组,枚举
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • @AliasFor 使用
  • @Query中countQuery的介绍
  • @Repository 注解