众所周知,小猪CMS已是当前php软件市场上的领跑者了,他以功能强大,操作界面友好而著称,用户群体非常广。他使用了Thinkphp框架作为底层,所以在进行功能扩展和二次开发时都是相当容易的。今天我就来带大家来做一次替换短信接口的工作。
短信接口使用的是短信宝短信平台的短信接口,小伙伴一定会问为什么使用短信宝作为案例呢?原因很简单,因为短信宝的平台极其稳定,而且短信发送速度相当快捷,验证码和订单通知在3~5秒就能收到,用户体验非常好,所以我们公司一直和短信宝保持着合作关系,小伙伴们也可以去短信宝的官网(http://www.smsbao.com)注册一个账号,还有免费的短信条数送呢。
接下来我就来说一下开发步骤:
1. 先打开项目/Conf/sms.php文件,如果该文件不存在,则自己创建一个。在文件中配置短信宝参数:
<?php
return array (
'sms_url' => 'http://api.smsbao.com/sms',
'sms_user' => 'smsbao',
'sms_key' => 'key6523',
'sms_price' => '8',
'sms_sign' => 'pigcms',
'sms_mp' => '13888888888',
'reg_mp_verify' => '0',
);
2.打开项目/PigCms/Lib/ORG/Sms.class.php文件,找到第35行的sendSms方法,修改方法内的短信发送接口参数,改成短信宝的接口参数。
public function sendSms($token, $content='',$mobile='', $send_time='', $charset='utf-8',$id_code = '') {
$companyid=0;
if(!(strpos($token,'_') === FALSE)){
$sarr=explode('_',$token);
$token=$sarr[0];
$companyid=intval($sarr[1]);
}
if (!$mobile){
$companyWhere=array();
$companyWhere['token']=$token;
if ($companyid){
$companyWhere['id']=$companyid;
}
$company=M('Company')->where($companyWhere)->find();
$mobile=$company['mp'];
}
$thisWxUser=M('Wxuser')->where(array('token'=>Sms::_safe_replace($token)))->find();
$thisUser=M('Users')->where(array('id'=>$thisWxUser['uid']))->find();
if ($token=='admin'){
$thisUser=array('id'=>0);
$thisWxUser=array('uid'=>0,'token'=>$this->token);
}
if(is_array($mobile)){
$mobile = implode(",", $mobile);
}
$content = Sms::_safe_replace($content);
$data = array(
'topdomain' => C('server_topdomain'),
'u' => C('sms_user'),
'p' =>C('sms_key') ,
'token' => $token,
'c' => $content,
'm'=>$mobile,
'mobileids'=>'11'
);
$post = '';
foreach($data as $k=>$v) {
$post .= $k.'='.$v.'&';
}
// 短信宝接口配置
$smsapi_senturl="http://api.smsbao.com/sms";
$uid =C('sms_user');
$pwd =C('sms_key') ;
$mobileids=C('mobileids');
$return=Sms::send_SMS($smsapi_senturl,$uid,$pwd,$mobile,$content,$mobileids);
$arr = explode('&',$return);
$sta=explode("=",$arr[1]);
$this->statuscode = $sta[1];
//增加到本地数据库
$row=array('uid'=>$thisUser['id'],'token'=>$thisWxUser['token'],'time'=>time(),'mp'=>$mobile,'text'=>$content,'status'=>$this->statuscode,'price'=>C('sms_price'));
M('Sms_record')->add($row);
if (intval($this->statuscode)==100&&$token!='admin'){
M('Users')->where(array('id'=>$thisWxUser['uid']))->setDec('smscount');
}
return $return;
}
3.最后我们修改一下后台配置界面文件。打开项目/tpl/System/Site/sms.html,修改为如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>短信接口</title>
<link href="{pigcms::RES}/images/style1.css" type="text/css" rel="stylesheet">
<link href="{pigcms::RES}/images/jquery-1.7.2.min.js" type="text/css" rel="stylesheet">
<link href="{pigcms::RES}/images/jquery.form.js" type="text/css" rel="stylesheet">
<meta http-equiv="x-ua-compatible" content="ie=7" />
</head>
<body class="warp">
<include file="Site:public" />
<script>
function sendtest(){
location.href="{pigcms::U('Site/smssendtest')}&mp="+document.getElementById('sms_mp').value;
}
</script>
<div id="artlist">
<div id="btl">
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="addn">
<form id="myform" action="{pigcms::U('Site/insert')}" method="post">
<tr>
<td height="38" align="right"><strong>共售出:</strong></td>
<td>{pigcms:$total|default='0'}条
</td>
</tr>
<tr>
<td height="38" align="right"><strong>接口地址:</strong></td>
<td><input type="text" name="sms_url" value="{pigcms::C('sms_url')}" class="ipt" size="45" /><span> 可不用填写</span>
</td>
</tr>
<tr>
<td height="38" align="right"><strong>用户名:</strong></td>
<td><input type="text" name="sms_user" value="{pigcms::C('sms_user')}" class="ipt" size="45" /><span> </span><span> <a href="http://www.smsbao.com">短信宝注册</a></span>
</td>
</tr>
<tr>
<td height="38" align="right"><strong>短信key:</strong></td>
<td><input type="text" name="sms_key" value="{pigcms::C('sms_key')}" class="ipt" size="45" />
</tr>
<tr>
<td height="38" align="right"><strong>价格:</strong></td>
<td><input type="text" name="sms_price" value="{pigcms::C('sms_price')}" class="ipt" size="45" /><span> 每条多少分钱(卖给客户的) </span>
</tr>
<tr>
<td height="38" align="right"><strong>签名:</strong></td>
<td><input type="text" name="sms_sign" value="{pigcms::C('sms_sign')}" class="ipt" size="45" /><span> 短信的后缀,必须带有签名</span>
</tr>
<tr>
<td height="38" align="right"><strong>测试:</strong></td>
<td><input type="text" name="sms_mp" value="{pigcms::C('sms_mp')}" id="sms_mp" class="ipt" size="45" /><span> 输入手机号以后,然后<a href="###" onclick="sendtest()" style="color:red">点击这里</a></span>进行测试
</td>
</tr>
<input type="hidden" name="reg_mp_verify" value="0" id="regOff" />
<input type="hidden" name="files" value="<?php echo base64_encode('sms.php');?>" />
<input type="hidden" name="files_hash" value="<?php echo md5('sms.php|validate_pigcms');?>" />
<tr>
<td height="38" colspan="2">
<div id="addkey"></div>
<div style="padding-left:100px;">
<input type="submit" value="保存设置" id="inpts"/>
</div>
</td>
</tr>
</form>
</table>
</div><br />
<br />
<br />
</div>
</body>
</html>
好了,短信宝接口替换全部完成。。。只需要修改3个文件,就可以完成整个修改过程,是不是很简单呀。另外,在短信宝官网中也提供了插件下载地址:http://www.smsbao.com/plugin/107.html 小伙伴们可以对着短信宝短信插件,来看我这篇文章,这样会更直观一些。