codecanyon-38350010-webhooks-module-for-perfex-crm

作者 : tideit 本文共3286个字,预计阅读时间需要9分钟 发布时间: 2026-03-11 共4人阅读
# Webhooks Module for Perfex CRM

## 项目概述

- **项目类型**:Perfex CRM插件模块
- **主要功能**:
  - 为Perfex CRM提供Webhook集成功能
  - 支持多种CRM事件的实时通知
  - 与第三方服务自动同步数据
  - 支持自定义Webhook端点配置
  - 支持多种HTTP请求方法
  - JWT身份验证支持
- **技术栈**:
  - PHP
  - CodeIgniter 3/4(基于Perfex CRM框架)
  - rmccue/requests库 (HTTP请求)
  - firebase/php-jwt (JWT认证)
  - MySQL数据库

## 模块结构

```
webhooks/
├── assets/                     # 静态资源文件
├── config/                     # 配置文件
├── controllers/                # 控制器
├── core/                       # 核心类库
├── helpers/                    # 辅助函数
├── includes/                   # 包含文件
│   ├── assets.php             # 资源加载
│   ├── sidebar_menu_links.php # 侧边栏菜单
│   └── staff_permissions.php  # 权限配置
├── language/                   # 语言文件
├── libraries/                  # 类库
├── migrations/                 # 数据库迁移
├── models/                     # 数据模型
├── resources/                  # 资源文件
├── third_party/               # 第三方库
├── vendor/                     # Composer依赖
├── views/                      # 视图模板
├── composer.json               # Composer配置
├── composer.lock               # 依赖锁定
├── install.php                 # 安装脚本
└── webhooks.php               # 模块入口文件
```

## 核心业务逻辑

### 1. 支持的Webhook事件

#### 1.1 客户相关事件
- `client/add` - 新增客户
- `client/edit` - 编辑客户
- `client/delete` - 删除客户

#### 1.2 联系人相关事件
- `contact/add` - 新增联系人
- `contact/edit` - 编辑联系人
- `contact/delete` - 删除联系人

#### 1.3 线索相关事件
- `leads/add` - 新增线索
- `leads/status_change` - 线索状态变更
- `leads/delete` - 删除线索

#### 1.4 发票相关事件
- `invoice/add` - 新增发票
- `invoice/edit` - 编辑发票
- `invoice/delete` - 删除发票
- `invoice/recurring_create` - 创建周期性发票

#### 1.5 任务相关事件
- `tasks/add` - 新增任务
- `tasks/edit` - 编辑任务

#### 1.6 项目相关事件
- `projects/add` - 新增项目
- `projects/edit` - 编辑项目
- `projects/delete` - 删除项目

#### 1.7 提案相关事件
- `proposals/add` - 新增提案
- `proposals/edit` - 编辑提案
- `proposals/delete` - 删除提案

#### 1.8 估算相关事件
- `estimates/add` - 新增估算
- `estimates/edit` - 编辑估算
- `estimates/delete` - 删除估算

### 2. Webhook触发机制

```php
// 示例:客户创建时触发Webhook
hooks()->add_action('contact_created', 'wbhk_contact_added_hook');
function wbhk_contact_added_hook($contactID)
{
    $CI = &get_instance();
    $tableData = new stdClass();
    $tableData->ContactData = $CI->clients_model->get_contact($contactID);
    $tableData->ClientData = $CI->clients_model->get($tableData->ContactData->userid);
    
    call_webhook($tableData, 'client', 'add', $tableData->ContactData->userid, $contactID);
}
```

### 3. 数据格式

Webhook发送的数据格式示例:
```json
{
  "event": "client/add",
  "data": {
    "id": 123,
    "company": "ABC Corp",
    "firstname": "John",
    "lastname": "Doe",
    "email": "john@example.com",
    "phonenumber": "+1234567890",
    "address": "123 Main St",
    "city": "New York",
    "state": "NY",
    "zip": "10001",
    "country": "USA",
    "created_at": "2024-01-15 10:30:00"
  },
  "timestamp": "2024-01-15 10:30:01"
}
```

### 4. 配置管理

#### 4.1 Webhook配置
- 端点URL配置
- HTTP方法选择(GET/POST/PUT/DELETE)
- 自定义Header配置
- 认证方式配置
- 事件订阅选择

#### 4.2 安全特性
- JWT令牌验证
- 请求签名验证
- IP白名单
- SSL/TLS加密

## 核心代码分析

### 1. 模块入口 (webhooks.php)
```php
define('WEBHOOKS_MODULE', 'webhooks');

// 获取CI实例
$CI = &get_instance();

// 加载依赖
require __DIR__ . '/vendor/autoload.php';

// 注册激活钩子
register_activation_hook(WEBHOOKS_MODULE, 'webhooks_module_activation_hook');

// 注册停用钩子
register_deactivation_hook(WEBHOOKS_MODULE, 'webhooks_module_deactivation_hook');

// 加载语言文件
register_language_files(WEBHOOKS_MODULE, [WEBHOOKS_MODULE]);

// 加载辅助函数
$CI->load->helper(WEBHOOKS_MODULE . '/webhooks');
$CI->load->helper(WEBHOOKS_MODULE . '/request_webhook');
```

### 2. 事件钩子注册

#### 2.1 客户事件
```php
// 新增客户
hooks()->add_action('contact_created', 'wbhk_contact_added_hook');

// 更新客户
hooks()->add_action('contact_updated', 'wbhk_contact_updated_hook');

// 删除客户
hooks()->add_action('before_delete_contact', 'wbhk_contact_deleted_hook');
```

#### 2.2 线索事件
```php
// 新增线索
hooks()->add_action('lead_created', 'wbhk_lead_added_hook');

// 线索状态变更
hooks()->add_action('lead_status_changed', 'wbhk_lead_status_changed_hook');

// 删除线索
hooks()->add_action('before_lead_deleted', 'wbhk_lead_deleted_hook');
```

### 3. HTTP请求处理

使用rmccue/requests库发送HTTP请求:

... (content truncated)

资源在线 » codecanyon-38350010-webhooks-module-for-perfex-crm

常见问题FAQ

发表评论