diff --git a/application/admin/controller/Sms.php b/application/admin/controller/Sms.php index 504243979e3ae2fcf6f9498c0704b0a0e9752b1f..afcf32793b0fd9d3e21b92f63e5ad51f838266c8 100755 --- a/application/admin/controller/Sms.php +++ b/application/admin/controller/Sms.php @@ -55,6 +55,8 @@ class Sms extends Common // 导航 $type = input('type', 'sms'); $this->assign('nav_type', $type); + $this->assign('sms_platform_list', lang('sms_platform_list')); + if($type == 'sms') { return $this->fetch('index'); diff --git a/application/admin/lang/zh-cn.php b/application/admin/lang/zh-cn.php index 919b80ac3452fd1cba77592608d2e19dd1eecd96..01106cc1584bba3473e5d8982a9aee7c751ab366 100755 --- a/application/admin/lang/zh-cn.php +++ b/application/admin/lang/zh-cn.php @@ -126,5 +126,12 @@ return array( 'type' => 'string', ], ], + + // 短信平台列表 + 'sms_platform_list' => array( + 0 => array('value' => '', 'name' => '请选择短信平台', 'checked' => true), + 1 => array('value' => 'aliyun', 'name' => '阿里云短信服务'), + 2 => array('value' => 'tencent', 'name' => '腾讯云短信服务'), + ), ); ?> \ No newline at end of file diff --git a/application/admin/view/default/sms/index.html b/application/admin/view/default/sms/index.html index 896958daf4621d08acac068a0ea7bd2469102ea2..a5e4e97df636739ceb269c9a0685d9e3c2b9529e 100755 --- a/application/admin/view/default/sms/index.html +++ b/application/admin/view/default/sms/index.html @@ -21,6 +21,24 @@ + + +
+ + +
+ +
+ + +
+ + +
diff --git a/config/shopxo.sql b/config/shopxo.sql index c37839f96a0738c5a69782c4f662c32554b30d7e..1dc0a6bd303f426fee8656179d80f7961cd5116a 100644 --- a/config/shopxo.sql +++ b/config/shopxo.sql @@ -317,7 +317,7 @@ CREATE TABLE `s_config` ( -- Records of `s_config` -- ---------------------------- BEGIN; -INSERT INTO `s_config` VALUES ('15', '10', '分页数量', '分页显示数量', '分页不能超过3位数', 'admin', 'admin_page_number', '1587366387'), ('59', '1', '扣减库存规则', '需扣减库存开启方可有效,默认订单支付成功', '', 'common', 'common_deduction_inventory_rules', '1589032774'), ('60', '1', '是否扣减库存', '建议不要随意修改,以免造成库存数据错乱,关闭不影响库存回滚', '', 'common', 'common_is_deduction_inventory', '1589032774'), ('11', '0', 'Excel编码', 'excel模块编码选择', '请选择编码', 'admin', 'admin_excel_charset', '1587366387'), ('16', 'ShopXO企业级B2C电商系统提供商 - 演示站点', '站点标题', '浏览器标题,一般不超过80个字符', '站点标题不能为空', 'home', 'home_seo_site_title', '1585733314'), ('17', '商城系统,开源电商系统,免费电商系统,PHP电商系统,商城系统,B2C电商系统,B2B2C电商系统', '站点关键字', '一般不超过100个字符,多个关键字以半圆角逗号 [ , ] 隔开', '站点关键字不能为空', 'home', 'home_seo_site_keywords', '1585733314'), ('18', 'ShopXO是国内领先的商城系统提供商,为企业提供php商城系统、微信商城、小程序。', '站点描述', '站点描述,一般不超过200个字符', '站点描述不能为空', 'home', 'home_seo_site_description', '1585733314'), ('19', '', 'ICP证书号', 'ICP域名备案号', '', 'home', 'home_site_icp', '1572944120'), ('20', '', '底部统计代码', '支持html,可用于添加流量统计代码', '', 'home', 'home_statistics_code', '0'), ('21', '1', '站点状态', '可暂时将站点关闭,其他人无法访问,但不影响管理员访问后台', '请选择站点状态', 'home', 'home_site_state', '1581399671'), ('22', '升级中...', '关闭原因', '支持html,当网站处于关闭状态时,关闭原因将显示在前台', '', 'home', 'home_site_close_reason', '1581399671'), ('23', 'Australia/Eucla', '默认时区', '默认 亚洲/上海 [标准时+8]', '请选择默认时区', 'common', 'common_timezone', '1581399671'), ('24', '', '底部代码', '支持html,可用于添加流量统计代码', '', 'home', 'home_footer_info', '1581399671'), ('28', 'ShopXO', '站点名称', '', '站点名称不能为空', 'home', 'home_site_name', '1581399671'), ('29', '0', '链接模式', '详情ThinkPHP官网5.1版本文档 [http://www.thinkphp.cn/]', '请选择url模式', 'home', 'home_seo_url_model', '1585733314'), ('25', '2048000', '图片最大限制', '单位B [上传图片还受到服务器空间PHP配置最大上传 20M 限制]', '请填写图片上传最大限制', 'home', 'home_max_limit_image', '1558074966'), ('26', '51200000', '文件最大限制', '单位B [上传文件还受到服务器空间PHP配置最大上传 20M 限制]', '请填写文件上传最大限制', 'home', 'home_max_limit_file', '1558074966'), ('27', '102400000', '视频最大限制', '单位B [上传视频还受到服务器空间PHP配置最大上传 20M 限制]', '请填写视频上传最大限制', 'home', 'home_max_limit_video', '1558074966'), ('30', 'html', '伪静态后缀', '链接后面的后缀别名,默认 [ html ]', '小写字母,不能超过8个字符', 'home', 'home_seo_url_html_suffix', '1585733314'), ('31', '0', '用户注册开启审核', '开启后用户注册需要审核通过方可登录', '请选择用户注册开启审核', 'common', 'common_register_is_enable_audit', '1566227415'), ('32', '/static/upload/images/common/2019/01/14/1547448748316693.png', '手机端logo', '支持 [jpg, png, gif]', '请上传手机端网站logo', 'home', 'home_site_logo_wap', '1581399671'), ('33', '/static/upload/images/common/2019/01/14/1547448705165706.png', '电脑端logo', '支持 [jpg, png, gif]', '请上传电脑端网站logo', 'home', 'home_site_logo', '1581399671'), ('34', '1200', '页面最大宽度', '页面最大宽度,单位px,0则100%', '请上传桌面图标', 'home', 'home_content_max_width', '1581399671'), ('35', '/static/upload/images/common/2019/01/14/1547448728921121.jpg', '桌面图标', '建议使用png格式', '图片比例值格式有误 0~100 之间,小数点后面最大两位', 'common', 'home_site_desktop_icon', '1581399671'), ('36', 'sms,email,username', '是否开启注册', '关闭注册后,前端站点将无法注册,可选择 [ 短信, 邮箱, 用户名 ]', '请选择是否开启注册状态', 'home', 'home_user_reg_state', '1566227415'), ('37', '1', '是否开启登录', '关闭后,前端站点将无法登录', '请选择是否开启登录状态', 'home', 'home_user_login_state', '1558084931'), ('38', '1', '获取验证码-开启图片验证码', '防止短信轰炸', '请选择是否开启强制图片验证码', 'home', 'home_img_verify_state', '1558085166'), ('39', '60', '获取验证码时间间隔', '防止频繁获取验证码,一般在 30~120 秒之间,单位 [秒]', '请填写获取验证码时间间隔', 'home', 'common_verify_time_interval', '1558085166'), ('40', '', '用户注册-短信模板ID', '验证码code', '请填写用户注册短信模板内容', 'home', 'home_sms_user_reg', '1587366205'), ('41', '', '短信签名', '发送短信包含的签名', '短信签名 3~8 个的中英文字符', 'common', 'common_sms_sign', '1587366196'), ('42', '', '短信KeyID', 'Access Key ID', '请填写Access Key ID', 'common', 'common_sms_apikey', '1587366196'), ('43', '', '密码找回-短信模板ID', '验证码code', '请填写密码找回短信模板内容', 'home', 'home_sms_user_forget_pwd', '1587366205'), ('44', '600', '验证码有效时间', '验证码过期时间,一般10分钟左右,单位 [秒]', '请填写验证码有效时间', 'home', 'common_verify_expire_time', '1558085166'), ('45', '', 'SMTP服务器', '设置SMTP服务器的地址,如 smtp.163.com', '请填写SMTP服务器', 'common', 'common_email_smtp_host', '1580643917'), ('46', '', 'SMTP端口', '设置SMTP服务器的端口,默认为 25', '请填写SMTP端口号', 'common', 'common_email_smtp_port', '1580643917'), ('47', '', '发信人邮件地址', '发信人邮件地址,使用SMTP协议发送的邮件地址,如 shopxo@163.com', '请填写发信人邮件地址', 'common', 'common_email_smtp_account', '1580643917'), ('48', '', 'SMTP身份验证用户名', '如 shopxo@163.com', '请填写SMTP身份验证用户名', 'common', 'common_email_smtp_name', '1580643917'), ('49', '', 'SMTP身份验证密码', 'shopxo@163.com邮件的密码或授权码', '请填写SMTP身份验证密码', 'common', 'common_email_smtp_pwd', '1580643917'), ('50', '', '发件人显示名称', '如 ShopXO', '', 'common', 'common_email_smtp_send_name', '1580643917'), ('51', '', '通用-短信模板ID', '验证码code', '请填写通用短信模板内容', 'common', 'common_sms_currency_template', '1587366205'), ('58', '', '短信KeySecret', 'Access Key Secret', '请填写Access Key Secret', 'common', 'common_sms_apisecret', '1587366196'), ('53', '021-88888888', '商店电话', '空则不显示', '', 'common', 'common_customer_store_tel', '1587138005'), ('56', '

通用模板,你的验证码是  #code#

', '通用-邮件模板', '验证码变量标识符 [ #code# ]', '', 'common', 'common_email_currency_template', '1557728601'), ('57', 'default', '默认模板', '前台默认模板', '请填写默认模板', 'common', 'common_default_theme', '1550113393'), ('62', '', '百度地图api密钥', '百度地图api密钥', '请填写百度地图api密钥', 'common', 'common_baidu_map_ak', '1587366387'), ('63', '

用户注册,你的验证码是  #code#

', '用户注册-邮件模板', '验证码变量标识符 [ #code# ]', '', 'home', 'home_email_user_reg', '1557728601'), ('64', '

密码找回,你的验证码是  #code#

', '密码找回-邮件模板', '验证码变量标识符 [ #code# ]', '', 'home', 'home_email_user_forget_pwd', '1557728601'), ('65', '

邮箱绑定,你的验证码是  #code#

', '邮箱绑定-邮件模板', '验证码变量标识符 [ #code# ]', '', 'home', 'home_email_user_email_binding', '1557728601'), ('66', '20200202', 'css/js版本标记', '用于css/js浏览器缓存版本识别', '', 'home', 'home_static_cache_version', '1581399671'), ('67', '', '手机号码绑定-短信模板ID', '验证码code', '请填写手机号码绑定短信模板内容', 'home', 'home_sms_user_mobile_binding', '1587366205'), ('68', '连衣裙,帐篷,iphone,包包', '搜索关键字', '搜索框下热门关键字(输入回车)', '请填写关键字', 'home', 'home_search_keywords', '1566227458'), ('69', '2', '搜索关键字类型', '自定义需要配置以下关键字', '请选择关键字类型', 'home', 'home_search_keywords_type', '1566227458'), ('70', '0', '订单预约模式', '开启后用户提交订单需要管理员确认', '请选择是否开启预约模式', 'common', 'common_order_is_booking', '1589032774'), ('71', 'ShopXO', '名称', '', '请填写名称', 'common', 'common_app_mini_alipay_title', '1586248646'), ('72', '国内领先企业级B2C开源电商系统!', '描述', '', '请填写描述', 'common', 'common_app_mini_alipay_describe', '1586248646'), ('73', '021-88888888', '客服电话', '空则不显示', '请填写客服电话', 'common', 'common_app_customer_service_tel', '1580643961'), ('74', '2019081966311589', 'AppID', '小程序ID', '请填写AppID', 'common', 'common_app_mini_alipay_appid', '1586248646'), ('75', 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuxAXbZitfaALDaevrWVITveMu2fh3L8t3p/5WGPNEVOqCnL3v8EeYZWOLSuBHhpJaLb7Q3HrPWynzpcJ2C17+DxCVS3Js8J/iAgiJGJB4f8wZuPBwqKncGXdrAtN6EYp3H9K1IQeCmGN9di4Ht7igDDREnVWrUIc1Q6O64KDg8YLhWaTf2FMFvdPKiH9tijIZuvtYxxOUkHmgG6N7+IIvKPLdYde0dt/eTy6L1wbXSWoStfmFYd38vywt51N6AlChh/XAQmUGYTq1sW+PFXg2MrDyyWIEZxGb1dINhlMgXMqxTropo31kXa09vUffNvPWVmR38iT9lY+n6ZWSVzH3QIDAQAB', '应用公钥', '', '请填写应用公钥', 'common', 'common_app_mini_alipay_rsa_public', '1586248646'), ('76', 'MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC7EBdtmK19oAsNp6+tZUhO94y7Z+Hcvy3en/lYY80RU6oKcve/wR5hlY4tK4EeGklotvtDces9bKfOlwnYLXv4PEJVLcmzwn+ICCIkYkHh/zBm48HCoqdwZd2sC03oRincf0rUhB4KYY312Lge3uKAMNESdVatQhzVDo7rgoODxguFZpN/YUwW908qIf22KMhm6+1jHE5SQeaAbo3v4gi8o8t1h17R2395PLovXBtdJahK1+YVh3fy/LC3nU3oCUKGH9cBCZQZhOrWxb48VeDYysPLJYgRnEZvV0g2GUyBcyrFOuimjfWRdrT29R98289ZWZHfyJP2Vj6fplZJXMfdAgMBAAECggEAXXHCYkscj169ZsrXZUTtBBWBRbS1DTKrVUSQqGjibb9fd+zKeg2cgZ7V8RaEX2c+OIL/rUdg/cQjZ33nuwetn+lqMWa4FYYZcvitJYO36Y8yvJMVnYbnIayhOWpENr2l97HWzaZZ41GsOp1SDInGl8bLCe93pwEZqgyltFv0GoSfNu3trFFxPZgZJalV0t5M7+RchutkHskwrwI9BdnCJs38lh08jHHppQdkgcpyCiCdu/b4f+n9z97Op5Va8WY1M+wwqRk76Ias8mqwJXT/+t/sXhqkMv1ylAb89+b3rgiOU7KlZMpIAercW/ZRojnDjpY9ViaCxwWPwb/VkPrDgQKBgQDkDuie0DAIDP5C74dPj/Z0mapsU9bKlcgC+nowEUaEO7A9cwMVFal0x9p7BKIJsV2b6d1qJGP7rM9YtRMldJQmuxPcHOKPcZR8pGLqFYT2QGKGurohb/o+btGda/SGwJfi6jwQUF0AE+1k+Dj9P3hDxHgkj6ZMkHEBtqUj520VTQKBgQDR+1rPPex8zTQgl9uSY0hlXPyYEhpXicNhzyet1Su+TV8wdGNUr2YeuDHEu6oiRocBaT8DEwpy9EToe56EK3Ht2AQ76NBSUp9EOl1twocebM42etJSJZGpB1AgP+R/hmUbcBPXEwXdy5XeYnYmpVUcoizzKrnRDxg3TRF3kIX00QKBgGc49EMFmefa8a6cOdNiJrvp3YBAhkSVfL0UX/+nohIx7fgyOV/uuQ9ZceMiWrEmbWcneAcVx4dfVU4iTzMxy+in3jpPfKBOWVX9FaQ77z2CMNYoaBzAUTS29ftZpIjlXRngySTdKurhGh8MVscRVj7eCz8JIc0fx3ZuE9rnYbE1AoGAJoqJL3LBPmL3x2e4IJVii2BW6J6iASFDIGfCc7Cl18chyqYCOV/8UXUjhWWgo6voScUEkM7k4xacs0NFZCMJRUuZ81kXK5UIsKA519SVsmrsKqm+gt9sbebuuQyhJxsG4dNfgOF3+S7N8kSGRS+hgKDvuS5Fbu7jVfsqUpTPUZECgYAcbq3mqWwExY2Kn0I660OqOFk620pGsSY7gECUQintCZioYemzC1TN9pM6fKnOIYriV4Ou7iswhEfVX+5bwMjH2ujmu8KDdpkpdhRoFCw3GUn/PDelQrptaKkKXnOIJe/R8m+TUxYCtECTlKlYS4hTst7YhTDz5sQHcXRtveATZQ==', '应用私钥', '', '请填写应用私钥', 'common', 'common_app_mini_alipay_rsa_private', '1586248646'), ('78', '0', '是否启用搜索', '默认否', '', 'common', 'common_app_is_enable_search', '1580559058'), ('77', 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkwpOGFOJ0GF6vN9k2dih7Up4+0qecYGtGeZMLdkArDMQ3vgvZFyjAM8c6uFRCHfVoUF5mflVVskLaXMH9C3VY80fxE40WM3VXVW+z0M+WFdihmfB6m/xKpN0QkMVEce7yb7AyXAdNA20KKyjVKXAnDGU3nGc6grQ6uzNIp/Eb8jMPv91GOjzY8KYOxgSiVVM9p5Y1NedGBTQGeMWcRH5vi9ys2Ia0KDYtxuXDhIxMDAqrCNy5sODh0DUpTL+Di09jQRmdI9JNN79ibVmrBoU7ud8YbL/lR4iVT+zF848+OmJiK56yTLcxY8vrU2kGlGO2K8jKWDsOK93H0GF/+lA+wIDAQAB', '支付宝公钥', '', '请填写支付宝公钥', 'common', 'common_app_mini_alipay_out_rsa_public', '1586248646'), ('79', '0', '是否启用留言', '默认否', '', 'common', 'common_app_is_enable_answer', '1580559058'), ('80', '3', '商品可添加规格最大数量', '建议不超过3个规格', '请填写谷歌最大数', 'common', 'common_spec_add_max_number', '1587366387'), ('81', '-', '路由分隔符', '建议填写 [ - ] 默认 [ - ] ,仅PATHINFO模式+短地址模式下有效', '请填写路由分隔符', 'common', 'common_route_separator', '1585733314'), ('82', 'wx0a2012ebad94beff', 'AppID', '小程序ID', '请填写appid', 'common', 'common_app_mini_weixin_appid', '1581478933'), ('83', 'd0e4e81180ea59b8fcc4299f6b05b362', 'AppSecret ', '小程序密钥', '请填写appsecret', 'common', 'common_app_mini_weixin_appsecret', '1581478933'), ('84', 'ShopXO', '名称', '', '请填写名称', 'common', 'common_app_mini_weixin_title', '1581478933'), ('85', '国内领先企业级B2C开源电商系统!', '描述', '', '请填写描述', 'common', 'common_app_mini_weixin_describe', '1581478933'), ('61', '用户中心公告文字,后台配置修改。', '用户中心公告', '空则不显示公告', '', 'common', 'common_user_center_notice', '1580643961'), ('8', '公告内容', '商城公告', '空则不显示公告', '', 'common', 'common_shop_notice', '1580643961'), ('86', 'test@qq.com', '商店邮箱', '空则不显示', '客服邮箱格式有误', 'common', 'common_customer_store_email', '1587138005'), ('87', '', '商店二维码', '空则不展示', '', 'common', 'common_customer_store_qrcode', '1587366387'), ('152', '[{\"alias\":\"总部\",\"name\":\"devil\",\"tel\":\"13222333333\",\"lng\":\"121.594278\",\"lat\":\"31.207917\",\"address\":\"张江高科\",\"province\":\"9\",\"city\":\"155\",\"county\":\"1937\",\"province_name\":\"上海市\",\"city_name\":\"浦东新区\",\"county_name\":\"张江镇\",\"id\":0}]', '自提点地址', '', '请填写自提点地址', 'common', 'common_self_extraction_address', '1589032774'), ('88', '上海市 浦东新区', '商店地址', '空则不展示', '', 'common', 'common_customer_store_address', '1587138005'), ('89', '

用户注册协议


', '用户注册协议', '最多 105000 个字符', '用户注册协议最多 105000 个字符', 'common', 'common_agreement_userregister', '1566227622'), ('90', '/static/upload/images/common/2019/05/17/1558025141249118.png', '用户注册背景图片', '', '请上传用户注册背景图片', 'home', 'home_site_user_register_bg_images', '1566227415'), ('91', '/static/upload/images/common/2019/05/17/1558062481107570.jpg', '图片', '图片1 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_login_ad1_images', '1558084931'), ('92', '/static/upload/images/common/2019/05/17/1558072588843696.jpg', '图片', '图片2 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_login_ad2_images', '1558084931'), ('93', '/static/upload/images/common/2019/05/17/1558073623385520.jpg', '图片', '图片2 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_login_ad3_images', '1558084931'), ('94', 'https://shopxo.net/', 'url地址', '地址1 [ 带http://或https:// ]', '', 'home', 'home_site_user_login_ad1_url', '1558084931'), ('95', 'https://ask.shopxo.net/', 'url地址', '地址2 [ 带http://或https:// ]', '', 'home', 'home_site_user_login_ad2_url', '1558084931'), ('96', 'https://shopxo.net/vip.html', 'url地址', '地址3 [ 带http://或https:// ]', '', 'home', 'home_site_user_login_ad3_url', '1558084931'), ('97', '', '背景色', '背景色1', '', 'home', 'home_site_user_login_ad1_bg_color', '1558084931'), ('98', '#FAFAFA', '背景色', '背景色2', '', 'home', 'home_site_user_login_ad2_bg_color', '1558084931'), ('99', '#FAFAFA', '背景色', '背景色3', '', 'home', 'home_site_user_login_ad3_bg_color', '1558084931'), ('100', '1', '登录图片验证码', '可以防止非法登录', '请选择是否开启登录图片验证码', 'home', 'home_user_login_img_verify_state', '1558084931'), ('101', '/static/upload/images/common/2019/05/17/1558072588843696.jpg', '图片', '图片1 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_forgetpwd_ad1_images', '1558084915'), ('102', '/static/upload/images/common/2019/05/17/1558073623641199.jpg', '图片', '图片2 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_forgetpwd_ad2_images', '1558084915'), ('103', '', '图片', '图片2 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_forgetpwd_ad3_images', '1558084915'), ('104', 'https://shopxo.net/', 'url地址', '地址1 [ 带http://或https:// ]', '', 'home', 'home_site_user_forgetpwd_ad1_url', '1558084915'), ('105', '', 'url地址', '地址2 [ 带http://或https:// ]', '', 'home', 'home_site_user_forgetpwd_ad2_url', '1558084915'), ('106', '', 'url地址', '地址3 [ 带http://或https:// ]', '', 'home', 'home_site_user_forgetpwd_ad3_url', '1558084915'), ('107', '#FAFAFA', '背景色', '背景色1', '', 'home', 'home_site_user_forgetpwd_ad1_bg_color', '1558084915'), ('108', '#FAFAFA', '背景色', '背景色2', '', 'home', 'home_site_user_forgetpwd_ad2_bg_color', '1558084915'), ('109', '', '背景色', '背景色3', '', 'home', 'home_site_user_forgetpwd_ad3_bg_color', '1558084915'), ('110', '1', '用户注册图片验证码', '可以防止非法注册', '请选择是否开启用户注册图片验证码', 'home', 'home_user_register_img_verify_state', '1566227415'), ('111', '', '图片验证码规则', '默认白底黑字,可根据需求i加大验证码识别难度', '', 'common', 'common_images_verify_rules', '1558085166'), ('112', '0', 'SSL方式加密', '', '请选择是否使用SSL方式加密', 'common', 'common_email_is_use_ssl', '1580643917'), ('113', '活动/优惠未生效\n空包裹\n包裹丢失\n配送超时\n未按约定时间发货\n未送货上门\n物流显示签收但实际未收到货\n不喜欢/不想要', '仅退款原因', '可换行,一行一个', '请填写仅退款原因', 'home', 'home_order_aftersale_return_only_money_reason', '1570193301'), ('114', '7天无理由退换货\n配送超时\n未按约定时间发货\n未送货上门\n卖家发错货\n少件/漏发\n包装/商品破损/污渍\n商品信息描述不符\n使用后过敏\n已过/临近保质期\n无法溶解/结块/有异物', '退货退款原因', '可换行,一行一个', '请填写退货退款原因', 'home', 'home_order_aftersale_return_money_goods_reason', '1570193301'), ('115', '1', '用户注册协议', '', '请选择是否启用用户注册协议', 'home', 'home_is_enable_userregister_agreement', '1566227415'), ('116', '上海市 浦东新区', '退货地址', '用户退货货物收货地址', '请填写退货地址', 'home', 'home_order_aftersale_return_goods_address', '1570193301'), ('117', '0', '使用独立手机详情', '默认使用web详情', '请选择使用独立手机详情', 'common', 'common_app_is_use_mobile_detail', '1580559058'), ('118', '0', '强制绑定手机', '默认否', '请选择是否强制绑定手机', 'common', 'common_user_is_mandatory_bind_mobile', '1580559058'), ('121', '0', '固定顶部导航', '默认否', '请选择是否固定顶部导航', 'common', 'common_app_is_header_nav_fixed', '1580559058'), ('122', '0', '开启在线客服', '默认否', '请选择是否开启在线客服', 'common', 'common_app_is_online_service', '1580559058'), ('123', '0', '启用限时秒杀', '默认否', '请选择是否启用限时秒杀', 'common', 'common_app_is_limitedtimediscount', '1580559058'), ('124', '0', '启用好物推荐', '默认否,需重新生成小程序包(启用则需到微信小程序后台申请权限)', '请选择是否启用好物推荐', 'common', 'common_app_is_good_thing', '1587445586'), ('125', '16634987', 'AppID', '智能小程序ID', '请填写AppID', 'common', 'common_app_mini_baidu_appid', '1586249578'), ('126', 'C9Gg744cBqQ3zvbC5uOPMg9yWpmuQ8O7', 'AppKey', '智能小程序KEY', '请填写AppKey', 'common', 'common_app_mini_baidu_appkey', '1586249578'), ('127', 'KmdPEyuSAXcbiouKVq6LOSUjctZpxmNb', 'AppSecret', '智能小程序密匙', '请填写AppSecret', 'common', 'common_app_mini_baidu_appsecret', '1586249578'), ('128', 'ShopXO', '名称', '', '请填写名称', 'common', 'common_app_mini_baidu_title', '1586249578'), ('129', '国内领先企业级B2C开源电商系统!', '描述', '', '请填写描述', 'common', 'common_app_mini_baidu_describe', '1586249578'), ('130', '0', '留言需要登录', '默认否', '请选择是否留言需要登录', 'common', 'common_is_login_answer', '1566124965'), ('131', '0', '启用海报分享', '默认否\n', '请选择是否启用海报分享\n', 'common', 'common_app_is_poster_share', '1587445586'), ('132', '30', '订单关闭脚本时长', '单位 分钟,默认30分钟', '请填写订单关闭脚本时长', 'common', 'common_order_close_limit_time', '1566124965'), ('133', '21600', '订单自动收货脚本时长', '单位 分钟,默认21600分钟/15天', '请填写订单自动收货脚本时长', 'common', 'common_order_success_limit_time', '1566124965'), ('134', '', 'AppID', '小程序ID', '请填写AppID', 'common', 'common_app_mini_toutiao_appid', '1580644065'), ('135', '', 'AppSecret', '小程序Secret', '请填写AppSecret', 'common', 'common_app_mini_toutiao_appsecret', '1580644065'), ('136', '', 'PayMerchantID', '支付商户号', '请填写支付商户号', 'common', 'common_app_mini_toutiao_pay_merchant_id', '1580644065'), ('137', '', 'PayAppID', '支付AppID', '请填写AppID', 'common', 'common_app_mini_toutiao_pay_appid', '1580644065'), ('138', '', 'PaySecret', '支付Secret', '请填写支付Secret', 'common', 'common_app_mini_toutiao_pay_secret', '1580644065'), ('139', 'ShopXO', '名称', '', '请填写名称', 'common', 'common_app_mini_toutiao_title', '1580644065'), ('140', '国内领先企业级B2C开源电商系统!', '描述', '', '请填写描述', 'common', 'common_app_mini_toutiao_describe', '1580644065'), ('141', '', '公安备案号', '如:京公网安备xxx号', '请填写公安备案号', 'home', 'home_site_security_record_name', '1572944120'), ('142', '', '公安备案地址', '备案展示页面的url地址', '请填写公安备案地址', 'home', 'home_site_security_record_url', '1572944120'), ('143', '', 'AppID', '小程序ID', '请填写AppID', 'common', 'common_app_mini_qq_appid', '1580644073'), ('144', '', 'AppSecret', '小程序Secret', '请填写AppSecret', 'common', 'common_app_mini_qq_appsecret', '1580644073'), ('145', '', 'AppToken', '小程序Token', '请填写AppToken', 'common', 'common_app_mini_qq_apptoken', '1580644073'), ('146', 'ShopXO', '名称', '', '请填写名称', 'common', 'common_app_mini_qq_title', '1580644073'), ('147', '国内领先企业级B2C开源电商系统!', '描述', '', '请填写描述', 'common', 'common_app_mini_qq_describe', '1580644073'), ('148', '0', '是否启用用户中心头部小导航', '默认否', '请选择是否启用用户中心头部小导航', 'common', 'common_app_is_head_vice_nav', '1580559058'), ('151', '4', '站点类型', '默认销售型', '请选择站点类型', 'common', 'common_site_type', '1589032774'), ('150', '', '展示型操作名称', '默认 立即咨询', '请填写展示型操作名称', 'common', 'common_is_exhibition_mode_btn_text', '1589032774'), ('153', '', '虚拟信息标题', '默认密钥信息', '请填写虚拟信息标题', 'common', 'common_site_fictitious_return_title', '1589032774'), ('154', '', '提示信息', '', '请填写提示信息', 'common', 'common_site_fictitious_return_tips', '1589032774'), ('155', '', '在线客服-企业编码', '空则不显示在线客服', '请填写在线客服-企业编码', 'common', 'common_app_mini_alipay_tnt_inst_id', '1580643970'), ('156', '', '在线客服-聊天窗编码', '空则不显示在线客服', '请填写在线客服-聊天窗编码', 'common', 'common_app_mini_alipay_scene', '1580643970'), ('157', '0', '商品详情页展示相册', '默认否', '请选择是否商品详情页展示相册', 'common', 'common_is_goods_detail_show_photo', '1575273956'), ('158', '0', '手机简洁模式', '默认否', '请选择是否手机简洁模式', 'common', 'common_is_mobile_concise_model', '1580643961'), ('159', '0', '启用直播', '默认否,需重新生成小程序包(启用则需到微信小程序后台申请权限)', '请选择是否启用直播', 'common', 'common_app_weixin_liveplayer', '1587445586'); +INSERT INTO `s_config` VALUES ('15', '10', '分页数量', '分页显示数量', '分页不能超过3位数', 'admin', 'admin_page_number', '1587366387'), ('59', '1', '扣减库存规则', '需扣减库存开启方可有效,默认订单支付成功', '', 'common', 'common_deduction_inventory_rules', '1589032774'), ('60', '1', '是否扣减库存', '建议不要随意修改,以免造成库存数据错乱,关闭不影响库存回滚', '', 'common', 'common_is_deduction_inventory', '1589032774'), ('11', '0', 'Excel编码', 'excel模块编码选择', '请选择编码', 'admin', 'admin_excel_charset', '1587366387'), ('16', 'ShopXO企业级B2C电商系统提供商 - 演示站点', '站点标题', '浏览器标题,一般不超过80个字符', '站点标题不能为空', 'home', 'home_seo_site_title', '1585733314'), ('17', '商城系统,开源电商系统,免费电商系统,PHP电商系统,商城系统,B2C电商系统,B2B2C电商系统', '站点关键字', '一般不超过100个字符,多个关键字以半圆角逗号 [ , ] 隔开', '站点关键字不能为空', 'home', 'home_seo_site_keywords', '1585733314'), ('18', 'ShopXO是国内领先的商城系统提供商,为企业提供php商城系统、微信商城、小程序。', '站点描述', '站点描述,一般不超过200个字符', '站点描述不能为空', 'home', 'home_seo_site_description', '1585733314'), ('19', '', 'ICP证书号', 'ICP域名备案号', '', 'home', 'home_site_icp', '1572944120'), ('20', '', '底部统计代码', '支持html,可用于添加流量统计代码', '', 'home', 'home_statistics_code', '0'), ('21', '1', '站点状态', '可暂时将站点关闭,其他人无法访问,但不影响管理员访问后台', '请选择站点状态', 'home', 'home_site_state', '1581399671'), ('22', '升级中...', '关闭原因', '支持html,当网站处于关闭状态时,关闭原因将显示在前台', '', 'home', 'home_site_close_reason', '1581399671'), ('23', 'Australia/Eucla', '默认时区', '默认 亚洲/上海 [标准时+8]', '请选择默认时区', 'common', 'common_timezone', '1581399671'), ('24', '', '底部代码', '支持html,可用于添加流量统计代码', '', 'home', 'home_footer_info', '1581399671'), ('28', 'ShopXO', '站点名称', '', '站点名称不能为空', 'home', 'home_site_name', '1581399671'), ('29', '0', '链接模式', '详情ThinkPHP官网5.1版本文档 [http://www.thinkphp.cn/]', '请选择url模式', 'home', 'home_seo_url_model', '1585733314'), ('25', '2048000', '图片最大限制', '单位B [上传图片还受到服务器空间PHP配置最大上传 20M 限制]', '请填写图片上传最大限制', 'home', 'home_max_limit_image', '1558074966'), ('26', '51200000', '文件最大限制', '单位B [上传文件还受到服务器空间PHP配置最大上传 20M 限制]', '请填写文件上传最大限制', 'home', 'home_max_limit_file', '1558074966'), ('27', '102400000', '视频最大限制', '单位B [上传视频还受到服务器空间PHP配置最大上传 20M 限制]', '请填写视频上传最大限制', 'home', 'home_max_limit_video', '1558074966'), ('30', 'html', '伪静态后缀', '链接后面的后缀别名,默认 [ html ]', '小写字母,不能超过8个字符', 'home', 'home_seo_url_html_suffix', '1585733314'), ('31', '0', '用户注册开启审核', '开启后用户注册需要审核通过方可登录', '请选择用户注册开启审核', 'common', 'common_register_is_enable_audit', '1566227415'), ('32', '/static/upload/images/common/2019/01/14/1547448748316693.png', '手机端logo', '支持 [jpg, png, gif]', '请上传手机端网站logo', 'home', 'home_site_logo_wap', '1581399671'), ('33', '/static/upload/images/common/2019/01/14/1547448705165706.png', '电脑端logo', '支持 [jpg, png, gif]', '请上传电脑端网站logo', 'home', 'home_site_logo', '1581399671'), ('34', '1200', '页面最大宽度', '页面最大宽度,单位px,0则100%', '请上传桌面图标', 'home', 'home_content_max_width', '1581399671'), ('35', '/static/upload/images/common/2019/01/14/1547448728921121.jpg', '桌面图标', '建议使用png格式', '图片比例值格式有误 0~100 之间,小数点后面最大两位', 'common', 'home_site_desktop_icon', '1581399671'), ('36', 'sms,email,username', '是否开启注册', '关闭注册后,前端站点将无法注册,可选择 [ 短信, 邮箱, 用户名 ]', '请选择是否开启注册状态', 'home', 'home_user_reg_state', '1566227415'), ('37', '1', '是否开启登录', '关闭后,前端站点将无法登录', '请选择是否开启登录状态', 'home', 'home_user_login_state', '1558084931'), ('38', '1', '获取验证码-开启图片验证码', '防止短信轰炸', '请选择是否开启强制图片验证码', 'home', 'home_img_verify_state', '1558085166'), ('39', '60', '获取验证码时间间隔', '防止频繁获取验证码,一般在 30~120 秒之间,单位 [秒]', '请填写获取验证码时间间隔', 'home', 'common_verify_time_interval', '1558085166'), ('40', '', '用户注册-短信模板ID', '验证码code', '请填写用户注册短信模板内容', 'home', 'home_sms_user_reg', '1587366205'), ('41', '', '短信签名', '发送短信包含的签名', '短信签名 3~8 个的中英文字符', 'common', 'common_sms_sign', '1587366196'), ('42', '', '短信KeyID', 'Access Key ID', '请填写Access Key ID', 'common', 'common_sms_apikey', '1587366196'), ('43', '', '密码找回-短信模板ID', '验证码code', '请填写密码找回短信模板内容', 'home', 'home_sms_user_forget_pwd', '1587366205'), ('44', '600', '验证码有效时间', '验证码过期时间,一般10分钟左右,单位 [秒]', '请填写验证码有效时间', 'home', 'common_verify_expire_time', '1558085166'), ('45', '', 'SMTP服务器', '设置SMTP服务器的地址,如 smtp.163.com', '请填写SMTP服务器', 'common', 'common_email_smtp_host', '1580643917'), ('46', '', 'SMTP端口', '设置SMTP服务器的端口,默认为 25', '请填写SMTP端口号', 'common', 'common_email_smtp_port', '1580643917'), ('47', '', '发信人邮件地址', '发信人邮件地址,使用SMTP协议发送的邮件地址,如 shopxo@163.com', '请填写发信人邮件地址', 'common', 'common_email_smtp_account', '1580643917'), ('48', '', 'SMTP身份验证用户名', '如 shopxo@163.com', '请填写SMTP身份验证用户名', 'common', 'common_email_smtp_name', '1580643917'), ('49', '', 'SMTP身份验证密码', 'shopxo@163.com邮件的密码或授权码', '请填写SMTP身份验证密码', 'common', 'common_email_smtp_pwd', '1580643917'), ('50', '', '发件人显示名称', '如 ShopXO', '', 'common', 'common_email_smtp_send_name', '1580643917'), ('51', '', '通用-短信模板ID', '验证码code', '请填写通用短信模板内容', 'common', 'common_sms_currency_template', '1587366205'), ('58', '', '短信KeySecret', 'Access Key Secret', '请填写Access Key Secret', 'common', 'common_sms_apisecret', '1587366196'), ('53', '021-88888888', '商店电话', '空则不显示', '', 'common', 'common_customer_store_tel', '1587138005'), ('56', '

通用模板,你的验证码是  #code#

', '通用-邮件模板', '验证码变量标识符 [ #code# ]', '', 'common', 'common_email_currency_template', '1557728601'), ('57', 'default', '默认模板', '前台默认模板', '请填写默认模板', 'common', 'common_default_theme', '1550113393'), ('62', '', '百度地图api密钥', '百度地图api密钥', '请填写百度地图api密钥', 'common', 'common_baidu_map_ak', '1587366387'), ('63', '

用户注册,你的验证码是  #code#

', '用户注册-邮件模板', '验证码变量标识符 [ #code# ]', '', 'home', 'home_email_user_reg', '1557728601'), ('64', '

密码找回,你的验证码是  #code#

', '密码找回-邮件模板', '验证码变量标识符 [ #code# ]', '', 'home', 'home_email_user_forget_pwd', '1557728601'), ('65', '

邮箱绑定,你的验证码是  #code#

', '邮箱绑定-邮件模板', '验证码变量标识符 [ #code# ]', '', 'home', 'home_email_user_email_binding', '1557728601'), ('66', '20200202', 'css/js版本标记', '用于css/js浏览器缓存版本识别', '', 'home', 'home_static_cache_version', '1581399671'), ('67', '', '手机号码绑定-短信模板ID', '验证码code', '请填写手机号码绑定短信模板内容', 'home', 'home_sms_user_mobile_binding', '1587366205'), ('68', '连衣裙,帐篷,iphone,包包', '搜索关键字', '搜索框下热门关键字(输入回车)', '请填写关键字', 'home', 'home_search_keywords', '1566227458'), ('69', '2', '搜索关键字类型', '自定义需要配置以下关键字', '请选择关键字类型', 'home', 'home_search_keywords_type', '1566227458'), ('70', '0', '订单预约模式', '开启后用户提交订单需要管理员确认', '请选择是否开启预约模式', 'common', 'common_order_is_booking', '1589032774'), ('71', 'ShopXO', '名称', '', '请填写名称', 'common', 'common_app_mini_alipay_title', '1586248646'), ('72', '国内领先企业级B2C开源电商系统!', '描述', '', '请填写描述', 'common', 'common_app_mini_alipay_describe', '1586248646'), ('73', '021-88888888', '客服电话', '空则不显示', '请填写客服电话', 'common', 'common_app_customer_service_tel', '1580643961'), ('74', '2019081966311589', 'AppID', '小程序ID', '请填写AppID', 'common', 'common_app_mini_alipay_appid', '1586248646'), ('75', 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuxAXbZitfaALDaevrWVITveMu2fh3L8t3p/5WGPNEVOqCnL3v8EeYZWOLSuBHhpJaLb7Q3HrPWynzpcJ2C17+DxCVS3Js8J/iAgiJGJB4f8wZuPBwqKncGXdrAtN6EYp3H9K1IQeCmGN9di4Ht7igDDREnVWrUIc1Q6O64KDg8YLhWaTf2FMFvdPKiH9tijIZuvtYxxOUkHmgG6N7+IIvKPLdYde0dt/eTy6L1wbXSWoStfmFYd38vywt51N6AlChh/XAQmUGYTq1sW+PFXg2MrDyyWIEZxGb1dINhlMgXMqxTropo31kXa09vUffNvPWVmR38iT9lY+n6ZWSVzH3QIDAQAB', '应用公钥', '', '请填写应用公钥', 'common', 'common_app_mini_alipay_rsa_public', '1586248646'), ('76', 'MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC7EBdtmK19oAsNp6+tZUhO94y7Z+Hcvy3en/lYY80RU6oKcve/wR5hlY4tK4EeGklotvtDces9bKfOlwnYLXv4PEJVLcmzwn+ICCIkYkHh/zBm48HCoqdwZd2sC03oRincf0rUhB4KYY312Lge3uKAMNESdVatQhzVDo7rgoODxguFZpN/YUwW908qIf22KMhm6+1jHE5SQeaAbo3v4gi8o8t1h17R2395PLovXBtdJahK1+YVh3fy/LC3nU3oCUKGH9cBCZQZhOrWxb48VeDYysPLJYgRnEZvV0g2GUyBcyrFOuimjfWRdrT29R98289ZWZHfyJP2Vj6fplZJXMfdAgMBAAECggEAXXHCYkscj169ZsrXZUTtBBWBRbS1DTKrVUSQqGjibb9fd+zKeg2cgZ7V8RaEX2c+OIL/rUdg/cQjZ33nuwetn+lqMWa4FYYZcvitJYO36Y8yvJMVnYbnIayhOWpENr2l97HWzaZZ41GsOp1SDInGl8bLCe93pwEZqgyltFv0GoSfNu3trFFxPZgZJalV0t5M7+RchutkHskwrwI9BdnCJs38lh08jHHppQdkgcpyCiCdu/b4f+n9z97Op5Va8WY1M+wwqRk76Ias8mqwJXT/+t/sXhqkMv1ylAb89+b3rgiOU7KlZMpIAercW/ZRojnDjpY9ViaCxwWPwb/VkPrDgQKBgQDkDuie0DAIDP5C74dPj/Z0mapsU9bKlcgC+nowEUaEO7A9cwMVFal0x9p7BKIJsV2b6d1qJGP7rM9YtRMldJQmuxPcHOKPcZR8pGLqFYT2QGKGurohb/o+btGda/SGwJfi6jwQUF0AE+1k+Dj9P3hDxHgkj6ZMkHEBtqUj520VTQKBgQDR+1rPPex8zTQgl9uSY0hlXPyYEhpXicNhzyet1Su+TV8wdGNUr2YeuDHEu6oiRocBaT8DEwpy9EToe56EK3Ht2AQ76NBSUp9EOl1twocebM42etJSJZGpB1AgP+R/hmUbcBPXEwXdy5XeYnYmpVUcoizzKrnRDxg3TRF3kIX00QKBgGc49EMFmefa8a6cOdNiJrvp3YBAhkSVfL0UX/+nohIx7fgyOV/uuQ9ZceMiWrEmbWcneAcVx4dfVU4iTzMxy+in3jpPfKBOWVX9FaQ77z2CMNYoaBzAUTS29ftZpIjlXRngySTdKurhGh8MVscRVj7eCz8JIc0fx3ZuE9rnYbE1AoGAJoqJL3LBPmL3x2e4IJVii2BW6J6iASFDIGfCc7Cl18chyqYCOV/8UXUjhWWgo6voScUEkM7k4xacs0NFZCMJRUuZ81kXK5UIsKA519SVsmrsKqm+gt9sbebuuQyhJxsG4dNfgOF3+S7N8kSGRS+hgKDvuS5Fbu7jVfsqUpTPUZECgYAcbq3mqWwExY2Kn0I660OqOFk620pGsSY7gECUQintCZioYemzC1TN9pM6fKnOIYriV4Ou7iswhEfVX+5bwMjH2ujmu8KDdpkpdhRoFCw3GUn/PDelQrptaKkKXnOIJe/R8m+TUxYCtECTlKlYS4hTst7YhTDz5sQHcXRtveATZQ==', '应用私钥', '', '请填写应用私钥', 'common', 'common_app_mini_alipay_rsa_private', '1586248646'), ('78', '0', '是否启用搜索', '默认否', '', 'common', 'common_app_is_enable_search', '1580559058'), ('77', 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkwpOGFOJ0GF6vN9k2dih7Up4+0qecYGtGeZMLdkArDMQ3vgvZFyjAM8c6uFRCHfVoUF5mflVVskLaXMH9C3VY80fxE40WM3VXVW+z0M+WFdihmfB6m/xKpN0QkMVEce7yb7AyXAdNA20KKyjVKXAnDGU3nGc6grQ6uzNIp/Eb8jMPv91GOjzY8KYOxgSiVVM9p5Y1NedGBTQGeMWcRH5vi9ys2Ia0KDYtxuXDhIxMDAqrCNy5sODh0DUpTL+Di09jQRmdI9JNN79ibVmrBoU7ud8YbL/lR4iVT+zF848+OmJiK56yTLcxY8vrU2kGlGO2K8jKWDsOK93H0GF/+lA+wIDAQAB', '支付宝公钥', '', '请填写支付宝公钥', 'common', 'common_app_mini_alipay_out_rsa_public', '1586248646'), ('79', '0', '是否启用留言', '默认否', '', 'common', 'common_app_is_enable_answer', '1580559058'), ('80', '3', '商品可添加规格最大数量', '建议不超过3个规格', '请填写谷歌最大数', 'common', 'common_spec_add_max_number', '1587366387'), ('81', '-', '路由分隔符', '建议填写 [ - ] 默认 [ - ] ,仅PATHINFO模式+短地址模式下有效', '请填写路由分隔符', 'common', 'common_route_separator', '1585733314'), ('82', 'wx0a2012ebad94beff', 'AppID', '小程序ID', '请填写appid', 'common', 'common_app_mini_weixin_appid', '1581478933'), ('83', 'd0e4e81180ea59b8fcc4299f6b05b362', 'AppSecret ', '小程序密钥', '请填写appsecret', 'common', 'common_app_mini_weixin_appsecret', '1581478933'), ('84', 'ShopXO', '名称', '', '请填写名称', 'common', 'common_app_mini_weixin_title', '1581478933'), ('85', '国内领先企业级B2C开源电商系统!', '描述', '', '请填写描述', 'common', 'common_app_mini_weixin_describe', '1581478933'), ('61', '用户中心公告文字,后台配置修改。', '用户中心公告', '空则不显示公告', '', 'common', 'common_user_center_notice', '1580643961'), ('8', '公告内容', '商城公告', '空则不显示公告', '', 'common', 'common_shop_notice', '1580643961'), ('86', 'test@qq.com', '商店邮箱', '空则不显示', '客服邮箱格式有误', 'common', 'common_customer_store_email', '1587138005'), ('87', '', '商店二维码', '空则不展示', '', 'common', 'common_customer_store_qrcode', '1587366387'), ('152', '[{\"alias\":\"总部\",\"name\":\"devil\",\"tel\":\"13222333333\",\"lng\":\"121.594278\",\"lat\":\"31.207917\",\"address\":\"张江高科\",\"province\":\"9\",\"city\":\"155\",\"county\":\"1937\",\"province_name\":\"上海市\",\"city_name\":\"浦东新区\",\"county_name\":\"张江镇\",\"id\":0}]', '自提点地址', '', '请填写自提点地址', 'common', 'common_self_extraction_address', '1589032774'), ('88', '上海市 浦东新区', '商店地址', '空则不展示', '', 'common', 'common_customer_store_address', '1587138005'), ('89', '

用户注册协议


', '用户注册协议', '最多 105000 个字符', '用户注册协议最多 105000 个字符', 'common', 'common_agreement_userregister', '1566227622'), ('90', '/static/upload/images/common/2019/05/17/1558025141249118.png', '用户注册背景图片', '', '请上传用户注册背景图片', 'home', 'home_site_user_register_bg_images', '1566227415'), ('91', '/static/upload/images/common/2019/05/17/1558062481107570.jpg', '图片', '图片1 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_login_ad1_images', '1558084931'), ('92', '/static/upload/images/common/2019/05/17/1558072588843696.jpg', '图片', '图片2 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_login_ad2_images', '1558084931'), ('93', '/static/upload/images/common/2019/05/17/1558073623385520.jpg', '图片', '图片2 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_login_ad3_images', '1558084931'), ('94', 'https://shopxo.net/', 'url地址', '地址1 [ 带http://或https:// ]', '', 'home', 'home_site_user_login_ad1_url', '1558084931'), ('95', 'https://ask.shopxo.net/', 'url地址', '地址2 [ 带http://或https:// ]', '', 'home', 'home_site_user_login_ad2_url', '1558084931'), ('96', 'https://shopxo.net/vip.html', 'url地址', '地址3 [ 带http://或https:// ]', '', 'home', 'home_site_user_login_ad3_url', '1558084931'), ('97', '', '背景色', '背景色1', '', 'home', 'home_site_user_login_ad1_bg_color', '1558084931'), ('98', '#FAFAFA', '背景色', '背景色2', '', 'home', 'home_site_user_login_ad2_bg_color', '1558084931'), ('99', '#FAFAFA', '背景色', '背景色3', '', 'home', 'home_site_user_login_ad3_bg_color', '1558084931'), ('100', '1', '登录图片验证码', '可以防止非法登录', '请选择是否开启登录图片验证码', 'home', 'home_user_login_img_verify_state', '1558084931'), ('101', '/static/upload/images/common/2019/05/17/1558072588843696.jpg', '图片', '图片1 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_forgetpwd_ad1_images', '1558084915'), ('102', '/static/upload/images/common/2019/05/17/1558073623641199.jpg', '图片', '图片2 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_forgetpwd_ad2_images', '1558084915'), ('103', '', '图片', '图片2 [ 建议使用 450X350 像数 ]', '', 'home', 'home_site_user_forgetpwd_ad3_images', '1558084915'), ('104', 'https://shopxo.net/', 'url地址', '地址1 [ 带http://或https:// ]', '', 'home', 'home_site_user_forgetpwd_ad1_url', '1558084915'), ('105', '', 'url地址', '地址2 [ 带http://或https:// ]', '', 'home', 'home_site_user_forgetpwd_ad2_url', '1558084915'), ('106', '', 'url地址', '地址3 [ 带http://或https:// ]', '', 'home', 'home_site_user_forgetpwd_ad3_url', '1558084915'), ('107', '#FAFAFA', '背景色', '背景色1', '', 'home', 'home_site_user_forgetpwd_ad1_bg_color', '1558084915'), ('108', '#FAFAFA', '背景色', '背景色2', '', 'home', 'home_site_user_forgetpwd_ad2_bg_color', '1558084915'), ('109', '', '背景色', '背景色3', '', 'home', 'home_site_user_forgetpwd_ad3_bg_color', '1558084915'), ('110', '1', '用户注册图片验证码', '可以防止非法注册', '请选择是否开启用户注册图片验证码', 'home', 'home_user_register_img_verify_state', '1566227415'), ('111', '', '图片验证码规则', '默认白底黑字,可根据需求i加大验证码识别难度', '', 'common', 'common_images_verify_rules', '1558085166'), ('112', '0', 'SSL方式加密', '', '请选择是否使用SSL方式加密', 'common', 'common_email_is_use_ssl', '1580643917'), ('113', '活动/优惠未生效\n空包裹\n包裹丢失\n配送超时\n未按约定时间发货\n未送货上门\n物流显示签收但实际未收到货\n不喜欢/不想要', '仅退款原因', '可换行,一行一个', '请填写仅退款原因', 'home', 'home_order_aftersale_return_only_money_reason', '1570193301'), ('114', '7天无理由退换货\n配送超时\n未按约定时间发货\n未送货上门\n卖家发错货\n少件/漏发\n包装/商品破损/污渍\n商品信息描述不符\n使用后过敏\n已过/临近保质期\n无法溶解/结块/有异物', '退货退款原因', '可换行,一行一个', '请填写退货退款原因', 'home', 'home_order_aftersale_return_money_goods_reason', '1570193301'), ('115', '1', '用户注册协议', '', '请选择是否启用用户注册协议', 'home', 'home_is_enable_userregister_agreement', '1566227415'), ('116', '上海市 浦东新区', '退货地址', '用户退货货物收货地址', '请填写退货地址', 'home', 'home_order_aftersale_return_goods_address', '1570193301'), ('117', '0', '使用独立手机详情', '默认使用web详情', '请选择使用独立手机详情', 'common', 'common_app_is_use_mobile_detail', '1580559058'), ('118', '0', '强制绑定手机', '默认否', '请选择是否强制绑定手机', 'common', 'common_user_is_mandatory_bind_mobile', '1580559058'), ('121', '0', '固定顶部导航', '默认否', '请选择是否固定顶部导航', 'common', 'common_app_is_header_nav_fixed', '1580559058'), ('122', '0', '开启在线客服', '默认否', '请选择是否开启在线客服', 'common', 'common_app_is_online_service', '1580559058'), ('123', '0', '启用限时秒杀', '默认否', '请选择是否启用限时秒杀', 'common', 'common_app_is_limitedtimediscount', '1580559058'), ('124', '0', '启用好物推荐', '默认否,需重新生成小程序包(启用则需到微信小程序后台申请权限)', '请选择是否启用好物推荐', 'common', 'common_app_is_good_thing', '1587445586'), ('125', '16634987', 'AppID', '智能小程序ID', '请填写AppID', 'common', 'common_app_mini_baidu_appid', '1586249578'), ('126', 'C9Gg744cBqQ3zvbC5uOPMg9yWpmuQ8O7', 'AppKey', '智能小程序KEY', '请填写AppKey', 'common', 'common_app_mini_baidu_appkey', '1586249578'), ('127', 'KmdPEyuSAXcbiouKVq6LOSUjctZpxmNb', 'AppSecret', '智能小程序密匙', '请填写AppSecret', 'common', 'common_app_mini_baidu_appsecret', '1586249578'), ('128', 'ShopXO', '名称', '', '请填写名称', 'common', 'common_app_mini_baidu_title', '1586249578'), ('129', '国内领先企业级B2C开源电商系统!', '描述', '', '请填写描述', 'common', 'common_app_mini_baidu_describe', '1586249578'), ('130', '0', '留言需要登录', '默认否', '请选择是否留言需要登录', 'common', 'common_is_login_answer', '1566124965'), ('131', '0', '启用海报分享', '默认否\n', '请选择是否启用海报分享\n', 'common', 'common_app_is_poster_share', '1587445586'), ('132', '30', '订单关闭脚本时长', '单位 分钟,默认30分钟', '请填写订单关闭脚本时长', 'common', 'common_order_close_limit_time', '1566124965'), ('133', '21600', '订单自动收货脚本时长', '单位 分钟,默认21600分钟/15天', '请填写订单自动收货脚本时长', 'common', 'common_order_success_limit_time', '1566124965'), ('134', '', 'AppID', '小程序ID', '请填写AppID', 'common', 'common_app_mini_toutiao_appid', '1580644065'), ('135', '', 'AppSecret', '小程序Secret', '请填写AppSecret', 'common', 'common_app_mini_toutiao_appsecret', '1580644065'), ('136', '', 'PayMerchantID', '支付商户号', '请填写支付商户号', 'common', 'common_app_mini_toutiao_pay_merchant_id', '1580644065'), ('137', '', 'PayAppID', '支付AppID', '请填写AppID', 'common', 'common_app_mini_toutiao_pay_appid', '1580644065'), ('138', '', 'PaySecret', '支付Secret', '请填写支付Secret', 'common', 'common_app_mini_toutiao_pay_secret', '1580644065'), ('139', 'ShopXO', '名称', '', '请填写名称', 'common', 'common_app_mini_toutiao_title', '1580644065'), ('140', '国内领先企业级B2C开源电商系统!', '描述', '', '请填写描述', 'common', 'common_app_mini_toutiao_describe', '1580644065'), ('141', '', '公安备案号', '如:京公网安备xxx号', '请填写公安备案号', 'home', 'home_site_security_record_name', '1572944120'), ('142', '', '公安备案地址', '备案展示页面的url地址', '请填写公安备案地址', 'home', 'home_site_security_record_url', '1572944120'), ('143', '', 'AppID', '小程序ID', '请填写AppID', 'common', 'common_app_mini_qq_appid', '1580644073'), ('144', '', 'AppSecret', '小程序Secret', '请填写AppSecret', 'common', 'common_app_mini_qq_appsecret', '1580644073'), ('145', '', 'AppToken', '小程序Token', '请填写AppToken', 'common', 'common_app_mini_qq_apptoken', '1580644073'), ('146', 'ShopXO', '名称', '', '请填写名称', 'common', 'common_app_mini_qq_title', '1580644073'), ('147', '国内领先企业级B2C开源电商系统!', '描述', '', '请填写描述', 'common', 'common_app_mini_qq_describe', '1580644073'), ('148', '0', '是否启用用户中心头部小导航', '默认否', '请选择是否启用用户中心头部小导航', 'common', 'common_app_is_head_vice_nav', '1580559058'), ('151', '4', '站点类型', '默认销售型', '请选择站点类型', 'common', 'common_site_type', '1589032774'), ('150', '', '展示型操作名称', '默认 立即咨询', '请填写展示型操作名称', 'common', 'common_is_exhibition_mode_btn_text', '1589032774'), ('153', '', '虚拟信息标题', '默认密钥信息', '请填写虚拟信息标题', 'common', 'common_site_fictitious_return_title', '1589032774'), ('154', '', '提示信息', '', '请填写提示信息', 'common', 'common_site_fictitious_return_tips', '1589032774'), ('155', '', '在线客服-企业编码', '空则不显示在线客服', '请填写在线客服-企业编码', 'common', 'common_app_mini_alipay_tnt_inst_id', '1580643970'), ('156', '', '在线客服-聊天窗编码', '空则不显示在线客服', '请填写在线客服-聊天窗编码', 'common', 'common_app_mini_alipay_scene', '1580643970'), ('157', '0', '商品详情页展示相册', '默认否', '请选择是否商品详情页展示相册', 'common', 'common_is_goods_detail_show_photo', '1575273956'), ('158', '0', '手机简洁模式', '默认否', '请选择是否手机简洁模式', 'common', 'common_is_mobile_concise_model', '1580643961'), ('159', '0', '启用直播', '默认否,需重新生成小程序包(启用则需到微信小程序后台申请权限)', '请选择是否启用直播', 'common', 'common_app_weixin_liveplayer', '1587445586'),(160, 'aliyun', '短信平台', '选择使用的短信平台', '请确认使用的配置是适合当前所选短信平台的。', 'common', 'common_sms_platform', 1590335998),(161, '', '短信平台APP_ID', '腾讯云必填字段,可以在腾讯云/短信/应用管理找到', '腾讯云必须填写此字段', 'common', 'common_sms_sdk_appid', 1590335998); COMMIT; -- ---------------------------- diff --git a/extend/base/AliyunSms.php b/extend/base/AliyunSms.php new file mode 100755 index 0000000000000000000000000000000000000000..a99c9a540499a398447ffbacfccb75639608f6ad --- /dev/null +++ b/extend/base/AliyunSms.php @@ -0,0 +1,196 @@ +signName = MyC('common_sms_sign'); + $this->accessKeyId = MyC('common_sms_apikey'); + $this->accessKeySecret = MyC('common_sms_apisecret'); + } + + private function percentEncode($string) + { + $string = urlencode($string); + $string = preg_replace('/\+/', '%20', $string); + $string = preg_replace('/\*/', '%2A', $string); + $string = preg_replace('/%7E/', '~', $string); + return $string; + } + + /** + * 签名 + * + * @param unknown $parameters + * @param unknown $accessKeySecret + * @return string + */ + private function computeSignature($parameters, $accessKeySecret) + { + ksort($parameters); + $canonicalizedQueryString = ''; + foreach ($parameters as $key => $value) { + $canonicalizedQueryString .= '&' . $this->percentEncode($key) . '=' . $this->percentEncode($value); + } + $stringToSign = 'GET&%2F&' . $this->percentencode(substr($canonicalizedQueryString, 1)); + $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true)); + return $signature; + } + + /** + * 短信发送 + * @param [string] $mobile [手机号码,多个以 英文逗号 , 分割] + * @param [string|array] $code [变量code(单个直接传入 code 即可,多个传入数组)] + * @param [string] $template_code [模板 id] + * @param [boolean] $sign_name [自定义签名,默认使用基础配置的签名] + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2020-04-02 + * @desc description + */ + public function SendCode($mobile, $code, $template_code, $sign_name = '') + { + // 单个验证码需要校验是否频繁 + if (is_string($code)) { + + $codes = ['code' => $code]; + } else { + $codes = $code; + } + + // 签名 + $SignName = empty($sign_name) ? $this->signName : $sign_name; + + // 请求参数 + $params = array( //此处作了修改 + 'SignName' => $SignName, + 'Format' => 'JSON', + 'Version' => '2017-05-25', + 'AccessKeyId' => $this->accessKeyId, + 'SignatureVersion' => '1.0', + 'SignatureMethod' => 'HMAC-SHA1', + 'SignatureNonce' => uniqid(), + 'Timestamp' => gmdate('Y-m-d\TH:i:s\Z'), + 'Action' => 'SendSms', + 'TemplateCode' => $template_code, + 'PhoneNumbers' => $mobile, + 'TemplateParam' => json_encode($codes, JSON_UNESCAPED_UNICODE), + ); + //print_r($params);die; + // 计算签名并把签名结果加入请求参数 + $params ['Signature'] = $this->computeSignature($params, $this->accessKeySecret); + // 发送请求(此处作了修改) + //$url = 'https://sms.aliyuncs.com/?' . http_build_query ( $params ); + $url = 'http://dysmsapi.aliyuncs.com/?' . http_build_query($params); + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_TIMEOUT, 10); + $result = curl_exec($ch); + curl_close($ch); + $result = json_decode($result, true); + $this->rawData = $result; + + //print_r($result);//die; + if (isset ($result ['Code']) && $result['Code'] != 'OK') { + $this->error = $this->getErrorMessage($result ['Code']); + return false; + } + + + return true; + } + + /** + * 获取详细错误信息 + * + * @param unknown $status + */ + public function getErrorMessage($status) + { + // 阿里云的短信 乱八七糟的(其实是用的阿里大于) + // https://api.alidayu.com/doc2/apiDetail?spm=a3142.7629140.1.19.SmdYoA&apiId=25450 + $message = array( + 'InvalidDayuStatus.Malformed' => '账户短信开通状态不正确', + 'InvalidSignName.Malformed' => '短信签名不正确或签名状态不正确', + 'InvalidTemplateCode.MalFormed' => '短信模板Code不正确或者模板状态不正确', + 'InvalidRecNum.Malformed' => '目标手机号不正确,单次发送数量不能超过100', + 'InvalidParamString.MalFormed' => '短信模板中变量不是json格式', + 'InvalidParamStringTemplate.Malformed' => '短信模板中变量与模板内容不匹配', + 'InvalidSendSms' => '触发业务流控', + 'InvalidDayu.Malformed' => '变量不能是url,可以将变量固化在模板中', + 'isv.RAM_PERMISSION_DENY' => 'RAM权限DENY', + 'isv.OUT_OF_SERVICE' => '业务停机', + 'isv.PRODUCT_UN_SUBSCRIPT' => '未开通云通信产品的阿里云客户', + 'isv.PRODUCT_UNSUBSCRIBE' => '产品未开通', + 'isv.ACCOUNT_NOT_EXISTS' => '账户不存在', + 'isv.ACCOUNT_ABNORMAL' => '账户异常', + 'isv.SMS_TEMPLATE_ILLEGAL' => '短信模板不合法', + 'isv.SMS_SIGNATURE_ILLEGAL' => '短信签名不合法', + 'isv.INVALID_PARAMETERS' => '参数异常', + 'isv.SYSTEM_ERROR' => '系统错误', + 'isv.MOBILE_NUMBER_ILLEGAL' => '非法手机号', + 'isv.MOBILE_COUNT_OVER_LIMIT' => '手机号码数量超过限制', + 'isv.TEMPLATE_MISSING_PARAMETERS' => '模板缺少变量', + 'isv.BUSINESS_LIMIT_CONTROL' => '业务限流', + 'isv.INVALID_JSON_PARAM' => 'JSON参数不合法,只接受字符串值', + 'isv.BLACK_KEY_CONTROL_LIMIT' => '黑名单管控', + 'isv.PARAM_LENGTH_LIMIT' => '参数超出长度限制', + 'isv.PARAM_NOT_SUPPORT_URL' => '不支持URL', + 'isv.AMOUNT_NOT_ENOUGH' => '账户余额不足', + ); + if (isset ($message [$status])) { + return $message [$status]; + } + return $status; + } + +} + +?> \ No newline at end of file diff --git a/extend/base/Sms.php b/extend/base/Sms.php index fc02710d0a2d46224e2075afa70e8cf5ce63084e..c46ab51b2d99f2dd47f626a0ab86c7c6058ebd3f 100755 --- a/extend/base/Sms.php +++ b/extend/base/Sms.php @@ -9,6 +9,8 @@ // | Author: Devil // +---------------------------------------------------------------------- namespace base; +use base\AliyunSms; +use base\TencentSms; /** * 短信驱动 @@ -21,21 +23,13 @@ class Sms { // 保存错误信息 public $error; + public $rawData;//错误的时候,方便查看原始数据。 - // Access Key ID - private $accessKeyId = ''; - - // Access Access Key Secret - private $accessKeySecret = ''; - - // 签名 - private $signName = ''; - - // 模版ID - private $templateCode = ''; private $expire_time; private $key_code; + private $sms_platform=''; + private $sms_instance;//具体的SMS服务支持实例 /** * [__construct 构造方法] @@ -44,45 +38,29 @@ class Sms * @version 0.0.1 * @datetime 2017-03-07T14:03:02+0800 * @param [int] $param['interval_time'] [间隔时间(默认30)单位(秒)] - * @param [int] $param['expire_time'] [到期时间(默认30)单位(秒)] + * @param [int] $param['expire_time'] [到期时间(默认30)单位(秒),请使用60的整数倍] * @param [string] $param['key_prefix'] [验证码种存储前缀key(默认 空)] */ public function __construct($param = array()) { $this->interval_time = isset($param['interval_time']) ? intval($param['interval_time']) : 30; - $this->expire_time = isset($param['expire_time']) ? intval($param['expire_time']) : 30; + $this->expire_time = isset($param['expire_time']) ? intval($param['expire_time']) : 60; $this->key_code = isset($param['key_prefix']) ? trim($param['key_prefix']).'_sms_code' : '_sms_code'; - $this->signName = MyC('common_sms_sign'); - $this->accessKeyId = MyC('common_sms_apikey'); - $this->accessKeySecret = MyC('common_sms_apisecret'); - } + $this->sms_platform = MyC('common_sms_platform'); - private function percentEncode($string) { - $string = urlencode ( $string ); - $string = preg_replace ( '/\+/', '%20', $string ); - $string = preg_replace ( '/\*/', '%2A', $string ); - $string = preg_replace ( '/%7E/', '~', $string ); - return $string; - } - /** - * 签名 - * - * @param unknown $parameters - * @param unknown $accessKeySecret - * @return string - */ - private function computeSignature($parameters, $accessKeySecret) { - ksort ( $parameters ); - $canonicalizedQueryString = ''; - foreach ( $parameters as $key => $value ) { - $canonicalizedQueryString .= '&' . $this->percentEncode ( $key ) . '=' . $this->percentEncode ( $value ); + $this->sms_instance=$this->getSmsInstance(); + + } + private function getSmsInstance(){ + if($this->sms_platform==$this->tencentType){ + return new \Base\TencentSms(); + }else{ + return new \Base\AliyunSms(); } - $stringToSign = 'GET&%2F&' . $this->percentencode ( substr ( $canonicalizedQueryString, 1 ) ); - $signature = base64_encode ( hash_hmac ( 'sha1', $stringToSign, $accessKeySecret . '&', true ) ); - return $signature; } + /** * 短信发送 * @author Devil @@ -98,59 +76,30 @@ class Sms public function SendCode($mobile, $code, $template_code, $sign_name = '') { // 单个验证码需要校验是否频繁 + if(is_string($code)) { + // 是否频繁操作 if(!$this->IntervalTimeCheck()) { $this->error = '防止造成骚扰,请勿频繁发送'; return false; } - $codes = ['code'=>$code]; - } else { - $codes = $code; + if($this->sms_platform=='tencent') { + $codes=array($code,''.$this->expire_time/60);//将秒转为分钟,显示在短信里。 + }else{ + $codes = ['code'=>$code,'expire_time'=>''.$this->expire_time/60];//将秒转为分钟,显示在短信里。 + } } - // 签名 - $SignName = empty($sign_name) ? $this->signName : $sign_name; + $is_success=$this->sms_instance->SendCode($mobile,$codes,$template_code,$sign_name); + $this->rawData=$this->sms_instance->rawData; - // 请求参数 - $params = array ( //此处作了修改 - 'SignName' => $SignName, - 'Format' => 'JSON', - 'Version' => '2017-05-25', - 'AccessKeyId' => $this->accessKeyId, - 'SignatureVersion' => '1.0', - 'SignatureMethod' => 'HMAC-SHA1', - 'SignatureNonce' => uniqid (), - 'Timestamp' => gmdate ( 'Y-m-d\TH:i:s\Z' ), - 'Action' => 'SendSms', - 'TemplateCode' => $template_code, - 'PhoneNumbers' => $mobile, - 'TemplateParam' => json_encode($codes, JSON_UNESCAPED_UNICODE), - ); - //print_r($params);die; - // 计算签名并把签名结果加入请求参数 - $params ['Signature'] = $this->computeSignature ( $params, $this->accessKeySecret ); - // 发送请求(此处作了修改) - //$url = 'https://sms.aliyuncs.com/?' . http_build_query ( $params ); - $url = 'http://dysmsapi.aliyuncs.com/?' . http_build_query ( $params ); - - $ch = curl_init (); - curl_setopt ( $ch, CURLOPT_URL, $url ); - curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE ); - curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE ); - curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); - curl_setopt ( $ch, CURLOPT_TIMEOUT, 10 ); - $result = curl_exec ( $ch ); - curl_close ( $ch ); - $result = json_decode ( $result, true ); - //print_r($result);//die; - if (isset ( $result ['Code'] ) && $result['Code'] != 'OK') { - $this->error = $this->getErrorMessage ( $result ['Code'] ); + if(!$is_success){ + $this->error=$this->sms_instance->error; return false; } - // 种session if(is_string($code)) { @@ -159,48 +108,7 @@ class Sms return true; } - /** - * 获取详细错误信息 - * - * @param unknown $status - */ - public function getErrorMessage($status) { - // 阿里云的短信 乱八七糟的(其实是用的阿里大于) - // https://api.alidayu.com/doc2/apiDetail?spm=a3142.7629140.1.19.SmdYoA&apiId=25450 - $message = array ( - 'InvalidDayuStatus.Malformed' => '账户短信开通状态不正确', - 'InvalidSignName.Malformed' => '短信签名不正确或签名状态不正确', - 'InvalidTemplateCode.MalFormed' => '短信模板Code不正确或者模板状态不正确', - 'InvalidRecNum.Malformed' => '目标手机号不正确,单次发送数量不能超过100', - 'InvalidParamString.MalFormed' => '短信模板中变量不是json格式', - 'InvalidParamStringTemplate.Malformed' => '短信模板中变量与模板内容不匹配', - 'InvalidSendSms' => '触发业务流控', - 'InvalidDayu.Malformed' => '变量不能是url,可以将变量固化在模板中', - 'isv.RAM_PERMISSION_DENY' => 'RAM权限DENY', - 'isv.OUT_OF_SERVICE' => '业务停机', - 'isv.PRODUCT_UN_SUBSCRIPT' => '未开通云通信产品的阿里云客户', - 'isv.PRODUCT_UNSUBSCRIBE' => '产品未开通', - 'isv.ACCOUNT_NOT_EXISTS' => '账户不存在', - 'isv.ACCOUNT_ABNORMAL' => '账户异常', - 'isv.SMS_TEMPLATE_ILLEGAL' => '短信模板不合法', - 'isv.SMS_SIGNATURE_ILLEGAL' => '短信签名不合法', - 'isv.INVALID_PARAMETERS' => '参数异常', - 'isv.SYSTEM_ERROR' => '系统错误', - 'isv.MOBILE_NUMBER_ILLEGAL' => '非法手机号', - 'isv.MOBILE_COUNT_OVER_LIMIT' => '手机号码数量超过限制', - 'isv.TEMPLATE_MISSING_PARAMETERS' => '模板缺少变量', - 'isv.BUSINESS_LIMIT_CONTROL' => '业务限流', - 'isv.INVALID_JSON_PARAM' => 'JSON参数不合法,只接受字符串值', - 'isv.BLACK_KEY_CONTROL_LIMIT' => '黑名单管控', - 'isv.PARAM_LENGTH_LIMIT' => '参数超出长度限制', - 'isv.PARAM_NOT_SUPPORT_URL' => '不支持URL', - 'isv.AMOUNT_NOT_ENOUGH' => '账户余额不足', - ); - if (isset ( $message [$status] )) { - return $message [$status]; - } - return $status; - } + /** * [KindofSession 种验证码session] diff --git a/extend/base/TencentSms.php b/extend/base/TencentSms.php new file mode 100755 index 0000000000000000000000000000000000000000..ed3136b0c6696e6b46533341b98e803e377c6183 --- /dev/null +++ b/extend/base/TencentSms.php @@ -0,0 +1,266 @@ +signName = MyC('common_sms_sign'); + $this->accessKeyId = MyC('common_sms_apikey'); + $this->accessKeySecret = MyC('common_sms_apisecret'); + $this->platform_appid = MyC('common_sms_sdk_appid'); + } + + + /** + * 签名 + * + * @param unknown $parameters + * @param unknown $accessKeySecret + * @return string + */ + private function computeSignature($host, $payload, $timestamp) + { + $secretId = $this->accessKeyId; + $secretKey = $this->accessKeySecret; + + $service = 'sms'; + + + $algorithm = "TC3-HMAC-SHA256"; + + $httpRequestMethod = 'POST'; + $canonicalUri = "/"; + $canonicalQueryString = ""; + $canonicalHeaders = "content-type:application/json\n" . "host:" . $host . "\n"; + $signedHeaders = "content-type;host"; +// $payload = json_encode($param,JSON_UNESCAPED_UNICODE); + +// echo $payload.PHP_EOL; + + $hashedRequestPayload = hash("SHA256", $payload); + $canonicalRequest = $httpRequestMethod . "\n" + . $canonicalUri . "\n" + . $canonicalQueryString . "\n" + . $canonicalHeaders . "\n" + . $signedHeaders . "\n" + . $hashedRequestPayload; + +// echo $canonicalRequest.PHP_EOL; + + + // step 2: build string to sign + $date = gmdate("Y-m-d", $timestamp); + $credentialScope = $date . "/" . $service . "/tc3_request"; + $hashedCanonicalRequest = hash("SHA256", $canonicalRequest); + $stringToSign = $algorithm . "\n" + . $timestamp . "\n" + . $credentialScope . "\n" + . $hashedCanonicalRequest; +// echo $stringToSign.PHP_EOL; + + + // step 3: sign string + $secretDate = hash_hmac("SHA256", $date, "TC3" . $secretKey, true); + $secretService = hash_hmac("SHA256", $service, $secretDate, true); + $secretSigning = hash_hmac("SHA256", "tc3_request", $secretService, true); + $signature = hash_hmac("SHA256", $stringToSign, $secretSigning); +// echo $signature.PHP_EOL; + + // step 4: build authorization + $authorization = $algorithm + . " Credential=" . $secretId . "/" . $credentialScope + . ", SignedHeaders=content-type;host, Signature=" . $signature; +// echo $authorization.PHP_EOL; + + return $authorization;//返回认证签名 + + + } + + /** + * 短信发送 + * @param [string] $mobile [手机号码,多个以 英文逗号 , 分割] + * @param [string|array] $code [变量code(单个直接传入 code 即可,多个传入数组)] + * @param [string] $template_code [模板 id] + * @param [boolean] $sign_name [自定义签名,默认使用基础配置的签名] + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2020-04-02 + * @desc description + */ + public function SendCode($mobile, $code, $template_code, $sign_name = '') + { + + // 签名 + $sign_name = empty($sign_name) ? $this->signName : $sign_name; + + // 请求参数 + $params = array( //此处作了修改 + 'PhoneNumberSet' => $mobile, + 'TemplateID' => $template_code, + 'Sign' => $sign_name, + 'TemplateParamSet' => $code, + 'SessionContext' => '', + 'SmsSdkAppid' => $this->platform_appid + ); + + // 计算签名并把签名结果加入请求参数 + $timestamp = time(); + $url = 'https://' . $this->apiHost; + $version = '2019-07-11'; + $action = "SendSms"; + $payload = json_encode($params, JSON_UNESCAPED_UNICODE); + $authorization = $this->computeSignature($this->apiHost, $payload, $timestamp); + + $headers = array( + "Authorization:$authorization", + "Content-type:application/json", + "Host:$this->apiHost", + "X-TC-Action:$action", + "X-TC-Version:$version", + "X-TC-Timestamp:$timestamp", +// "X-TC-Region:$region" + ); + + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); + curl_setopt($curl, CURLOPT_AUTOREFERER, 1); + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_POSTFIELDS, $payload); + curl_setopt($curl, CURLOPT_POST, 1); + + $result = curl_exec($curl); + curl_close($curl); + + if ($result == false) { + $this->error = "访问腾讯云短信服务失败"; + + } else { + + $result = json_decode($result, true); + } + + //因为一般业务情况是发给一个人,这里就简单处理为取第一个短信的状态。 + //如果是批量的话,需要遍历获得所有的情况,这样的可以另外写一个接口。 + + $this->rawData = $result; + if (isset($result["Response"]['Error'])) { + + $errorCode = $result["Response"]['Error']['Code']; + + } else if (isset($result["Response"]["SendStatusSet"][0])) { + $sendStatusItem = $result["Response"]["SendStatusSet"][0]; + $errorCode = $sendStatusItem['Code']; + } else { + $errorCode = ''; + } + + + if (strtolower($errorCode) != 'ok') { + $this->error = $this->getErrorMessage($errorCode); + return false; + } + + + return true; + + } + + /** + * 获取详细错误信息 + * + * @param unknown $status + */ + public function getErrorMessage($status) + { + //查询错误码地址: + //https://cloud.tencent.com/document/product/382/38780 + $message = array( + 'FailedOperation.ContainSensitiveWord' => '短信内容中含有敏感词', + 'FailedOperation.FailResolvePacket' => '请求包解析失败,通常情况下是由于没有遵守 API 接口说明规范导致的', + 'FailedOperation.InsufficientBalanceInSmsPackage' => '套餐包余量不足', + 'FailedOperation.JsonParseFail' => '解析请求包体时候失败', + 'FailedOperation.MarketingSendTimeConstraint' => '营销短信发送时间限制,为避免骚扰用户,营销短信只允许在8点到22点发送。', + 'FailedOperation.MissingSignature' => '没有申请签名之前,无法申请模板,请根据 创建签名 申请完成之后再次申请。', + 'FailedOperation.PhoneNumberInBlacklist' => '手机号在黑名单库中,通常是用户退订或者命中运营商黑名单导致的,可联系 sms helper 解决。', + 'FailedOperation.PhoneNumberOnBlacklist' => '手机号在黑名单库中,通常是用户退订或者命中运营商黑名单导致的,可联系 sms helper 解决。', + 'InternalError.RequestTimeException' => '请求发起时间不正常,通常是由于您的服务器时间与腾讯云服务器时间差异超过10分钟导致的,请核对服务器时间及 API 接口中的时间字段是否正常。', + 'InternalError.Timeout' => '请求下发短信超时,请参考 60008错误详解。', + 'InvalidParameterValue.IncorrectPhoneNumber' => '手机号格式错误,请参考 1016错误详解', + 'InvalidParameterValue.ProhibitedUseUrlInTemplateParameter' => '禁止在模板变量中使用 URL。', + 'InvalidParameterValue.TemplateParameterFormatError' => '验证码模板参数格式错误,验证码类模版,模版变量只能传入0 - 6位(包括6位)纯数字', + 'LimitExceeded.AppDailyLimit' => '业务短信日下发条数超过设定的上限 ,可自行到控制台调整短信频率限制策略。', + 'LimitExceeded.DailyLimit' => '短信日下发条数超过设定的上限 (国际/港澳台),如需调整限制,可联系 sms helper。', + 'LimitExceeded.DeliveryFrequencyLimit' => '下发短信命中了频率限制策略,可自行到控制台调整短信频率限制策略,如有其他需求请联系 sms helper。', + 'LimitExceeded.PhoneNumberCountLimit' => '调用短信发送 API 接口单次提交的手机号个数超过200个', + 'LimitExceeded.PhoneNumberDailyLimit' => '单个手机号日下发短信条数超过设定的上限,可自行到控制台调整短信频率限制策略。', + 'LimitExceeded.PhoneNumberOneHourLimit' => '单个手机号1小时内下发短信条数超过设定的上限,可自行到控制台调整短信频率限制策略。', + 'LimitExceeded.PhoneNumberSameContentDailyLimit' => '单个手机号下发相同内容超过设定的上限,可自行到控制台调整短信频率限制策略。', + 'LimitExceeded.PhoneNumberThirtySecondLimit' => '单个手机号30秒内下发短信条数超过设定的上限,可自行到控制台调整短信频率限制策略。', + 'MissingParameter.EmptyPhoneNumberSet' => ' 传入的号码列表为空,请确认您的参数中是否传入号码。', + 'UnauthorizedOperation.IndividualUserMarketingSmsPermissionDeny' => '个人用户没有发营销短信的权限', + 'UnauthorizedOperation.RequestIpNotInWhitelist' => '请求 IP 不在白名单中,您配置了校验请求来源 IP,但是检测到当前请求 IP 不在配置列表中,', + 'UnauthorizedOperation.SerivceSuspendDueToArrears' => '欠费被停止服务,可自行登录腾讯云充值来缴清欠款。', + 'ContainDomesticAndInternationalPhoneNumber' => '群发请求里既有国内手机号也有国际手机号。', + 'UnsupportedOperation.UnsuportedRegion' => '不支持该地区短信下发。', + + ); + if (isset ($message [$status])) { + return $message [$status]; + } + return '错误状态码:' . $status . ',详细错查询:https://cloud.tencent.com/document/product/382/38780'; + } +} + +?> \ No newline at end of file