lishalom

阿里大鱼短信提醒服务应用实例(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文件按要求引入并实例化即可

 

分类:

技术点:

相关文章: