BAOCMS(又称生活宝系统)是一款本地生活电商O2O门户系统,程序是基于PHP+mysql开发,系统安全稳定,支持二次开发,目前BAOCMS已经成为国内使用最多、功能最强大、性能最稳定的本地电商生活O2O门户系统,已经帮助100多个站长和运营商实现创业,并且绝大部分的创业者和运营商都得到很好的利润回报,领先同行业的其他网站系统。
在使用BAOCMS过程中必不可少的会出现一些问题,我在这里为大家讲解一下BAOCMS短信发送失败的问题,这里我会列举出一些常见的错误,希望对大家使用BAOCMS短信接口有些用处,我这里以BAOCMS6.5版本为例,使用的接口服务商是短信宝(http://www.smsbao.com),使用短信宝接口的原因很简单,它们稳定可靠,速度也很快,还有就是他们提供了很多方便插件,只需要复制粘贴就可以完成复杂的替换工作了。
众所周知BAOCMS的短信接口是一个万能的短信接口,只需要填写URL,编码格式,成功返回值就可以使用了,但是这中间还是有一些问题的,最简单的一个问题就是URL的填写,如下图:
在填写URL的时候有许多人不注意,导致在http前面会出现一个空格,或者整个URL之间少写一个等号,多一个空格,这些都是导致短信发送失败的原因,所以在使用之前要确定URL的准确无误。
当你的URL填写正确无误但是还是不能发送成功,那么我们就需要查看一下是不是模版没有开启,模版的位置在后台->设置->模版管理->短信模版, 如下图:
如果你所要发送的短信模版没有开启是不能发送成功的,所以一定要确定是开启状态。
URL和模版都是正确的但是短信还是发送失败,这又是怎么回事呢?
经过代码追踪,定位到出问题的代码在: 在项目/Baocms/Lib/Model文件夹下面SmsModel.class.php文件中。在这里就不每个都为大家详细说明了,我举出一个案例剩下的基本都是这种情况,为了便于分析,我把这个方法的每条语句都加上了注释,然后来大家分析一下。如图:
商城通知商家短信方法public function mallTZshop($order_id){//判断$order_id 是否为整形和数字if(is_numeric($order_id) && ($order_id = (int)$order_id)){$order_id = array($order_id); }//查找数据库,找到这条数据$orders = D('Order')->itemsByIds($order_id);//定义一个空数组$shop = array();//循环将shop_id赋值到这个空数组中foreach($orders as $val){$shop[$val['shop_id']] =$val['shop_id']; }//查找数据库,找到数据$shops = D('Shop')->itemsByIds($shop);//循环发送短信foreach($shops as $val){ // 调用发送方法 模版标签 手机号 内容$this->sendSms('sms_shop_mell', $val['mobile'], array());}return true;}
原因就出在模版标签这里,我们可以对比一下,代码中的模版标签是sms_shop_mell,而我们后台模版所设置的标签为sms_shop_mall,因为这里的不匹配导致我们的短信发送失败,只要将后台模版标签与代码中修改一致就可以发送成功了。
我上面讲述的这几个方面都是正确的,基本上短信都是可以正常发送的了。