niushop商城系统短信接口替换

来源:互联网 发布:淘宝店需要那些条件 编辑:程序博客网 时间:2024/06/05 20:38

Niushop是一款基于thinkphp5.0 MVC+service框架的开源软件,方便二次开发与集成,今天我就来分享一下,如何进行二次开发。我以替换短信接口为例,一步一步的手把手教大家开发过程,我们做演示的短信平台是短信宝(http://www.smsbao.com)短信平台,我们公司和短信宝平台合作好几年了,他们的平台非常稳定,而且快速,注册还送免费测试短信,大家可以在短信宝平台注册一个账号,进行测试。

首先,我们先更换后台的显示界面文件。打开模板文件,替换一下模板文件。打开项目/template/admin/Config/messageConfig.html,替换的代码从138行~160行,代码如下图所示:

<div class="set-style">    <dl>        <dt>是否开启:</dt>        <dd style="width:5%;">                <input id="sms_is_use" type="checkbox" class="checkbox" {if condition="$mobile_message.is_use=='1'"}checked="checked"{/if}/>        </dd>        <dd style="width:20%;color:#666;" class="showmessage">当前使用短信宝短信配置</dd>    </dl>    <dl>        <dt>短信宝帐号:</dt>        <dd>            <input id="app_key" type="text" value="{$mobile_message['value']['appKey']}" /> 立即<a href="http://www.smsbao.com" target="_blank">免费注册</a>短信宝账号        </dd>    </dl>    <dl>        <dt>短信宝密码:</dt>        <dd>            <input id="secret_key" type="password" value="{$mobile_message['value']['secretKey']}" />        </dd>    </dl>    <button class="edit_button" onclick="setConfigAjax();">提交</button></div>

打开项目/template/admin/Config/notifySmsTemplate.html,替换的代码从191行~203行,代码如下图所示:

<div class="right_main">    <div class="main-top">您正在编辑<a href="javascript:;" id="update_nameid"></a>通知模板</div>    <div class="qianming">          <div style="width:75px;float:left;">模板:    </div>    <input type="text" name="" id="template_titleid" value="{$template_select.template_title}" style="margin-right: 15px;"/></div>    <div class="qianming"><input type="text" name="" id="signNameid" style="margin-right: 15px;" value="{$template_select.sign_name  }"/></div>    <div class="bl">    <div style="width:75px;float:left;">可用变量:</div>    <div style="width:88%;float: left;font-size:13px;" id="user_variable">    {foreach name="template_item_list" item="item_obj"}    {$item_obj.replace_name}({$item_obj.item_name}),        {/foreach}    </div>    </div></div>

经过替换后,所有的显示都变成短信宝短信平台的了。第一步完成。接下来替换发送短信的业务代码。修改项目/data/extend/hook/Notify.php文件,代码如下:

<?phpnamespace data\extend\hook;use data\model\WebSiteModel;use data\model\UserModel;use data\model\ConfigModel;use data\model\NoticeTemplateModel;use data\model\NsOrderGoodsModel;use data\model\NsOrderModel;use phpDocumentor\Reflection\Types\This;use data\model\NsOrderGoodsExpressModel;class Notify{    public $result=array(        "code"=>0,        "message"=>"success",        "param"=>""    );    /**     * 邮件的配置信息     * @var unknown    */    public $email_is_open=0;    public $email_host="";    public $email_port="";    public $email_addr="";    public $email_id="";    public $email_pass="";    /**     * 短信的配置信息     * @var unknown     */    public $mobile_is_open;    public $appKey="";    public $secretKey="";    public $freeSignName="";    public $shop_name;    public $ali_use_type=0;    /**     * 得到系统通知的配置信息     * @param unknown $shop_id     */    private function getShopNotifyInfo($shop_id){        $website_model=new WebSiteModel();        $website_obj=$website_model->getInfo("1=1", "title");        if(empty($website_obj)){            $this->shop_name="NiuShop开源商城";        }else{            $this->shop_name=$website_obj["title"];        }        $config_model=new ConfigModel();        #查看邮箱是否开启        $email_info=$config_model->getInfo(["instance_id"=>$shop_id, "`key`"=>"EMAILMESSAGE"], "*");        if(!empty($email_info)){            $this->email_is_open=$email_info["is_use"];            $value=$email_info["value"];            if(!empty($value)){                $email_array=json_decode($value, true);                $this->email_host=$email_array["email_host"];                $this->email_port=$email_array["email_port"];                $this->email_addr=$email_array["email_addr"];                $this->email_id=$email_array["email_id"];                $this->email_pass=$email_array["email_pass"];            }        }        $mobile_info=$config_model->getInfo(["instance_id"=>$shop_id, "`key`"=>"MOBILEMESSAGE"], "*");        if(!empty($mobile_info)){            $this->mobile_is_open=$mobile_info["is_use"];            $value=$mobile_info["value"];            if(!empty($value)){                $mobile_array=json_decode($value, true);                $this->appKey=$mobile_array["appKey"];                $this->secretKey=$mobile_array["secretKey"];                $this->freeSignName=$mobile_array["freeSignName"];                $this->ali_use_type=$mobile_array["user_type"];                if(empty($this->ali_use_type)){                    $this->ali_use_type=0;                }            }        }    }    public function sendSMS($appkey, $secret, $signName, $smsParam, $send_mobile, $template_code)    {       $content = strtr($template_code,$smsParam);//替换模板中的变量       $contents = '【'.$signName.'】'.$content;       $url = 'http://api.smsbao.com/sms?u='.$appkey.'&p='.md5($secret).'&m='.$send_mobile.'&c='.$contents;       $result = file_get_contents($url);       return $result;    }    /**     * 查询模板的信息     * @param unknown $shop_id     * @param unknown $template_code     * @param unknown $type     * @return unknown     */    private function getTemplateDetail($shop_id, $template_code, $type){       $template_model=new NoticeTemplateModel();       $template_obj=$template_model->getInfo(["instance_id"=>$shop_id, "template_type"=>$type, "template_code"=>$template_code]);       return $template_obj;    }    /**     * 处理阿里大于 的返回数据     * @param unknown $result     */    private function dealAliSmsResult($result){        $deal_result=array();        try {            if($this->ali_use_type==0){                #旧用户发送                if(!empty($result)){                    if(!isset($result->result)){                        $result=json_decode(json_encode($result), true);                        #发送失败                        $deal_result["code"]=$result["code"];                        $deal_result["message"]=$result["msg"];                    }else{                        #发送成功                        $deal_result["code"]=0;                        $deal_result["message"]="发送成功";                    }                }            }else{                #新用户发送                if(!empty($result)){                    if($result->Code=="OK"){                        #发送成功                        $deal_result["code"]=0;                        $deal_result["message"]="发送成功";                    }else{                        #发送失败                        $deal_result["code"]=-1;                        $deal_result["message"]=$result->Message;                    }                }          }        } catch (\Exception $e) {            $deal_result["code"]=-1;            $deal_result["message"]="发送失败!";        }        return $deal_result;    }    /**     * 用户注册成功后     * @param string $params     */    public function registAfter($params=null){        /**         * 店铺id         */        $shop_id=$params["shop_id"];        #查询系统配置信息        $this->getShopNotifyInfo(0);        /**         * 用户id         */        $user_id=$params["user_id"];        $user_model=new UserModel();        $user_obj=$user_model->get($user_id);        $mobile="";        $user_name="";        $email="";        if(empty($user_obj)){            $user_name="用户";        }else{            $user_name=$user_obj["user_name"];            $mobile=$user_obj["user_tel"];            $email=$user_obj["user_email"];        }        #短信验证        if(!empty($mobile) && $this->mobile_is_open==1){            $template_obj=$this->getTemplateDetail($shop_id, "after_register", "sms");            if(!empty($template_obj) && $template_obj["is_enable"]==1){                $sms_params=array(                    "shop_name"=>$this->shop_name,                    "user_name"=>$user_name                );                $result=$this->sendSMS($this->appKey, $this->secretKey,                    $template_obj["sign_name"], $sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);                $this->result["code"]=$result->code;                $this->result["message"]=$result->msg;            }else{                $this->result["code"]=-1;                $this->result["message"]="商家没开启短信模板!";            }        }else{            $this->result["code"]=-1;            $this->result["message"]="商家没开启短信模板!";        }        #邮箱验证        if(!empty($email) && $this->email_is_open==1){            $template_obj=$this->getTemplateDetail($shop_id, "after_register", "email");            if(!empty($template_obj) && $template_obj["is_enable"]==1){                $content=$template_obj["template_content"];                $content=str_replace("{商场名称}", $this->shop_name, $content);                $content=str_replace("{用户名称}", $user_name, $content);                $result=emailSend($this->email_host, $this->email_id, $this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);                if($result == '0'){                    $this->result["code"]=0;                    $this->result["message"]="发送成功!";                }else{                    $this->result["code"]=$result;                    $this->result["message"]="发送失败!";                }            }else{                $this->result["code"]=-1;                $this->result["message"]="商家没开启邮箱验证";            }        }else{            $this->result["code"]=-1;            $this->result["message"]="商家没开启邮箱验证";        }        return $this->result;    }    /**     * 注册短信验证     * @param string $params     */    public function registBefor($params=null){        $rand = rand(100000,999999);        $mobile=$params["mobile"];        $shop_id=$params["shop_id"];        #查询系统配置信息        $this->getShopNotifyInfo($shop_id);        $result="";        if(!empty($mobile) && $this->mobile_is_open==1){            $template_obj=$this->getTemplateDetail($shop_id, "register_validate", "sms");            if(!empty($template_obj) && $template_obj["is_enable"]==1){                $sms_params=array(            );                $this->result["param"]=$rand;                if(!empty($this->appKey) && !empty($this->secretKey) && !empty($template_obj["sign_name"]) && !empty($template_obj["template_title"])){                      $sms_params=array(                    "number"=>$rand."",                );                    $result=$this->sendSMS($this->appKey, $this->secretKey,                        $template_obj["sign_name"], $sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);                    if ($result == '0') {                    $this->result["code"]=0;                    $this->result["message"]="发送成功!";                     $this->result["param"]=$rand;                    }else{                    $this->result["code"]= $result;                    $this->result["message"]="发送失败!";                     $this->result["param"]=$rand;                    }                }else{                    $this->result["code"]=-1;                    $this->result["message"]="短信配置信息有误!";                }            }else{                $this->result["code"]=-1;                $this->result["message"]="短信通知模板有误!";            }        }else{            $this->result["code"]=-1;            $this->result["message"]="店家没有开启短信验证";        }        return $this->result;    }    /**     * 注册邮箱验证     * 已测试     * @param string $params     */    public function registEmailValidation($params=null){        $rand = rand(100000,999999);        $email=$params["email"];        $shop_id=$params["shop_id"];        #查询系统配置信息        $this->getShopNotifyInfo($shop_id);        if(!empty($email) && $this->email_is_open==1){            $template_obj=$this->getTemplateDetail($shop_id, "register_validate", "email");            if(!empty($template_obj) && $template_obj["is_enable"]==1){                $content=$template_obj["template_content"];                $content=str_replace("{验证码}", $rand, $content);                if(!empty($this->email_host) && !empty($this->email_id) && !empty($this->email_pass) && !empty($this->email_addr)){                    $result=emailSend($this->email_host, $this->email_id, $this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);                    $this->result["param"]=$rand;                    if($result){                        $this->result["code"]=0;                        $this->result["message"]="发送成功!";                    }else{                        $this->result["code"]=-1;                        $this->result["message"]="发送失败!";                    }                }else{                    $this->result["code"]=-1;                    $this->result["message"]="邮箱配置信息有误!";                }            }else{                $this->result["code"]=-1;                $this->result["message"]="配置邮箱注册验证模板有误!";            }        }else{            $this->result["code"]=-1;            $this->result["message"]="店家没有开启邮箱验证";        }        return $this->result;    }    /**     * 订单发货     * @param string $params     */    public function orderDelivery($params=null){        #查询系统配置信息        $this->getShopNotifyInfo(0);        $order_goods_ids=$params["order_goods_ids"];        $order_goods_str=explode(",", $order_goods_ids);        $result="";        $user_name="";        if(count($order_goods_str)>0){            $order_goods_id=$order_goods_str[0];            $order_goods_model=new NsOrderGoodsModel();            $order_goods_obj=$order_goods_model->get($order_goods_id);            $shop_id=$order_goods_obj["shop_id"];            $order_id=$order_goods_obj["order_id"];            $order_model=new NsOrderModel();            $order_obj=$order_model->get($order_id);            $user_name=$order_obj["receiver_name"];            $buyer_id=$order_obj["buyer_id"];            $goods_name=$order_goods_obj["goods_name"];            $goods_sku=$order_goods_obj["sku_name"];            $order_no=$order_obj["out_trade_no"];            $order_money=$order_obj["pay_money"];            $goods_money=$order_goods_obj["goods_money"];            $mobile=$order_obj["receiver_mobile"];            $goods_express_model=new NsOrderGoodsExpressModel();            $express_obj=$goods_express_model->getInfo(["order_id"=>$order_id, "order_goods_id_array"=>$order_goods_ids], "*");            $sms_params=array(                "shop_name"=>$this->shop_name,                "user_name"=>$user_name,                "goods_name"=>$goods_name,                "goods_sku"=>$goods_sku,                "order_no"=>$order_no,                "order_money"=>$order_money,                "goods_money"=>$goods_money,                "express_company"=>$express_obj["express_name"],                "express_no"=>$express_obj["express_no"]            );            #短信发送            if(!empty($mobile) && $this->mobile_is_open==1){                $template_obj=$this->getTemplateDetail($shop_id, "order_deliver", "sms");                if(!empty($template_obj) && $template_obj["is_enable"]==1){                    $result=$this->sendSMS($this->appKey, $this->secretKey, $template_obj["sign_name"], $sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);                }            }            // 邮件发送            $user_model = new UserModel();            $user_obj = $user_model->get($buyer_id);            if (! empty($user_obj)) {                $email = $user_obj["user_email"];                if (! empty($email) && $this->email_is_open == 1) {                    $template_obj = $this->getTemplateDetail($shop_id, "order_deliver", "email");                    if (! empty($template_obj) && $template_obj["is_enable"] == 1) {                        $content = $template_obj["template_content"];                        $content = str_replace("{商场名称}", $this->shop_name, $content);                        $content = str_replace("{用户名称}", $user_name, $content);                        $content = str_replace("{商品名称}", $goods_name, $content);                        $content = str_replace("{商品规格}", $goods_sku, $content);                        $content = str_replace("{主订单号}", $order_no, $content);                        $content = str_replace("{订单金额}", $order_money, $content);                        $content = str_replace("{商品金额}", $goods_money, $content);                        $content = str_replace("{物流公司}", $express_obj["express_name"], $content);                        $content = str_replace("{快递编号}", $express_obj["express_no"], $content);                        $result=emailSend($this->email_host, $this->email_id,                            $this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);                    }                }            }        }    }    /**     * 订单确认     * @param string $params     */    public function orderComplete($params=null){        #查询系统配置信息        $this->getShopNotifyInfo(0);        $order_id=$params["order_id"];        $order_model=new NsOrderModel();        $order_obj=$order_model->get($order_id);        $shop_id=$order_obj["shop_id"];        $buyer_id=$order_obj["buyer_id"];        $user_name=$order_obj["receiver_name"];        $order_no=$order_obj["out_trade_no"];        $order_money=$order_obj["pay_money"];        $mobile=$order_obj["receiver_mobile"];        $sms_params=array(            "shop_name"=>$this->shop_name,            "user_name"=>$user_name,            "order_no"=>$order_no,            "order_money"=>$order_money        );            // 短信发送        if (! empty($mobile) && $this->mobile_is_open == 1) {            $template_obj = $this->getTemplateDetail($shop_id, "confirm_order", "sms");            if (! empty($template_obj) && $template_obj["is_enable"] == 1) {                $result = $this->sendSMS($this->appKey, $this->secretKey, $template_obj["sign_name"],$sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);            }        }        // 邮件发送        $user_model = new UserModel();        $user_obj = $user_model->get($buyer_id);        if (! empty($user_obj)) {            $email = $user_obj["user_email"];            if (! empty($email) && $this->email_is_open == 1) {                $template_obj = $this->getTemplateDetail($shop_id, "confirm_order", "email");                if (! empty($template_obj) && $template_obj["is_enable"] == 1) {                    $content = $template_obj["template_content"];                    $content = str_replace("{商场名称}", $this->shop_name, $content);                    $content=str_replace("{用户名称}", $user_name, $content);                    $content=str_replace("{主订单号}", $order_no, $content);                    $content=str_replace("{订单金额}", $order_money, $content);                    $result=emailSend($this->email_host, $this->email_id,                        $this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);                }            }        }    }    /**     * 订单付款成功     * @param string $params     */    public function orderPay($params=null){        #查询系统配置信息        $this->getShopNotifyInfo(0);        $order_id=$params["order_id"];        $order_model=new NsOrderModel();        $order_obj=$order_model->get($order_id);        $shop_id=$order_obj["shop_id"];        $buyer_id=$order_obj["buyer_id"];        $user_name=$order_obj["receiver_name"];        $order_no=$order_obj["out_trade_no"];        $order_money=$order_obj["pay_money"];        $mobile=$order_obj["receiver_mobile"];        $goods_money=$order_obj["goods_money"];        $sms_params=array(            "shop_name"=>$this->shop_name,            "user_name"=>$user_name,            "order_no"=>$order_no,            "order_money"=>$order_money,            "goods_money"=>$goods_money        );        #短信发送        if(!empty($mobile) && $this->mobile_is_open==1){            $template_obj=$this->getTemplateDetail($shop_id, "pay_success", "sms");            if(!empty($template_obj) && $template_obj["is_enable"]==1){                $result=$this->sendSMS($this->appKey, $this->secretKey,                    $template_obj["sign_name"],$sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);            }        }        #邮件发送        $user_model=new UserModel();        $user_obj=$user_model->get($buyer_id);        if(!empty($user_obj)){            $email=$user_obj["user_email"];            if(!empty($email) && $this->email_is_open==1){                $template_obj=$this->getTemplateDetail($shop_id, "pay_success", "email");                if(!empty($template_obj) && $template_obj["is_enable"]==1){                    $content=$template_obj["template_content"];                    $content=str_replace("{商场名称}", $this->shop_name, $content);                    $content=str_replace("{用户名称}", $user_name, $content);                    $content=str_replace("{主订单号}", $order_no, $content);                    $content=str_replace("{订单金额}", $order_money, $content);                    $content=str_replace("{商品金额}", $goods_money, $content);                    $result=emailSend($this->email_host, $this->email_id,                                $this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);                }            }        }    }    /**     * 订单创建成功     * @param string $params     */    public function orderCreate($params=null){        #查询系统配置信息        $this->getShopNotifyInfo(0);        $order_id=$params["order_id"];        $order_model=new NsOrderModel();        $order_obj=$order_model->get($order_id);        $shop_id=$order_obj["shop_id"];        $buyer_id=$order_obj["buyer_id"];        $user_name=$order_obj["receiver_name"];        $order_no=$order_obj["out_trade_no"];        $order_money=$order_obj["pay_money"];        $mobile=$order_obj["receiver_mobile"];        $goods_money=$order_obj["goods_money"];        $sms_params= array(            "shop_name"=>$this->shop_name,            "user_name"=>$user_name,            "order_no"=>$order_no,            "order_money"=>$order_money,            "goods_money"=>$goods_money        );        #短信发送        if(!empty($mobile) && $this->mobile_is_open==1){            $template_obj=$this->getTemplateDetail($shop_id, "create_order", "sms");            if(!empty($template_obj) && $template_obj["is_enable"]==1){                $result=$this->sendSMS($this->appKey, $this->secretKey,                    $template_obj["sign_name"],$sms_params, $mobile, $template_obj["template_title"], $this->ali_use_type);            }        }            // 邮件发送        $user_model = new UserModel();        $user_obj = $user_model->get($buyer_id);        if (! empty($user_obj)) {            $email = $user_obj["user_email"];            if (! empty($email) && $this->email_is_open == 1) {                $template_obj = $this->getTemplateDetail($shop_id, "create_order", "email");                if (! empty($template_obj) && $template_obj["is_enable"] == 1) {                    $content = $template_obj["template_content"];                    $content = str_replace("{商场名称}", $this->shop_name, $content);                    $content = str_replace("{用户名称}", $user_name, $content);                    $content = str_replace("{主订单号}", $order_no, $content);                    $content = str_replace("{订单金额}", $order_money, $content);                    $content = str_replace("{商品金额}", $goods_money, $content);                    $result = emailSend($this->email_host, $this->email_id, $this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);                }            }        }    }    /**     * 找回密码     * @param string $params     * @return multitype:number string     */    public function forgotPassword($params=null){        $send_type=$params["send_type"];        $send_param=$params["send_param"];        $shop_id=$params["shop_id"];        $this->getShopNotifyInfo($shop_id);        $rand = rand(100000,999999);        $template_obj=$this->getTemplateDetail($shop_id, "forgot_password", $send_type);        if($send_type=="email"){            #邮箱验证            if($this->email_is_open==1){                if(!empty($template_obj) && $template_obj["is_enable"]==1){                    #发送                    $content=$template_obj["template_content"];                    $content=str_replace("{验证码}", $rand, $content);                    $result=emailSend($this->email_host, $this->email_id, $this->email_pass, $this->email_addr, $send_param, $template_obj["template_title"], $content);                    $this->result["param"]=$rand;                    if($result){                        $this->result["code"]=0;                        $this->result["message"]="发送成功!";                    }else{                        $this->result["code"]=-1;                        $this->result["message"]="发送失败!";                    }                }else{                    $this->result["code"]=-1;                    $this->result["message"]="商家没有设置找回密码的模板!";                }            }else{                $this->result["code"]=-1;                $this->result["message"]="商家没开启邮箱验证!";            }        }else{            #短信验证            if($this->mobile_is_open==1){                if(!empty($template_obj) && $template_obj["is_enable"]==1){                    #发送                    $sms_params=array(                    "number"=>$rand.""                        );                        $result=$this->sendSMS($this->appKey, $this->secretKey,                            $template_obj["sign_name"],$sms_params, $send_param, $template_obj["template_title"], $this->ali_use_type);                         if ($result == '0') {                    $this->result["code"]=0;                    $this->result["message"]="发送成功!";                     $this->result["param"]=$rand;                    }else{                    $this->result["code"]= $result;                    $this->result["message"]="发送失败!";                     $this->result["param"]=$rand;                    }                }else{                    $this->result["code"]=-1;                    $this->result["message"]="商家没有设置找回密码的短信模板!";                }            }else{                $this->result["code"]=-1;                $this->result["message"]="商家没开启短信验证!";            }        }        return $this->result;    }    /**     * 用户绑定手机号     * @param string $params     */    public function bindMobile($params=null){        $rand = rand(100000,999999);        $mobile=$params["mobile"];        $shop_id=$params["shop_id"];        $user_id=$params["user_id"];        #查询系统配置信息        $this->getShopNotifyInfo($shop_id);        if(!empty($mobile) && $this->mobile_is_open==1){            $template_obj=$this->getTemplateDetail($shop_id, "bind_mobile", "sms");            if(!empty($template_obj) && $template_obj["is_enable"]==1){                $user_model=new UserModel();                $user_obj=$user_model->get($user_id);                $sms_params=array(                    "number"=>$rand."",                    "user_name"=>$user_obj["user_name"]                );                $this->result["param"]=$rand;                if(!empty($this->appKey) && !empty($this->secretKey) && !empty($template_obj["sign_name"]) && !empty($template_obj["template_title"])){                    $result=$this->sendSMS($this->appKey, $this->secretKey,                                    $template_obj["sign_name"], json_encode($sms_params), $mobile, $template_obj["template_title"], $this->ali_use_type);                     if ($result == '0') {                    $this->result["code"]=0;                    $this->result["message"]="发送成功!";                     $this->result["param"]=$rand;                    }else{                    $this->result["code"]= $result;                    $this->result["message"]="发送失败!";                     $this->result["param"]=$rand;                    }                }else{                    $this->result["code"]=-1;                    $this->result["message"]="短信配置信息有误!";                }            }else{                $this->result["code"]=-1;                $this->result["message"]="短信通知模板有误!";            }        }else{            $this->result["code"]=-1;            $this->result["message"]="店家没有开启短信验证";        }        return $this->result;    }    /**     * 用户绑定邮箱     * @param string $params     */    public function bindEmail($params=null){        $rand = rand(100000,999999);        $email=$params["email"];        $shop_id=$params["shop_id"];        $user_id=$params["user_id"];        #查询系统配置信息        $this->getShopNotifyInfo($shop_id);        if(!empty($email) && $this->email_is_open==1){            $template_obj=$this->getTemplateDetail($shop_id, "bind_email", "email");            if(!empty($template_obj) && $template_obj["is_enable"]==1){                $user_model=new UserModel();                $user_obj=$user_model->get($user_id);                $content=$template_obj["template_content"];                $content=str_replace("{验证码}", $rand, $content);                $content=str_replace("{用户名称}", $user_obj["user_name"], $content);                $this->result["param"]=$rand;                if(!empty($this->email_host) && !empty($this->email_id) && !empty($this->email_pass) && !empty($this->email_addr)){                    $result=emailSend($this->email_host, $this->email_id, $this->email_pass, $this->email_addr, $email, $template_obj["template_title"], $content);                    if($result){                        $this->result["code"]=0;                        $this->result["message"]="发送成功!";                    }else{                        $this->result["code"]=-1;                        $this->result["message"]="发送失败!";                    }                }else{                    $this->result["code"]=-1;                    $this->result["message"]="邮箱配置信息有误!";                }            }else{                $this->result["code"]=-1;                $this->result["message"]="邮箱通知模板有误!";            }        }else{            $this->result["code"]=-1;            $this->result["message"]="店家没有开启邮箱验证";        }        return $this->result;    }}?>

修改完成之后,短信宝的接口替换完成了,但是niushop1.05这个版本用户注册成功后发送短信失败这个BUG在此次演示中也修复了,只需要修改项目/data/service/Member.php中的registerMember方法,代码如下:

    public function registerMember($user_name, $password, $email, $mobile, $user_qq_id, $qq_info, $wx_openid, $wx_info, $wx_unionid)    {        if(trim($user_name) != ""){            $is_false = $this->verifyValue($user_name, $password, "plain");        }else{            if($mobile != "" && $email ==""){                 $is_false = $this->verifyValue($user_name, $password, "mobile");            }else{                 $is_false = $this->verifyValue($user_name, $password, "email");            }        }        if(!$is_false){            return USER_WORDS_ERROR;        }        $res = parent::add($user_name, $password, $email, $mobile, 0, $user_qq_id, $qq_info, $wx_openid, $wx_info, $wx_unionid, 1);        if ($res > 0) {            if ($mobile) {                $params['shop_id'] = 0;                $params['user_id'] = $res;                $result = runhook('Notify', 'registAfter', $params);            }            //获取默认会员等级id             $member_level = new NsMemberLevelModel();            $level_info = $member_level->getInfo(['is_default' => 1], 'level_id');            $member_level = $level_info['level_id'];            $member = new NsMemberModel();            $data = array(                'uid' => $res,                'member_name' => $user_name,                'member_level'=>$member_level,                'reg_time' => date("Y-m-d H:i:s", time())            );            $retval = $member->save($data);            // 注册会员送积分            $promote_reward_rule = new PromoteRewardRule();            // 添加关注            switch (NS_VERSION) {                case NS_VER_B2C:                    break;                case NS_VER_B2C_FX:                    if (! empty($_SESSION['source_uid'])) {                        // 判断当前版本                        $nfx_user = new NfxUser();                        $nfx_user->userAssociateShop($res, 0, $_SESSION['source_uid']);                    } else {                        // 判断当前版本                        $nfx_user = new NfxUser();                        $nfx_user->userAssociateShop($res, 0, 0);                    }                    break;            }            // 平台赠送积分            $promote_reward_rule->RegisterMemberSendPoint(0, $res);            // 直接登录            if (! empty($user_name)) {                $this->login($user_name, $password);            } elseif (! empty($mobile)) {                $this->login($mobile, $password);            } elseif (! empty($user_qq_id)) {                $this->qqLogin($user_qq_id);            } elseif (! empty($wx_openid)) {                $this->wchatLogin($wx_openid);            } elseif (! empty($wx_unionid)) {                $this->wchatUnionLogin($wx_unionid);            }        }        return $res;    }

这样用户注册成功后也可以发送短信通知了,我们在添加短信模版的时候,会发现超过50个字符后的文字是没有的,这是因为在数据库中限制了模版的长度为50,我们只需要修改一下字段长度就可以了。在项目/application/shop/controller创建一个Smsbao.php文件,代码如下:

<?php/** * Smsbao.php * 短信宝插件安装,修改模板字段长度 */namespace app\shop\controller;use think\Controller;use think\Db;class Smsbao extends Controller{    /**     * 修改长度为255     */    public function index()    {        Db::query("alter table sys_notice_template  modify column template_title varchar(255) not null");        echo '短信宝插件安装成功';    }}

我们只需要访问 域名/shop/Smsbao.php看到短信宝插件安装成功就证明字段修改成功。

经过以上的替换,短信宝的短信平台已经替换成功了,可以正常使用了。

给大家几个示例模版:

注册成功:恭喜你成功注册为shop_name的会员,会员名称为:user_tel。
注:注册成功发送短信仅限手机注册,手机注册会员名称为手机号,不能填写user_name.

注册验证:您的验证码为:number,请不要告诉他人。

充值成功:user_name你好,恭喜你在shop_name充值成功,充值金额为:recharge_money。

确认订单:user_name你好,恭喜你在shop_name购物成功,订单号为:order_no,订单金额为:order_money,有任何疑问请咨询客服。

付款成功:user_name你好,恭喜你在shop_name付款成功,订单号为:order_no,订单金额为:order_money,有任何疑问请咨询客服。

下单成功:user_name你好,恭喜你在shop_name下单成功,订单号为:order_no,订单金额为:order_money,有任何疑问请咨询客服。

原创粉丝点击