企业微信代开发应用的基本流程及实现

2024-10-12T10:51:00

一、企业微信代开发应用的基本流程

企业微信中除了系统提供的应用以及上架应用商店的第三方应用外,也可以使用自己开发的应用,不过多数企业都不具备开发能力,只能采用代开发的形式进行定制。就给大家分享一下企业微信代开发应用的基本流程,为大家定制应用提供参考。

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
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',
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »