阿里短信封装SDK TP3.2

1.阿里短信接口需要企业认证:

2.短信需要短信模板

<?php

/**

* 阿里云短信验证码发送类

* @param string $accessKeyId key

* @param string $Secret key

* @param string $signName 短信模板名称

* @param string $templateCode 短信模板code

*/

class Demos {

// 保存错误信息

public $error;

// Access Key ID

private $accessKeyId = ‘LTAIvNlXZGhOPuG8‘;

// Access Access Key Secret

private $accessKeySecret = ‘Xqu7Ul5u1Pt6gyxMuT7sTutn0fjC8E‘;

public function __construct($cofig = array()) {

$cofig = array (

‘accessKeyId‘ => ‘accessKeyId‘,

‘accessKeySecret‘ => ‘accessKeySecret‘,

‘signName‘ => ‘短信模板名称‘,

);

// 配置参数

$this->accessKeyId = $cofig [‘accessKeyId‘];

$this->accessKeySecret = $cofig [‘accessKeySecret‘];

$this->signName = $cofig [‘signName‘];

}

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 $mobile 手机号码

* @param $verify_code

* @param $templateCode 短信模板

*/

public function sendTemplateSMS($mobile, $verify_code,$templateCode) {

$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‘ => $templateCode,

‘PhoneNumbers‘ => $mobile,

‘TemplateParam‘ => json_encode($verify_code)

);

// 计算签名并把签名结果加入请求参数

$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 );

$ch = curl_init ();

curl_setopt ( $ch, CURLOPT_URL, $url );

curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );

curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );

curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );

curl_setopt ( $ch, CURLOPT_TIMEOUT, 10 );

$result = curl_exec ( $ch );

curl_close ( $ch );

$result = json_decode($result,true);

// if (isset ( $result [‘Code‘] )) {

// $this->error = $this->getErrorMessage ( $result [‘Code‘] );

// return false;

// }

return $result;

}

/**

* 获取详细错误信息

* @param unknown $status

*/

public function getErrorMessage($status) {

// https://api.alidayu.com/doc2/apiDetail?spm=a3142.7629140.1.19.SmdYoA&apiId=25450

$message = array (

‘InvalidDayuStatus.Malformed‘ => ‘账户短信开通状态不正确‘,

‘InvalidSignName.Malformed‘ => ‘短信签名不正确或签名状态不正确‘,

‘InvalidTemplateCode.MalFormed‘ => ‘短信模板Code不正确或者模板状态不正确‘,

‘InvalidRecNum.Malformed‘ => ‘目标手机号不正确,单次发送数量不能超过100‘,

‘InvalidParamString.MalFormed‘ => ‘短信模板中变量不是json格式‘,

‘InvalidParamStringTemplate.Malformed‘ => ‘短信模板中变量与模板内容不匹配‘,

‘InvalidSendSms‘ => ‘触发业务流控‘,

‘InvalidDayu.Malformed‘ => ‘变量不能是url,可以将变量固化在模板中‘

);

if (isset ( $message [$status] )) {

return $message [$status];

}

return $status;

}

}

原文地址:https://www.cnblogs.com/PLasir/p/11447408.html

时间: 2025-01-18 01:08:58

阿里短信封装SDK TP3.2的相关文章

PHP接入阿里云市场 阿里短信服务DEMO

阿里短信服务:支持三大运营商短信.智能管道等优质能力,产品特点:3秒可达.99%到达率.超低资费. 使用阿里短信服务步骤: 1.购买服务 到https://market.aliyun.com/products/57002003/cmapi011900.html#item-1购买短信服务 2.设置签名档 3.创建短信模板 4.根据demo接入阿里短信服务 请求参数: 名称 类型 是否必须 描述 ParamString STRING 可选 模板变量,其中数字必须转换为字符串,个人用户每个变量长度必须

阿里短信服务的使用流程

阿里短信服务-使用流程 1.注册阿里账号 2.获得accessKeyId和accessKeySecret 3.创建SmsSendUtil工具类 4.创建sendSms方法 5.将阿里发短信Demo核心代码复制为sendSms的方法体内 DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>&q

.NET Core阿里大于短信发送SDK修改以及使用

一.问题背景 继上次七牛云SDK的问题之后(参考:http://www.cnblogs.com/OMango/p/8447480.html),在发送短信的功能上又出现了问题,我们短信服务使用的是阿里大于的服务,之前的平台是.NET Framework的平台,使用阿里官方的SDK并没有出现什么幺蛾子,但是转到.NET Core下后,找遍了阿里官方也并没有找到.NET Core的SDK,不得不说,在这方面.NET Core还有很长的路要走啊,虽然没有SDK,但是功能还是要完成啊,那怎么办呢?只能自己

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

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

阿里 短信认证

package com.yetech; import java.util.Random; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.a

分享使用tcb-router路由开发的云函数短信平台SDK

上篇文章我们分享了如何使用纯的云函数开发的榛子短信短信(http://smsow.zhenzikj.com)SDK,由于微信对于未付费云函数个数的限制,这种方法存在缺陷,经过改进,使用tcb-router作为路由,这样只需要整合到一个云函数中就行下载sdk和demo: http://smsow.zhenzikj.com/sdkdownload/weixinmp_yun2.html 目前SDK中包含三个功能: send(发送短信).balance(查询余额).findSmsByMessageId(

基于springboot实现Java阿里短信发送

1.接口TestController import java.util.Random; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.al

【短信验证码SDK】SMSSDK for Android 1.1.9已经发布

SMSSDK for Android 1.1.9已经发布,本次更新内容包括: 版本:V1.1.9 2015-02-02 1.添加语音验证码功能 2.内部功能优化 新版本SDK下载页面地址:http://sms.mob.com/Download

使用阿里云的短信服务发送短信

在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发送短息,因此都是基于HTTP协议做的一个数据发送而已,接触阿里云的短信服务器后,发现阿里云还增加了非常多的参数,其中包括一些秘钥和签名的内容.短信发送由于比较敏感原因,大多数应用场景是验证码或者一些固定的信息提醒,因此厂商都要求客户按预定的模板来发送,这样限制了短信的应用场景,只能根据业务进行消息定制了.本篇随笔主要介绍阿里云的短信服务