企业微信代开发应用的基本流程及实现
一、企业微信代开发应用的基本流程
企业微信中除了系统提供的应用以及上架应用商店的第三方应用外,也可以使用自己开发的应用,不过多数企业都不具备开发能力,只能采用代开发的形式进行定制。就给大家分享一下企业微信代开发应用的基本流程,为大家定制应用提供参考。
1.1什么是代开发应用
如我方是科技服务公司A,有一家公司B,B提出想在自己的企业微信工作台上,上线一个xxx功能,但是B公司没有自己的研发人员去实现完成,且也没有服务器去支撑。所以找到了A。A通过自己家的企业微信,创建一个模板,让B的管理员扫码授权后,A的研发人员可以在模板下开发应用,提交上线到B的企业微信中。这就是代开发应用。
微信官方的解释:当前第三方服务商为企业代开发自建应用时,需要线下获取企业的各类密钥数据,流程复杂、管理成本高且权限获取有安全合规风险。为了帮助服务商更加高效地、安全地为企业提供应用代开发服务,企业微信新增自建应用代开发模式,即:企业可通过扫码授权的方式,授权第三方服务商代开发自建应用。 官方文档:https://developer.work.weixin.qq.com/document/path/97112
1.2代开发流程 申请服务商代开发
企业微信->工作台->企业微信服务助手
登录企业微信管理后台
二、开发过程
2.1 前期准备工作
- 我使用的是PHP7.4,直接 composer easywechat4.0的版本,官网地:easywechat.com
composer require overtrue/wechat:~4.0 -vvv
或者你也可以直接使用官网的加密解密JDK,我使用的是php,直接下载后放在extend文件夹下面,如果没有就新建一个,下载地址:https://developer.work.weixin.qq.com/devtool/introduce?id=36388
2.2 创建代开发模板
- 首先需要开发公司创建代开发应用模板,填写代开发模板的名称、介绍、Logo、分类行业等信息,填写该代开发模板的回调 URL、Token、加密key等信息并提交申请。
- 代开发模版回调url代码,※号部分改成自己的企业
<?php
namespace app\wechat\controller;
use EasyWeChat\Factory;
use think\facade\Db;
use think\facade\Request;
require_once root_path() .'extend/weworkapi/callback/WXBizMsgCrypt.php'; // 引入加解密类
//代开发模板回调URL
class Weworkr
{
private $config = [
'corp_id' => 'wx55****6e2c', //服务商的id
'secret' => 'SAjiYfunx***********0YC23Kzos3voC1EM',//模板Secret
'token' => 'D4nRd****Cg4rM194V', //模版Token
'aes_key' => 'bAPm******xBszuAiIzExDSn6N3Nv1A8US', //模版EncodingAESKey
'log' => [
'level' => 'debug',
'file' => '/www/wwwroot/wh.******.com/public/easywechat.log',
],
];
/**
* 代开发模板回调URL
*/
public function index()
{
//代开发模板回调URL
$app = Factory::openWork($this->config);
$server = $app->server;
$server->push(function ($message) use($app) {
switch ($message['InfoType']) {
//推送suite_ticket
case 'suite_ticket':
Db::name('company_information')
->where('suite_id',$message['SuiteId'])
->update(['suite_ticket'=>$message['SuiteTicket']]);
return 'success';
break;
//授权成功通知
case 'create_auth':
$data['auth_code']=$message['AuthCode'];
$data['suite_id']=$message['SuiteId'];
$data['create_time']=time();
Db::name('company_information')->insert($data);
return 'success';
break;
//变更授权通知
case 'cancel_auth':
return 'cancel_auth';
break;
//通讯录事件通知
case 'change_contact':
switch ($message['ChangeType']){
case 'create_user':
return '新增成员事件';
break;
case 'update_user':
return '更新成员事件';
break;
case 'delete_user':
return '删除成员事件';
break;
case 'create_party':
return '新增部门事件';
break;
case 'update_party':
return '更新部门事件';
break;
case 'delete_party':
return '删除部门事件';
break;
case 'update_tag':
return '标签成员变更事件';
break;
}
break;
default:
return 'fail';
break;
}
});
$response = $server->serve();
$response->send();
}
}
- 完成模板创建后,点击模板查看会看见一个二维码,发给客户企业微信的管理员进行扫码授权,企业管理员扫代开发模版授权码时,授权完成后会推送授权成功通知到应用代开发模版回调url,收到回调后,开发者通过本接口获取到临时授权码,把临时授权码存到数据表,下次要用。
- 这一步就是授权成功后的地方,存入数据表
- 查看模板信息,点击刷新按钮,会发送一个suite_ticket,我们把这个存入到数据表
获取永久授权码,需要用到临时授权码和suite_ticket,临时授权码只能用一次,如果没有成功只能在代开发的企业后台取消授权,在服务商这边从新扫码绑定,重新获取一次临时授权码
public function getPermanentByCode(){ $find=Db::name('company_information') ->field('permanent_code,auth_code,suite_ticket') ->where('suite_id','dkdbc******79cc') ->find(); //获取代开发应用模板凭证 $url="https://qyapi.weixin.qq.com/cgi-bin/service/get_suite_token"; $data=[ "suite_id" =>'dk*******7b1bf79cc', "suite_secret" =>'SAjiYf*****Kzos3voC1EM',
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »