阿里大魚短信發送服務應用實例(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文件按要求引入並實例化即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM