diff --git a/src/app/model/web/Config.php b/src/app/model/web/Config.php index bed6c07bc..c5969eb0c 100644 --- a/src/app/model/web/Config.php +++ b/src/app/model/web/Config.php @@ -856,6 +856,23 @@ class Config extends BaseModel */ public function setWxworkConfig($data, $site_id = 1, $app_module = 'shop') { + // 只要提供了Secret,就自动生成时间戳、随机字符串和签名 + if (!empty($data['secret'])) { + $data['timestamp'] = time(); + + // 生成16位随机字符串 + $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + $nonceStr = ''; + for ($i = 0; $i < 16; $i++) { + $nonceStr .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); + } + $data['nonceStr'] = $nonceStr; + + // 生成SHA1签名 + $string = 'secret=' . $data['secret'] . '×tamp=' . $data['timestamp'] . '&nonceStr=' . $data['nonceStr']; + $data['signature'] = sha1($string); + } + $config = new ConfigModel(); $res = $config->setConfig($data, '企业微信配置', 1, [ [ 'site_id', '=', $site_id ], [ 'app_module', '=', $app_module ], [ 'config_key', '=', 'WXWORK_CONFIG' ] ]); return $res; @@ -875,6 +892,7 @@ class Config extends BaseModel $res[ 'data' ][ 'value' ] = [ 'corp_id' => '', 'agent_id' => '', + 'secret' => '', 'contact_id' => '', 'contact_url' => '', 'timestamp' => '', diff --git a/src/app/shop/controller/Config.php b/src/app/shop/controller/Config.php index da961574f..f79f6c1a3 100644 --- a/src/app/shop/controller/Config.php +++ b/src/app/shop/controller/Config.php @@ -220,6 +220,7 @@ class Config extends BaseShop $data = [ 'corp_id' => input('corp_id', ''), 'agent_id' => input('agent_id', ''), + 'secret' => input('secret', ''), 'contact_id' => input('contact_id', ''), 'contact_url' => input('contact_url', ''), 'timestamp' => input('timestamp', ''), diff --git a/src/app/shop/view/config/wxwork.html b/src/app/shop/view/config/wxwork.html index 157f19602..08eb3dd1c 100644 --- a/src/app/shop/view/config/wxwork.html +++ b/src/app/shop/view/config/wxwork.html @@ -3,9 +3,30 @@ .wxwork-form .layui-form-item{margin-bottom: 20px;} .wxwork-form .layui-input-block{margin-left: 120px;} .wxwork-help{color: #999; font-size: 12px; margin-top: 5px;} + .wxwork-required{color: #ff5722; margin-right: 4px;} + .wxwork-guide{background: #f8f9fa; border-left: 3px solid #007bff; padding: 15px; margin-top: 10px; border-radius: 4px;} + .wxwork-guide h4{margin: 0 0 10px 0; color: #007bff;} + .wxwork-guide ol{margin: 0; padding-left: 20px;} + .wxwork-guide li{margin-bottom: 8px;} + .wxwork-code{background: #f1f3f4; padding: 2px 6px; border-radius: 3px; font-family: monospace; font-size: 12px;} + .wxwork-field-required .layui-form-label{color: #333;} + .wxwork-link{color: #007bff; text-decoration: none;} + .wxwork-link:hover{text-decoration: underline;} + .wxwork-guide-toggle{margin-top: 30px;} + .wxwork-guide-toggle .guide-toggle-btn{width: 100%; padding: 12px; background: #f8f9fa; border: 1px solid #dee2e6; border-radius: 4px; cursor: pointer; transition: all 0.3s; display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 14px; color: #333;} + .wxwork-guide-toggle .guide-toggle-btn:hover{background: #e9ecef; border-color: #007bff;} + .wxwork-guide-toggle .guide-toggle-btn.active{background: #007bff; color: white; border-color: #007bff;} + .wxwork-guide-toggle .guide-content{margin-top: 15px; background: #f8f9fa; border-left: 3px solid #007bff; padding: 15px; border-radius: 4px; display: none;} + .wxwork-guide-toggle .guide-content.show{display: block;} + .guide-toggle-icon{transition: transform 0.3s;} + .guide-toggle-icon.rotate{transform: rotate(180deg);} + .password-wrapper{position: relative;} + .password-toggle{position: absolute; right: 10px; top: 50%; transform: translateY(-50%); cursor: pointer; color: #999; font-size: 16px; user-select: none;} + .password-toggle:hover{color: #007bff;}
企业微信的企业ID,可在企业微信管理后台获取
+获取方式:企业微信管理后台 → 我的企业 → 企业信息 → 企业ID
+格式:通常以 "ww" 开头的18位字符串
企业微信应用的AgentId,创建应用后获取
+获取方式:应用管理 → 选择应用 → 查看应用详情 → AgentId
+格式:数字字符串,如 1000001
企业微信客服的ID,用于客服功能
+获取方式:企业微信管理后台 → 应用管理 → 选择应用 → 查看Secret
+说明:系统必需:用于自动生成签名,请妥善保管
+安全提示:Secret仅在创建时可见,请立即复制保存
企业微信活码的链接地址
+获取方式:企业微信管理后台 → 应用管理 → 客服 → 联系我
+说明:系统必需功能,用于企业微信客服对接
+格式:通常以 "kfc_" 开头的字符串
用于验证的时间戳,通常由系统自动生成
+获取方式:企业微信管理后台 → 客服 → 联系我 → 生成活码
+说明:系统必需功能,客服活码的完整链接地址
+格式:完整的HTTPS链接,如 https://work.weixin.qq.com/kf/xxxx
用于验证的随机字符串
-用于验证的签名,通常由系统自动生成
+说明:系统将在保存配置时自动生成时间戳、随机字符串和签名
+生成规则:基于Secret使用SHA1算法生成,用于企业微信API验证
⚠️ 注意:客服功能为系统必需功能,必须正确配置相关参数
+| 参数名称 | +获取方式 | +说明 | +
|---|---|---|
| 企业ID | +企业微信管理后台 → 我的企业 → 企业信息 → 企业ID | +企业唯一标识 | +
| 应用ID | +企业微信管理后台 → 应用管理 → 选择应用 → 查看应用详情 → AgentId | +应用的AgentId | +
| 应用Secret | +企业微信管理后台 → 应用管理 → 选择应用 → 查看Secret | +必需:用于生成签名的密钥 | +
| 客服ID | +企业微信管理后台 → 应用管理 → 客服 → 联系我 | +必需:客服功能的唯一标识 | +
| 活码链接 | +企业微信管理后台 → 客服 → 联系我 → 生成活码 | +必需:客服活码的完整链接 | +
| 时间戳 | +本系统自动生成 | +Unix时间戳,无需手动填写 | +
| 随机字符串 | +本系统自动生成 | +16位随机字符,无需手动填写 | +
| 签名 | +本系统自动生成 | +SHA1签名,无需手动填写 | +