niushop商城系统短信接口替换

Niushop 开源微信商城源码+小程序源码 v5.1.7/支持二开/支持PC、手机、小程序和APP电商源码 Niushop 开源微信商城源码 v5.1.7,它是小程序源码,支持二次开发,同时支持PC、手机、小程序和APP多端电商。Niushop系统是一款基于ThinkPHP6开发的全面完善的电商解决方案。该系统具备完善的商品管理机制,涵盖了普通商品和虚拟商品两大类别。同时,为了进一步提升用户体验,Niushop系统还完善了虚拟商品的核销机制,并支持多种营销活动,如拼团、分销和多门店砍价等新兴商业模式。在配送方面,系统提供了多种选择,包括物流配送、门店自提和本地配送等。 阅读详情

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文件,代码如下:

<?php
namespace 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"];
      
NiuShop开源商城系统 SQL注入漏洞复现 NiuShop开源商城系统getShareContents接口处存在SQL注入漏洞,未授权的攻击者可以利用此漏洞获取数据库敏感信息及凭证,进一步利用可获取服务器权限。 阅读详情

相关推荐

NIUSHOP开源商城V6深度拆解:企业级应用快速搭建与二次开发指南

企业级应用开发中,商城系统常因需求复杂而陷入从零搭建的困境。成熟的开源商城项目通过模块化架构,将商品、订单、支付、库存等通用能力提前沉淀,大幅降低开发成本。本文以NIUSHOP开源商城V6为例,剖析其商城、分销、VIPCard、上门服务四大业务模块的设计原理,阐述其在快速搭建企业级应用中的技术价值。结合实际部署与二次开发场景,讲解环境配置、API对接、性能优化等关键环节,为技术团队提供一套可落地的选型与实施参考。

weixin_29597551的博客 298

NIUSHOP开源商城V6:Spring Boot+MyBatis架构与二次开发实践

企业级应用开发中,选型与架构往往决定项目交付的成败。Spring Boot 作为主流微服务与单体架构的基础框架,凭借其自动化配置和快速部署特性,成为众多中小团队搭建商城系统的首选;而 MyBatis 则通过灵活的 SQL 映射,为复杂业务逻辑提供了高可控的数据持久化方案。二者的结合,兼顾了开发效率与性能调优空间。从技术价值看,这种组合既适合快速搭建原型,也便于后续根据业务规模进行横向扩展。在电商、O2O、会员营销等场景中,开源商城系统常被用作业务底座,通过二次开发实现分销佣金、VIP 权益、服务预约等差异化

weixin_32075843的博客 326

niushop短信插件_niushop短信接口开发_niushop短信发送设置

niushop短信插件_niushop短信接口开发_niushop短信发送设置

机器学习入门指南:Jupyter Notebook实战

对于机器学习工程师而言,他们更擅长的是算法、模型、数据探索的工作,而对于工程化的能力则并不是其擅长的工作。Jupyter Notebook生成PMML文件1​​​​​​​。Jupyter Notebook生成PMML文件2​​​​​​​。PySpark Notebook建模 -折线图​​​​​​​。TensorFlowNotebook建模​​​​​​​。R Notebook建模 - 散点图​​​​​​​。PySpark Notebook建模​​​​​​​。R Notebook获取训练数据集​​​​​​​。

datacreating的博客 1975

Android 开发实战:从零到一集成 espeak-ng 实现中文离线 TTS(无需账号开箱即用)

本文详细介绍了如何在 Android 项目中集成 espeak-ng,实现中文离线语音播报。通过下载 so 库、编写 Java 接口、封装管理类,开发者可快速构建无需账号的 TTS 功能。文章覆盖从零到一的开发步骤、调试技巧及性能优化,适合中高级 Android 开发者参考。

全栈 3317

从CST到AD:高效PCB阵列设计与介质优化实战

本文详细解析了从CST电磁仿真软件到Altium Designer(AD)的PCB阵列设计全流程,重点解决毫米波天线等精密设计中模型导出、介质优化和阵列构建的核心难题。通过实战技巧,指导工程师高效处理DXF文件导入、复杂铜皮填充、空气介质实现等关键步骤,确保高精度设计从仿真到制造的顺利转换,提升工作效率与设计可靠性。

weixin_28256233的博客 439

Latex在VSCODE中编译报错`Recipe terminated with error. Retry building the project.

Latex在VSCODE中编译报错Recipe terminated with error. Retry building the project. 1 报错提示: Recipe terminated with error 2 报错原因 大概率的原因是因为latex没有添加到系统环境变量中,所有设置的编译工具没有办法找到才出现的这种情况 3 解决方案 请按照如下方式进行系统变量的添加 对windows,win+R 然后输入sysdm.cpl 在高级中选择环境变量 找到path环境变量,将txtlive中

呆呆象呆呆的博客 3万+

MATLAB配置MinGW编译器的完整指南

本文提供了在Windows系统上为MATLAB配置MinGW编译器的完整指南。详细介绍了通过MATLAB附加功能管理器在线安装和手动离线安装两种核心方法,并重点说明了如何解决常见的“未找到支持的编译器”等错误。指南包含从版本检查、环境变量配置到最终使用mex命令验证的每一步,帮助用户顺利完成MATLAB与MinGW的集成,以支持C/C++代码编译。

weixin_29031057的博客 264

【计算机三级-数据库技术】操作题大题(第1套)

从触发器的语法中可知,【1】处应该填写的是执行触发器的表,【2】处应该填写指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。使用FOR或AFTER选顶定义的触发器为后触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。转换成新的独立的模式,模式的属性由联系本身的属性及两个实体的键构成,主键由两端实体的键组合而成。实体的转换:在从ER图转换为关系模式时,一个实体转换成一个关系模式,实体的属性就是关系模式的属性,实体的键就是关系的主键。

放纵小开爱的博客 1101

STM32硬件SPI调试ADS1256的3个致命坑,CubeMX配置避坑指南

本文深入解析STM32硬件SPI调试ADS1256高精度ADC芯片时常见的3大配置陷阱,包括SPI时钟频率、时钟极性与相位、数据字节序等关键问题。通过CubeMX实战配置指南和实测数据对比,提供稳定可靠的解决方案,帮助开发者避免常见错误,提升采样精度和系统稳定性。

weixin_42550597的博客 346

Kriging克里金模型实现数据回归预测Matlab代码

Kriging克里金模型实现数据回归预测Matlab代码

天天酷科研的博客 604

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: PHPCMS短信接口替换
下一篇: ECJIA到家短信插件开发
mindev
博客等级 码龄10年 11粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值