需要描绘
一、企业使用企业微疑混名册,需要把相干数据连接返来公司的体系;
二、创立使用,完毕消息收收(如考证码)、扫码登录等;
三、推销 审批中联系关系内部选项,只可挑选已经进库的供给商;(瞅尔另外一篇文章)
结果示范
一、按照职工企微 ID能够盘问到混名册疑息
不敷:可是选项式的数据前去值是数字,需要退一步解构,尔那里便临时出干。
二、使用收收消息
企微背景相干树立
一、受权能够会见人事帮忙的使用
二、树立可托IP、域名、回调 URL
分外的常识面,那个使用是借鉴修的相干设置,已经设置的能够跳过
尔那里一同设置 4 个处所(以下图):
领受消息效劳器设置
需要树立 URL、token 战 aeskey,前面二个参数尔是随机天生的,留神保留,后端要用到。
树立可托域名
树立可托IP
受权回调域(混名册用没有到)
后端代码部门(PHP)
一、领受消息效劳器设置代码
先瞅文档:回分配置 - 交心文档 - 企业微疑开辟者中间
尔是这样完毕的:
二、Post恳求领受营业数据
代码瞅上面POST 恳求部门,主要多少个步调面:
领受url 参数;获得本死的恳求数据;挪用 sdk 的解稀办法,拿到解稀后的疑息;领受的格局是 xml,转一下数组(小我私家习惯,能够跳过);写到日记里面!(调试用)连接支到的数据干逻辑处置;给个回调
三、混名册数据获得
上面是全部掌握器的办法,比力烦琐,瞅白字就行了
启拆的办法瞅上面- /**
- * 获得混名册字段对于应疑息
- * 参数:借鉴修的使用 id 战secret
- * 前去 array
- * 2024-6-2 By展鹏
- */
- public function huamingce_field($agentid,$secret){
- //可以 会屡次挪用,制止屡次恳求,存到慢存里面,有用时间 2 小时
- $arr = Cache::get('huamingce_field');
- // print_r($arr);exit;
- if(!$arr){
- $token = $this->getAppAccessToken($agentid,$secret);
- $url = "https://qyapi.weixin.qq.com/cgi-bin/hr/get_fields?access_token=".$token;
- $result = Http::sendRequest($url, [], 'GET');
- // print_r($result);exit;
- if ($result['ret']) {
- $msg = (array)json_decode($result['msg'], true);
- if (isset($msg['group_list'])) {
- // return $msg['group_list'];
- $arr = [];
- foreach ($msg['group_list'] as $val){
- if(is_array($val['field_list'])){
- foreach ($val['field_list'] as $v){
- $arr[$v['fieldid']] = $v['field_name'];
- }
- }else{
- continue;
- }
- }
- // return $arr;
- if($arr == []) return false;
- $arr = json_encode($arr);
- Cache::set('huamingce_field',$arr,7200);
- }
- }
- }
- return (array)json_decode($arr);
- }
-
- /**
- * 获得职工混名册疑息
- * 参数:用户企微 id、可否获得局部、借鉴修的使用 id 战secret
- * 前去 array
- * 2024-6-2 By展鹏
- */
- public function huamingce_get($userid,$all = 1,$agentid,$secret){
- $token = $this->getAppAccessToken($agentid,$secret);
- // $token = $this->getAccessToken();
- $params = [
- 'userid' => $userid,
- 'get_all' => $all,
- ];
- $url = "https://qyapi.weixin.qq.com/cgi-bin/hr/get_staff_info?access_token=".$token;
- $result = Http::sendRequest($url, json_encode($params), 'POST');
- if ($result['ret']) {
- $msg = (array)json_decode($result['msg'], true);
- // print_r($msg);exit;
- if ($msg['errmsg'] == 'ok') {
- return $msg['field_info'];
- }else{
- $errmsg = explode(",",$msg['errmsg']);
- switch ($errmsg[0]) {
- case 'user not in app perm':
- // code...
- return "user not in app perm<br>请到企微背景树立权力";
- break;
-
- default:
- // code...
- return $msg['errmsg'];
- break;
- }
- }
- }
- }
复造代码 前端代码部门(html)
一、混名册前端页里(tp5 模板引擎)
- <table class="table table-striped">
- {if !empty($row)}
- <div class="alert alert-success">
- 该疑息去自企业微疑混名册<br>
- 共步时间:{$row.updatetime|htmlentities}
- </div>
- {/if}
-
- <!-- 企微疑息-->
- <thead>
- <tr>
- <th>{:__('Title')}</th>
- <th>{:__('Content')}</th>
- </tr>
- </thead>
- <tbody>
- {volist name="result" id="vo" }
- <tr>
- <td>{$key}</td>
- <td style="word-break: break-all;">{$vo|htmlentities}</td>
- </tr>
- {/volist}
- {if $Think.get.dialog}
- <tr>
- <td></td>
- <td>
- <div class="input-group">
- <!--<input name="callback" class="form-control" value="test" />-->
- <span class="input-group-btn"><a href="javascript:;" class="btn btn-success update" >革新数据</a></span>
- </div>
- </td>
- </tr>
- {/if}
- </tbody>
- </table>
- <div class="hide layer-footer">
- <label class="control-label col-xs-12 col-sm-2"></label>
- <div class="col-xs-12 col-sm-8">
- <button type="reset" class="btn btn-primary btn-embossed btn-close" onclick="Layer.closeAll();">{:__('Close')}</button>
- </div>
- </div>
- <script src="__CDN__/assets/libs/jquery/dist/jquery.min.js"></script>
- <script>
- // 按钮:革新数据
- $('.update').click(()=>{
- layer.load(0)
- // if(isValidPhoneNumber(mobile)){
- $.ajax({
- url: 'wecom/staff/huamingce',
- type: 'PUT',
- data: {staffid:"<?php echo $row->staffid; ?>"},
- // headers,
- success: res=>{
- if(res){
- layer.closeAll('loading')
- }
- if(res.code == 1){
- // resolve(res.data)
- layer.msg(res.msg)
- return true
- }else if(res.code == 0){
- layer.msg(res.msg, {icon: 7})
- reject(res.data)
- }
- },
- error: err=>{
- layer.msg(err, {icon: 7}) //其余毛病情况
- reject(err)
- }
- })
- // }else{
- // layer.msg('查抄脚机号');
- // }
- })
-
- // 脚机号码校验
- function isValidPhoneNumber(phoneNumber) {
- return /^1\d{10}$/.test(phoneNumber);
- }
- </script>
复造代码 没有太善于写文章,已完待弥补,欢送留行交换!!! |