阿里大鱼短信发送服务应用实例(PHP SDK)
阿里大鱼短信提醒服务应用实例(php):
function.php
/** * 阿里大于发短信,用哪个模板就传哪个模板的参数 * 阿里服务器,短信模板设置:https://dayu.aliyun.com/center/tpl/list/sms 登录账号:XXX@126.com * 模板ID:SMS_70910313;内容:验证码${code},您正在进行${product}身份验证,打死不要告诉别人哦! * 模板ID:SMS_74630019;内容:您的积分已变动,${type}积分${score},余额:${over}。变动原因:${remark} * 模板ID:SMS_74620010;内容:尊敬的${really_name},您所出单的保单(${ins_no}),赠送的${type}积分:${score},已到账。 * 模板ID:SMS_74570013;内容:尊敬的${really_name},您于XX${ins_no}赠送的${type}积分(${score})已到账,可登录XX兑换商品。账号:${user_name},初始密码:身份证号码后六位,登录后请务必修改密码。XX * 模板ID:SMS_90895055;内容:尊敬的${really_name},您已成功注册(汇盟e家),账号:${account},初始密码:${password},请登录APP(注册页面可下载)修改密码。 * @param $tel * @param array $arr * @return array */ function sms_alidayu($tel, $arr=[]){ // include_once(ROOT_PATH . '/ThinkPHP/Library/Vendor/alidayu/TopSdk.php'); include_once (VENDOR_PATH.'alidayu/TopSdk.php'); $arr['ID'] = !empty($arr['ID']) ? $arr['ID'] : '';//必填,短信模板ID $arr['code'] = !empty($arr['code']) ? $arr['code'] : '';//选填,验证码 $arr['product'] = !empty($arr['product']) ? $arr['product'] : '';//选填,项目 $arr['really_name'] = !empty($arr['really_name']) ? $arr['really_name'] : '';//选填,真实姓名 $arr['user_name'] = !empty($arr['user_name']) ? $arr['user_name'] : '';//选填,用户名 $arr['ins_no'] = !empty($arr['ins_no']) ? $arr['ins_no'] : '';//选填,订单号 $arr['score'] = !empty($arr['score']) ? $arr['score'] : '';//选填,积分数 $arr['type'] = !empty($arr['type']) ? $arr['type'] : '';//选填,积分类型 $arr['over'] = !empty($arr['over']) ? $arr['over'] : '';//选填,余额 $arr['remark'] = !empty($arr['remark']) ? $arr['remark'] : '';//选填,备注 $arr['account'] = !empty($arr['account']) ? $arr['account'] : '';//选填,账号 $arr['password'] = !empty($arr['password']) ? $arr['password'] : '';//选填,密码 $arr['sign'] = !empty($arr['sign']) ? $arr['sign'] : 'XX';//选填,短信签名【XX】【XX】【XX】 $data['SMS_70910313'] = '{"code":"'.$arr['code'].'","product":"'.$arr['product'].'"}'; $data['SMS_74630019'] = '{"type":"'.$arr['type'].'","score":"'.$arr['score'].'","over":"'.$arr['over'].'","remark":"'.$arr['remark'].'"}'; $data['SMS_74620010'] = '{"really_name":"'.$arr['really_name'].'","ins_no":"'.$arr['ins_no'].'","type":"'.$arr['type'].'","score":"'.$arr['score'].'"}'; $data['SMS_74570013'] = '{"really_name":"'.$arr['really_name'].'","ins_no":"'.$arr['ins_no'].'","type":"'.$arr['type'].'","score":"'.$arr['score'].'","user_name":"'.$arr['user_name'].'"}'; $data['SMS_90895055'] = '{"really_name":"'.$arr['really_name'].'","account":"'.$arr['account'].'","password":"'.$arr['password'].'"}'; if( (strlen($tel)!=11 && strpos($tel,',')===false) || (strlen($tel)==11 && !preg_match("/^1[34578]{1}\d{9}$/",$tel))){ $res['status'] = 0; $res['message'] = '手机号码不正确!'; return $res; } if(!isset($data[$arr['ID']])){ $res['status'] = 0; $res['message'] = '短信模板ID错误'; return $res; } $c = new TopClient; $c->appkey = 'XXX'; $c->secretKey = 'XXX'; $req = new AlibabaAliqinFcSmsNumSendRequest; $req->setExtend("");//选填,公共回传参数 $req->setSmsType("normal");//短信类型,传入值请填写normal $req->setSmsFreeSignName($arr['sign']);//短信签名 $req->setSmsParam($data[$arr['ID']]);//短信模板变量 $req->setRecNum($tel);//短信接收号码 $req->setSmsTemplateCode($arr['ID']);//短信模板ID $resp = $c->execute($req); if($resp->result->success == true){ $res['status'] = 1; $res['message'] = '短信发送成功'; } else{ $content['SMS_70910313'] = '【'.$arr['sign'].'】'.'验证码'.$arr['code'].',您正在进行身份验证,打死不要告诉别人哦!'; $content['SMS_74630019'] = '【'.$arr['sign'].'】'.'您的积分已变动,'.$arr['type'].'积分'.$arr['score'].',余额:'.$arr['over'].'。变动原因:'.$arr['remark']; $content['SMS_74620010'] = '【'.$arr['sign'].'】'.'尊敬的'.$arr['really_name'].',您所出单的保单('.$arr['ins_no'].'),赠送的'.$arr['type'].'积分:'.$arr['score'].',已到账。'; $content['SMS_74570013'] = '【'.$arr['sign'].'】'.'尊敬的'.$arr['really_name'].',您于XX'.$arr['ins_no'].'赠送的'.$arr['type'].'积分('.$arr['score'].')已到账,可登录XX兑换商品。账号:'.$arr['user_name'].',初始密码:身份证号码后六位,登录后请务必修改密码。shop.ehuimeng.com'; $content['SMS_90895055'] = '【'.$arr['sign'].'】'.'尊敬的'.$arr['really_name'].',您已成功注册(XX),账号:'.$arr['account'].',初始密码:'.$arr['password'].',请登录APP(注册页面可下载)修改密码。'; $res = send_sms($tel,$content[$arr['ID']]); } return $res; }
/**
* 发送短信代码
*
* @access public
* @param
* @return array $user 用户信息数组
*/
function send_sms($mobilePhone, $content = '', $attime = '')
{
if( (strlen($mobilePhone)!=11 && strpos($mobilePhone,',')===false) || (strlen($mobilePhone)==11 && !preg_match("/^1[34578]{1}\d{9}$/",$mobilePhone))){
$res['status'] = 0;
$res['message'] = '手机号码不正确!';
return $res;
}
$post_data = array(
'account' => 'sdk_ehuimeng', //短信运行商提供的帐号
'password' => 'kjfdjhgw56', //短信运行商提供的密码
'destmobile' => $mobilePhone, //目标号码,号码与号码之间用 英文; 号分割。
'msgText' => $content, //需要发送的短信内容。 采用UTF-8编码。
'sendDateTime' => $attime, //格式如20130201120000,14位长度,非必要参数,即时短信请留空
);
$res['status'] = curlpost($post_data, 'http://www.jianzhou.sh.cn/JianzhouSMSWSServer/http/sendBatchMessage');
if ($res['status'] > 0) {
$res['message'] = '短信发送成功';
} else {
switch ($res['status']) {
case -1:
$res['message'] = '短信余额不足';
break;
case -2:
$res['message'] = '短信帐号或密码错误';
break;
case -3:
$res['message'] = '连接服务商失败';
break;
case -4:
$res['message'] = '短信发送超时';
break;
case -5:
$res['message'] = '其他错误,一般为网络问题,IP受限等';
break;
case -6:
$res['message'] = '短信内容为空';
break;
case -7:
$res['message'] = '目标号码为空';
break;
case -11:
$res['message'] = '超过最大定时时间限制';
break;
case -12:
$res['message'] = '目标号码在黑名单里';
break;
case -13:
$res['message'] = '没有权限使用该网关';
break;
case -22:
$res['message'] = 'Ip 被封停';
break;
default :
$res['message'] = '短信发送失败';
}
}
return $res;
}
TopSdk.php
<?php /** * TOP SDK 入口文件 * 请不要修改这个文件,除非你知道怎样修改以及怎样恢复 * @author xuteng.xt */ /** * 定义常量开始 * 在include("TopSdk.php")之前定义这些常量,不要直接修改本文件,以利于升级覆盖 */ /** * SDK工作目录 * 存放日志,TOP缓存数据 */ if (!defined("TOP_SDK_WORK_DIR")) { define("TOP_SDK_WORK_DIR", "/tmp/"); } /** * 是否处于开发模式 * 在你自己电脑上开发程序的时候千万不要设为false,以免缓存造成你的代码修改了不生效 * 部署到生产环境正式运营后,如果性能压力大,可以把此常量设定为false,能提高运行速度(对应的代价就是你下次升级程序时要清一下缓存) */ if (!defined("TOP_SDK_DEV_MODE")) { define("TOP_SDK_DEV_MODE", true); } if (!defined("TOP_AUTOLOADER_PATH")) { define("TOP_AUTOLOADER_PATH", dirname(__FILE__)); } /** * 注册autoLoader,此注册autoLoader只加载top文件 * 不要删除,除非你自己加载文件。 **/ require("Autoloader.php");
其他Class文件按要求引入并实例化即可