待发短信

在线客服
产品支持 短信宝客服
合作渠道 渠道合作
服务咨询

4001-021-502

工作时间

9:00-21:00

CRMEBV3.21新增短信宝短信接口

CRMEB商城系统是基于ThinkPhp6.0+Vue开发的一套新零售移动电商开源系统,包含商城、拼团、砍价、秒杀、优惠券、积分、分销等功能,更适合企业二次开发。今天小编就以新增短信接口为例,给大家讲解一下如何进行二次开发,使用的短信接口是我们短信宝短信群发平台的短信接口,我们短信宝短信群发平台的接口非常稳定,发送速度快,注册就送测试短信,推荐大家使用。

1: 打开项目:\app\admin\controller\sms\SmsConfig.php 修改大概28行代码

?
1
2
3
4
5
6
7
8
9
10
public function index(){
        $type = input('type')!=0?input('type'):0;
        $tab_id = input('tab_id');
        if(!$tab_id) $tab_id = 1;
        $this->assign('tab_id',$tab_id);
        $list = ConfigModel::getAll($tab_id)->toArray();
        $list[0]['info'] = '短信宝账号';
        $list[0]['desc'] = '短信宝账号';
        $list[1]['info'] = '短信宝密码';
        $list[1]['desc'] = '短信宝密码';

2:打开项目:\app\admin\controller\sms\SmsTemplateApply.php 修改模板相关方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
namespace app\admin\controller\sms;
 
 
 
 
use app\admin\controller\AuthController;
use crmeb\services\FormBuilder;
use crmeb\services\JsonService;
use crmeb\services\SMSService;
use crmeb\services\UtilService;
use think\facade\Route;
use app\admin\model\routine\RoutineTemplate as RoutineModel;
/**
 * 短信模板申请
 * Class SmsTemplateApply
 * @package app\admin\controller\sms
 */
class SmsTemplateApply extends AuthController
{
    /**
     * 显示资源列表
     *
     * @return string
     */
    public function index()
    {
//        $sms = new SMSService();
//        if(!$sms::$status) return $this->failed('请先填写短信配置');
        return $this->fetch();
    }
 
 
 
 
    /**
     * 异步获取模板列表
     */
    public function lst()
    {
        //重新获取模板
        $tem = new RoutineModel();
        $lst = $tem->where('status',0)->select()->toArray();
        foreach($lst as $k=>$v) {
            $lst[$k]['id']= $v['id'];
            $lst[$k]['templateid']= $v['tempid'];
            $lst[$k]['title']= $v['name'];
            $lst[$k]['mark']= "";
            $lst[$k]['type']= $v['tempkey'];
            $lst[$k]['status']= 1;
            $lst[$k]['content']= $v['content'];
            $lst[$k]['add_time']= date( "Y-m-d H:i", $v['add_time']);
        }
        return JsonService::successlayui('',$lst);
    }
 
 
 
 
    /**
     * 显示创建资源表单页.
     *
     * @return string
     * @throws \FormBuilder\exception\FormBuilderException
     */
    public function create()
    {
        $field = [
            FormBuilder::input('title','模板名称'),
            FormBuilder::textarea('text','模板内容示例','【您的短信签名】您的验证码是:{$code},有效期为{$time}分钟。如非本人操作,可不用理会。模板中的{$code}和{$time}需要替换成对应的变量,请开发者知晓。修改此项无效!'),
            FormBuilder::input('content','模板内容')->type('textarea'),
            FormBuilder::input('number','模板id'),
            FormBuilder::radio('type','模板类型',1)->options([['label'=>'验证码','value'=>1],['label'=>'通知','value'=>2],['label'=>'推广','value'=>3]])
        ];
 
 
 
 
        $form = FormBuilder::make_post_form('申请短信模板',$field,Route::buildUrl('save'),2);
 
 
 
 
        $this->assign(compact('form'));
        return $this->fetch('public/form-builder');
    }
 
 
 
 
    /**
     * 保存新建的资源
     */
    public function save()
    {
        $tem = [];
        $data = UtilService::postMore([
            ['title',''],
            ['content',''],
            ['type',0],
            ['number','']
        ]);
         //组装数据
        $tem = array(
            'tempkey'=>$data['type'],
            'name'=>$data['title'],
            'content'=>$data['content'],
            'tempid'=>$data['number'],
            'add_time'=>time()
        );
        if(!strlen(trim($data['title']))) return JsonService::fail('请输入模板名称');
        if(!strlen(trim($data['content']))) return JsonService::fail('请输入模板内容');
        if(!strlen(trim($data['number']))) return JsonService::fail('请输入模板id');
        $id = RoutineModel::insert($tem);
        if ($id) return JsonService::success('申请成功')

3:打开项目:\app\admin\model\sms\SmsRecord.php 修改84行左右

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static function sendRecord($phone, $content, $template, $record_id)
{
   ($record_id == '0')?($resultcode = 100):($resultcode = 130);
    $map = [
        'uid' => sys_config('sms_accounta'),
        'phone' => $phone,
        'content' => $content,
        'add_time' => time(),
        'template' => $template,
        'resultcode'=>$resultcode,
        'record_id' => $record_id,
        'add_ip' => app()->request->ip(),
    ];
    $msg = SmsRecord::create($map);
    if ($msg)
        return true;
    else
        return false;
}

4:打开项目:\app\admin\view\sms\sms_config\index.php 修改大概56行代码

?
1
2
3
4
5
6
7
8
                    <div class="ibox-content">
                        <div id="app">
                            <Alert type="success">如果还没有开通短信账号,可以<a target="_blank" href="https://www.smsbao.com/reg" style="color: #0000ff">立即注册</a>
                            </Alert>
                        </div>
                        <div class="p-m m-t-sm" id="configboay">
                        </div>
                    </div>

5:打开项目:\app\admin\view\sms\sms_template_apply\index.php 修改大概45行代码

?
1
2
3
<div class="layui-btn-container">
                        <button type="button" class="layui-btn layui-btn-sm" onclick="$eb.createModalFrame(this.innerText,'{:Url('create')}')">添加模板</button>
                    </div>

6:打开项目:\crmeb\services\SMSService.php 修改发送方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static function send($phone, $template, array $param)
    {
          $ret = [];
          self::auto();
          $teModel = new RoutineTemplate();
          $content =  $teModel->where('tempid',$template)->find()['content'];
          foreach($param as $key => $value) {
              $content = str_replace('{$'."$key".'}',$value,$content);
          }
          $statusStr = array(
            "0" => "短信发送成功",
            "-1" => "参数不全",
            "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
            "30" => "密码错误",
            "40" => "账号不存在",
            "41" => "余额不足",
            "42" => "帐户已过期",
            "43" => "IP地址限制",
            "50" => "内容含有敏感词"
        );
         $smsapi = "http://api.smsbao.com/";
         $user = self::$SMSAccount; //短信平台帐号
         $pass = md5(self::$SMSToken); //短信平台密码
         $content = $content;//要发送的短信内容
         $phone = $phone;//要发送短信的手机号码
         $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);
         $result = file_get_contents($sendurl) ;
         $ret["status"] = $result;
         $ret["msg"] = $statusStr[$result];
         return $ret;
    }

7:打开项目:\crmeb\services\sms\storage\Yunxin.php 修改发送方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public function send(string $phone, string $templateId, array $data = [])
{
    if (!$phone) {
        return $this->setError('Mobile number cannot be empty');
    }
    if (!$this->smsAccount) {
        return $this->setError('Account does not exist');
    }
    if (!$this->smsToken) {
        return $this->setError('Access token does not exist');
    }
    $formData['uid'] = $this->smsAccount;
    $formData['token'] = $this->smsToken;
    $formData['mobile'] = $phone;
    $formData['template'] = $this->getTemplateCode($templateId);
 
    if (is_null($formData['template'])) {
        return $this->setError('Missing template number');
    }
    $tem = new RoutineModel();
    $content = $tem->where('tempid',$formData['template'])->find()['content'];
    foreach($data as $key => $value) {
        $content = str_replace('{$'."$key".'}',$value,$content);
    }
    $statusStr = array(
        "0" => "短信发送成功",
        "-1" => "参数不全",
        "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
        "30" => "密码错误",
        "40" => "账号不存在",
        "41" => "余额不足",
        "42" => "帐户已过期",
        "43" => "IP地址限制",
        "50" => "内容含有敏感词"
    );
    $smsapi = "http://api.smsbao.com/";
    $user = $formData['uid']; //短信平台帐号
    $pass = $formData['token']; //短信平台密码
    $content = $content;//要发送的短信内容
    $phone = $formData['mobile'];//要发送短信的手机号码
    $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);
    $result= file_get_contents($sendurl) ;
    if ($result == '0'){
        $ret = [];
        $ret['data']["content"] = $content;
        $ret['data']["template"] = $formData['template'];
        $ret['data']["id"] = $result;
        return $ret;
    }else{
        return false;
    }
    }

经过上面的替换,短信宝的短信平台已经替换成功了,可以正常使用了。进行测试发送:

报备一下短信宝的VIP模板,这样就可以走短信宝的优质通道了,即便遇到敏感文字我们都不会人工审核,短信内容3~5秒就可送达。

另外:我们已经开发好完整的CRMEB_V3.21系统短信宝插件,点击此链接 下载及查看安装流程。

开源插件

最新更新

电商类

CMS类

微信类

文章标签