91成人在线播放_欧美一区二区视频在线观看_91精品国产高清久久久久久_国产精品久久亚洲不卡4k岛国


待發(fā)短信

在線客服
產(chǎn)品支持 短信寶客服
合作渠道 渠道合作
服務(wù)咨詢

4001-021-502

工作時(shí)間

9:00-21:00

CRMEBV4.32新增短信寶短信接口

CRMEB商城系統(tǒng)是基于ThinkPhp6.0+Vue開發(fā)的一套新零售移動(dòng)電商開源系統(tǒng),包含商城、拼團(tuán)、砍價(jià)、秒殺、優(yōu)惠券、積分、分銷等功能,更適合企業(yè)二次開發(fā)。今天小編就以新增短信接口為例,給大家講解一下如何進(jìn)行二次開發(fā),使用的短信接口是我們短信寶短信群發(fā)平臺(tái)的短信接口,我們短信寶短信群發(fā)平臺(tái)的接口非常穩(wěn)定,發(fā)送速度快,注冊(cè)就送測(cè)試短信,推薦大家使用。
前提:執(zhí)行以下sql語(yǔ)句增加短信寶配置

1
2
3
4
5
6
7
INSERT INTO `eb_system_config_tab` (`id`, `pid`, `title`, `eng_title`, `status`, `info`, `icon`, `type`, `sort`) VALUES ('100''0''短信配置''smsbao''1''0''ios-chatboxes''0''0');
INSERT INTO `eb_system_config` ( `menu_name`, `type`, `input_type`, `config_tab_id`, `parameter`, `upload_type`, `required`, `width`, `high`, `value`, `info`, `desc`, `sort`, `status`)
VALUES ('smsbao_user''text''input''100''', 0, '''100', 0, '''短信寶賬號(hào)''短信寶賬號(hào)''0''1');
INSERT INTO `eb_system_config` ( `menu_name`, `type`, `input_type`, `config_tab_id`, `parameter`, `upload_type`, `required`, `width`, `high`, `value`, `info`, `desc`, `sort`, `status`)
VALUES ('smsbao_pwd''text''input''100''', 0, '''100', 0, '''短信寶密碼''短信寶密碼''0''1');
INSERT INTO `eb_system_config` ( `menu_name`, `type`, `input_type`, `config_tab_id`, `parameter`, `upload_type`, `required`, `width`, `high`, `value`, `info`, `desc`, `sort`, `status`)
VALUES ('sms_sign_name''text''input''100''', 0, '''100', 0, '''短信簽名''短信簽名''0''1');

1:打開項(xiàng)目:config\sms.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
'smsbao'=>[
     'template_id' => [
                //驗(yàn)證碼
                'VERIFICATION_CODE_TIME' => '您的驗(yàn)證碼是code,有效期為time分鐘。如非本人操作,可不用理會(huì)。',
                //支付成功
                'PAY_SUCCESS_CODE' => '您購(gòu)買的商品已支付成功,支付金額pay_price元,訂單號(hào)order_id,感謝您的光臨!',
                //發(fā)貨提醒
                'DELIVER_GOODS_CODE' => '親愛的用戶nickname您的商品store_name,訂單號(hào)order_id已發(fā)貨,請(qǐng)注意查收',
                //確認(rèn)收貨提醒
                'TAKE_DELIVERY_CODE' => '親,您的訂單order_id,商品store_name已確認(rèn)收貨,感謝您的光臨!',
                //管理員下單提醒
                'ADMIN_PLACE_ORDER_CODE' => 'admin_name管理員,您有一筆已支付的訂單待處理,訂單號(hào)為order_id!',
                //管理員退貨提醒
                'ADMIN_RETURN_GOODS_CODE' => 'admin_name管理員,您有一筆支付成功的訂單待處理,訂單號(hào)order_id!',
                //管理員支付成功提醒
                'ADMIN_PAY_SUCCESS_CODE' => 'admin_name管理員,您有一筆支付成功的訂單待處理,訂單號(hào)order_id!',
                //管理員確認(rèn)收貨
                'ADMIN_TAKE_DELIVERY_CODE' => 'admin_name管理員,您有一筆訂單已經(jīng)確認(rèn)收貨,訂單號(hào)order_id!',
                //改價(jià)提醒
                'PRICE_REVISION_CODE' => '您的訂單order_id,實(shí)際支付金額已被修改為pay_price',
                //訂單未支付
                'ORDER_PAY_FALSE' => '您有未付款訂單,訂單號(hào)為:order_id,商品數(shù)量有限,請(qǐng)及時(shí)付款。',
             ],
        ]

2:打開項(xiàng)目:crmeb\services\sms\Sms.php 屏蔽掉invokeClass方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    // protected function invokeClass($class)
    // {
    //     if (!class_exists($class)) {
    //         throw new \RuntimeException('class not exists: ' . $class);
    //     }
    //     $this->getConfigFile();
 
    //     if (!$this->config) {
    //         $this->config = Config::get($this->configFile . '.stores.' . $this->name, []);
    //     }
 
    //     $handleAccessToken = new AccessTokenServeService($this->config['account'] ?? '', $this->config['secret'] ?? '');
    //     $handle = Container::getInstance()->invokeClass($class, [$this->name, $handleAccessToken, $this->configFile]);
    //     $this->config = [];
    //     return $handle;
    // }

3:打開項(xiàng)目:crmeb\services\sms\storage 新增smsbao.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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
 
namespace crmeb\services\sms\storage;
 
use crmeb\basic\BaseSms;
use think\exception\ValidateException;
use think\facade\Config;
 
class SmsBao extends BaseSms
{
    /**
     * accessKeyId
     * @var string
     */
    protected $accessKeyId;
    /**
     * accessKeySecret
     * @var string
     */
    protected $accessKeySecret;
    /**
     * 簽名
     * @var string
     */
    protected $signName = '';
 
    protected $name = 'smsbao';
    /**
     * 狀態(tài)
     * @var bool
     */
    protected $status;
    protected $templateIds = [];
    protected function initialize(array $config)
    {
        parent::initialize($config);
        $this->accessKeyId = sys_config('smsbao_user''');
        $this->accessKeySecret = sys_config('smsbao_pwd''');
        if ($this->accessKeyId && $this->accessKeySecret) {
            $this->status = true;
        else {
            $this->status = false;
        }
        $this->signName = $config['sign_name'] ?? null;
        if($this->signName == null){
            $this->signName  = sys_config('sms_sign_name''');
        }
        $this->templateIds = Config::get($this->configFile . '.stores.' . $this->name . '.template_id', []);
    }
    /**
     * 提取模板code
     * @param string $templateId
     * @return null
     */
    protected function getTemplateCode(string $templateId)
    {
        return $this->templateIds[$templateId] ?? null;
    }
    /**
     * 發(fā)送短信
     * @param $phone
     * @param $templateId
     * @param $data
     * @return bool|string
     */
    public function send($phone, $templateId, array $data = [])
    {
        $statusStr = array(
            "0" => "短信發(fā)送成功",
            "-1" => "參數(shù)不全",
            "-2" => "服務(wù)器空間不支持,請(qǐng)確認(rèn)支持curl或者fsocket,聯(lián)系您的空間商解決或者更換空間!",
            "30" => "密碼錯(cuò)誤",
            "40" => "賬號(hào)不存在",
            "41" => "余額不足",
            "42" => "帳戶已過(guò)期",
            "43" => "IP地址限制",
            "50" => "內(nèi)容含有敏感詞"
            );
 
        $smsapi = ";
        $user = $this->accessKeyId;
        $pass = md5($this->accessKeySecret);
        $tmp = $this->getTemplateCode($templateId);
        $content = str_replace(array_keys($data),array_values($data),$tmp);
        $content = '【'.$this->signName.'】'.$content;
        $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);
        $result = $this->fetchContent($sendurl,'POST','') ;
        try {
            if($result == '0'){
                return true;
            }else{
                throw new ValidateException($statusStr[$result]);
            }
        }catch (\Exception $e) {
            throw new ValidateException($e->getMessage());
        }
    }
 
    private function fetchContent($url, $method, $body) {
        $ch = curl_init();
 
        if($method == 'POST') {
            curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
            curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
        else {
            $url .= '?'.$body;
        }
 
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            "x-sdk-client" => "php/2.0.0"
        ));
 
        if(substr($url, 0,5) == 'https') {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        }
 
        $rtn = curl_exec($ch);
 
        if($rtn === false) {
            // 大多由設(shè)置等原因引起,一般無(wú)法保障后續(xù)邏輯正常執(zhí)行,
            // 所以這里觸發(fā)的是E_USER_ERROR,會(huì)終止腳本執(zhí)行,無(wú)法被try...catch捕獲,需要用戶排查環(huán)境、網(wǎng)絡(luò)等故障
            trigger_error("[CURL_" . curl_errno($ch) . "]: " . curl_error($ch), E_USER_ERROR);
        }
        curl_close($ch);
 
        return $rtn;
    }
}

4:打開項(xiàng)目:app\services\serve\ServeServices.php 修改驅(qū)動(dòng)配置 大概在60行左右

1
2
3
4
5
6
7
8
9
10
    public function sms(array $config = [])
    {
        return app()->make(Sms::class, [    
            'smsbao',
        [
            'accessKeyId' => sys_config('smsbao_user'),
            'accessKeySecret' => sys_config('smsbao_pwd'),
            'signName' => sys_config('sms_sign_name'),
        ]]);
    }

經(jīng)過(guò)上面的替換,短信寶的短信平臺(tái)已經(jīng)替換成功了,可以正常使用了。進(jìn)行測(cè)試發(fā)送:

報(bào)備一下短信寶的VIP模板,這樣就可以走短信寶的優(yōu)質(zhì)通道了,即便遇到敏感文字我們都不會(huì)人工審核,短信內(nèi)容3~5秒就可送達(dá)。

另外:我們已經(jīng)開發(fā)好完整的CRMEB_V4.3.2系統(tǒng)短信寶插件,點(diǎn)擊此鏈接?下載及查看安裝流程。

開源插件

最新更新

電商類

CMS類

微信類

文章標(biāo)簽
91成人在线播放_欧美一区二区视频在线观看_91精品国产高清久久久久久_国产精品久久亚洲不卡4k岛国
欧美精品一区二区久久婷婷 | 日韩精品电影在线观看| 成人一级视频在线观看| 久久色在线观看| 韩国毛片一区二区三区| 日韩三级在线免费观看| 蜜臀av一区二区三区| 欧美一区二区三区日韩视频| 天使萌一区二区三区免费观看| 欧美性大战久久久| 丝袜美腿亚洲一区二区图片| 欧美日本在线播放| 三级影片在线观看欧美日韩一区二区 | 日本vs亚洲vs韩国一区三区二区| 97精品国产露脸对白| 欧日韩精品视频| 亚洲与欧洲av电影| 欧美日韩在线亚洲一区蜜芽| 亚洲成年人影院| 88在线观看91蜜桃国自产| 国产一区二区三区免费观看| 久久久久久亚洲综合| 国产精品久久久久毛片软件| 678五月天丁香亚洲综合网| 亚洲精品一区二区精华| 狠狠色狠狠色综合系列| 国产日本欧洲亚洲| 不卡的电影网站| 亚洲免费观看高清完整版在线| 色婷婷国产精品| 视频一区中文字幕| 久久久亚洲午夜电影| 成人av在线网| 午夜精品久久久久久久99水蜜桃 | 亚洲国产日韩一级| 欧美日韩国产小视频| 久久精品国产秦先生| 国产精品私房写真福利视频| 一本久久a久久免费精品不卡| 午夜精品久久久久久久| 国产午夜精品久久久久久久 | 国产精品对白交换视频| 欧美日韩一区 二区 三区 久久精品 | 日本91福利区| 狠狠久久亚洲欧美| 国产精品久久夜| 欧美日韩国产综合一区二区 | 亚洲一二三四在线| 精品久久99ma| 91黄色免费网站| 国产在线播放一区| 亚洲已满18点击进入久久| 26uuu欧美日本| 欧美日韩综合在线| 成人av在线网站| 美日韩一区二区三区| 亚洲欧美国产三级| 精品1区2区在线观看| 在线观看不卡一区| 国产精品99久久久久久久女警 | 欧美亚洲动漫制服丝袜| 国产大陆亚洲精品国产| 日本aⅴ亚洲精品中文乱码| 日韩理论片网站| 久久综合九色综合欧美就去吻| 91电影在线观看| 成人av电影免费在线播放| 另类中文字幕网| 亚洲无人区一区| 最新高清无码专区| 国产欧美一区二区在线观看| 欧美一区二区三区喷汁尤物| 色猫猫国产区一区二在线视频| 国产成人免费在线观看不卡| 麻豆高清免费国产一区| 亚洲一区二区成人在线观看| 亚洲视频一区在线观看| 国产三级欧美三级日产三级99| 日韩一区二区三区视频| 欧美日韩一区不卡| 在线精品国精品国产尤物884a| 成人美女视频在线看| 国产一区二区三区免费在线观看| 老司机精品视频线观看86| 肉色丝袜一区二区| 午夜精品福利一区二区蜜股av| 一区二区三区在线观看国产| 亚洲丝袜精品丝袜在线| 国产精品人成在线观看免费| 久久精品视频在线免费观看| 欧美精品一区视频| 精品99一区二区三区| 精品少妇一区二区| 精品免费视频一区二区| 欧美va在线播放| 久久综合资源网| 国产欧美一区二区三区沐欲| 国产区在线观看成人精品| 国产亚洲成av人在线观看导航| 精品粉嫩超白一线天av| 久久久久国产精品厨房| 久久久久久久网| 中文字幕欧美国产| 亚洲欧美日韩中文字幕一区二区三区| 国产精品成人网| 樱桃国产成人精品视频| 午夜精品影院在线观看| 日韩电影网1区2区| 激情另类小说区图片区视频区| 精品午夜一区二区三区在线观看| 国产精品一卡二卡| 99re在线视频这里只有精品| 亚洲欧美日韩中文播放 | 色又黄又爽网站www久久| 在线一区二区三区四区五区| 在线电影欧美成精品| 久久理论电影网| 自拍偷拍欧美精品| 视频在线观看一区| 国产精品资源在线看| 色综合天天综合色综合av| 欧美少妇一区二区| 欧美精品一区在线观看| 亚洲婷婷综合久久一本伊一区| 亚洲成人免费在线观看| 黄色日韩网站视频| 一本色道久久加勒比精品| 日韩欧美一区电影| 亚洲色大成网站www久久九九| 日韩不卡一区二区三区| 国产suv精品一区二区三区| 欧美性欧美巨大黑白大战| 精品国产网站在线观看| 亚洲少妇屁股交4| 国产综合色视频| 在线亚洲一区二区| 亚洲精品在线观看视频| 一区二区三区精品久久久| 国产做a爰片久久毛片| 欧美色综合影院| 中文字幕精品一区| 日本 国产 欧美色综合| 一本色道亚洲精品aⅴ| www久久久久| 日韩电影免费在线看| 99久久久无码国产精品| 欧美成人r级一区二区三区| 亚洲乱码国产乱码精品精98午夜| 日本不卡不码高清免费观看| 91香蕉视频黄| 久久久久88色偷偷免费| 免费不卡在线观看| 在线观看欧美精品| 一区二区中文字幕在线| 国产精一区二区三区| 制服丝袜国产精品| 亚洲综合久久久| 99国产精品久久久久久久久久| 久久男人中文字幕资源站| 日本中文在线一区| 在线免费观看日韩欧美| 中文字幕一区二区三区在线播放 | 日本午夜一区二区| 欧美色爱综合网| 亚洲精品国产成人久久av盗摄| 懂色中文一区二区在线播放| 欧美电影免费观看高清完整版在线 | 成人欧美一区二区三区黑人麻豆| 国产呦精品一区二区三区网站| 欧美一区二区三区系列电影| 亚洲在线观看免费| 欧美午夜电影网| 亚洲午夜视频在线| 欧洲精品视频在线观看| 一区二区三区在线影院| 色婷婷久久久综合中文字幕| 国产精品传媒视频| 99久久综合精品| 亚洲色图制服诱惑| 色8久久精品久久久久久蜜| 不卡的电影网站| 亚洲欧洲日产国产综合网| 99国产精品国产精品久久| 最好看的中文字幕久久| www.一区二区| 亚洲欧美激情在线| 欧美又粗又大又爽| 亚洲国产你懂的| 欧美卡1卡2卡| 久久国产精品无码网站| 久久综合色一综合色88| 国产99久久久国产精品潘金| 久久精品视频一区| 成人a级免费电影| 亚洲美女视频在线观看| 欧美日韩视频专区在线播放| 手机精品视频在线观看| 久久亚洲春色中文字幕久久久| 风间由美一区二区三区在线观看| 国产精品美女久久久久久久|