PHPackages                             devreux/zcrm-multi - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. devreux/zcrm-multi

ActiveLibrary[API Development](/categories/api)

devreux/zcrm-multi
==================

Manage multiple Zoho CRM accounts in Laravel with OAuth2, automatic token refresh and modular API access.

v1.0.3(1y ago)02MITPHPPHP ^7.4|^8.0|^8.1|^8.2

Since May 2Pushed 1y ago1 watchersCompare

[ Source](https://github.com/o1oo1o1o-u/ZCRM)[ Packagist](https://packagist.org/packages/devreux/zcrm-multi)[ RSS](/packages/devreux-zcrm-multi/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (9)Used By (0)

ZCRM Multi
==========

[](#zcrm-multi)

[![Laravel](https://camo.githubusercontent.com/64803942a83a42bc092246b1ebb08cd5d381bb96e661f486ac9c444e44131d71/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d382e302532422d4646324432303f7374796c653d666f722d7468652d6261646765266c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465)](https://laravel.com)[![License: MIT](https://camo.githubusercontent.com/7a1226d14a365d288bfe51ece915ee0c7e754a16faa51ff06436504de29b33b4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e7376673f7374796c653d666f722d7468652d6261646765)](https://opensource.org/licenses/MIT)

**Wrapper Laravel simple et moderne pour interagir avec l'API Zoho CRM, avec support multi-CRM et auto-refresh des tokens OAuth2.**

📋 Sommaire
----------

[](#-sommaire)

- [Fonctionnalités](#-fonctionnalit%C3%A9s)
- [Installation](#-installation)
- [Prérequis](#-pr%C3%A9requis--cr%C3%A9er-une-app-zoho)
- [Configuration](#-configuration)
- [Utilisation](#-utilisation)
    - [Sélection du CRM](#s%C3%A9lection-du-crm)
    - [Récupération de données](#r%C3%A9cup%C3%A9ration-de-donn%C3%A9es)
    - [Création, mise à jour et suppression](#cr%C3%A9ation-mise-%C3%A0-jour-et-suppression)
    - [Pagination automatique](#pagination-automatique)
    - [Upload de fichiers](#upload-de-fichiers)
    - [Recherche avancée](#recherche-avanc%C3%A9e)
- [Commandes Artisan](#-commandes-artisan)
- [Stockage des connexions](#-stockage-des-connexions)
- [Gestion des erreurs](#-gestion-des-erreurs)
- [Roadmap](#-roadmap)
- [Auteur](#-auteur)
- [Licence](#-licence)

🚀 Fonctionnalités
-----------------

[](#-fonctionnalités)

- ✅ **Support multi-comptes Zoho CRM** (stockage local SQLite)
- 🔐 **Gestion automatique des tokens OAuth2** (avec refresh)
- 🔄 **API fluide** via façade : `ZCRM::use('moncrm')->useModule('Leads')->getRecords()`
- 📦 **Support des modules standard** (Leads, Contacts, Deals, etc.)
- 📄 **Pagination automatique** avec `getAllRecords()`
- 📎 **Upload de fichiers** avec `uploadFile()`
- 🔍 **Recherche avancée** avec critères ou builder fluide
- 🎯 **Compatible** Laravel 8, 9, 10+

🛠 Installation
--------------

[](#-installation)

### 1. Ajouter le dépôt GitHub dans Composer

[](#1-ajouter-le-dépôt-github-dans-composer)

Ajoutez ce dépôt dans votre `composer.json` :

```
"repositories": [
  {
    "type": "vcs",
    "url": "https://github.com/o1oo1o1o-u/ZCRM.git"
  }
]
```

OU utilisez la commande :

```
composer config repositories.zcrm vcs https://github.com/o1oo1o1o-u/ZCRM.git
```

Puis installez le package :

```
composer require devreux/zcrm-multi:^1.0
```

### 2. Publier la configuration

[](#2-publier-la-configuration)

```
php artisan vendor:publish --tag=config
```

⚙️ Prérequis : créer une app Zoho
---------------------------------

[](#️-prérequis--créer-une-app-zoho)

Vous devez enregistrer votre application Zoho pour récupérer les identifiants d'API.

📖 [Documentation officielle](https://www.zoho.com/crm/developer/docs/api/register-client.html)

### Étapes :

[](#étapes-)

1. Connectez-vous sur [Zoho API Console](https://api-console.zoho.com/)
2. Créez une application de type "Server-based"
3. Définissez une URL de redirection (ex: )
4. Notez les `client_id` et `client_secret` fournis
5. Configurez les scopes nécessaires (par défaut : `ZohoCRM.modules.ALL`)

🔧 Configuration
---------------

[](#-configuration)

Pour configurer une connexion CRM :

### Commande `zcrm:init-auth` (assistée)

[](#commande-zcrminit-auth-assistée)

Cette méthode génère un lien d'autorisation et configure tout automatiquement :

```
php artisan zcrm:init-auth \
  --name=moncrm \
  --client_id=1000.abcxyz \
  --client_secret=xxxxxxxx \
  --region=eu
```

La commande générera un lien à ouvrir dans votre navigateur pour autoriser l'application.

> ⚠️ ZCRM garde en mémoire le dernier CRM utilisé via `use('...')`. Si aucun n’est défini, le premier CRM enregistré sera utilisé par défaut.

✅ Utilisation
-------------

[](#-utilisation)

### Sélection du CRM

[](#sélection-du-crm)

```
use ZCRM;

// Utiliser un CRM spécifique
$leads = ZCRM::use('moncrm')->useModule('Leads')->getRecords();

// Utiliser le CRM par défaut (premier enregistré)
$contact = ZCRM::useModule('Contacts')->getRecord('1234567890');
```

### Récupération de données

[](#récupération-de-données)

```
// Récupérer tous les enregistrements d'un module (max 200 par défaut)
$leads = ZCRM::useModule('Leads')->getRecords();

// Récupérer un enregistrement spécifique par ID
$contact = ZCRM::useModule('Contacts')->getRecord('1234567890');

// Récupérer avec options supplémentaires
$leads = ZCRM::useModule('Leads')->getRecords([
    'fields' => 'First_Name,Last_Name,Email,Phone',
    'sort_by' => 'Created_Time',
    'sort_order' => 'desc',
    'per_page' => 100
]);
```

### Création, mise à jour et suppression

[](#création-mise-à-jour-et-suppression)

```
// Créer un nouvel enregistrement
$newLead = ZCRM::useModule('Leads')->createRecord([
    'First_Name' => 'Ju',
    'Last_Name' => 'Devreux',
    'Email' => 'contact@devreux.fr'
]);

// Mettre à jour un enregistrement existant
ZCRM::useModule('Deals')->updateRecord('987654321', [
    'Stage' => 'Qualification',
    'Amount' => 15000
]);

// Supprimer un enregistrement
ZCRM::useModule('Leads')->deleteRecord('1234567890');
```

### Pagination automatique

[](#pagination-automatique)

```
// Récupérer TOUS les enregistrements (gestion auto des pages)
$allDeals = ZCRM::useModule('Deals')->getAllRecords();

// Avec options supplémentaires
$clients = ZCRM::useModule('Contacts')->getAllRecords([
    'fields' => 'First_Name,Last_Name,Email',
    'sort_by' => 'Created_Time'
]);
```

### Upload de fichiers

[](#upload-de-fichiers)

```
// Uploader un fichier pour un enregistrement
ZCRM::useModule('Leads')->uploadFile('12345', storage_path('app/devis.pdf'));
```

### Recherche avancée

[](#recherche-avancée)

#### Méthode 1 : Avec une chaîne de critères

[](#méthode-1--avec-une-chaîne-de-critères)

```
$parisiens = ZCRM::useModule('Leads')->findByCriteria('(City:equals:Paris)');
```

#### Méthode 2 : Avec le builder fluide

[](#méthode-2--avec-le-builder-fluide)

```
use ZCRM\Support\ZCRMSearchBuilder;

$criteria = ZCRMSearchBuilder::make()
    ->where('Email', 'starts_with', 'contact@')
    ->andWhere('City', 'equals', 'Lyon');

$results = ZCRM::useModule('Contacts')->findByCriteria($criteria);

// Conditions plus avancées
$criteria = ZCRMSearchBuilder::make()
    ->where('Last_Name', 'equals', 'Durand')
    ->andWhere('Created_Time', 'between', '2023-01-01,2023-12-31')
    ->orWhere('Email', 'contains', 'gmail.com');

$results = ZCRM::useModule('Leads')->findByCriteria($criteria);
```

🔧 Commandes Artisan
-------------------

[](#-commandes-artisan)

CommandeDescriptionParamètres`zcrm:add-crm`Ajouter une connexion CRM`--name`, `--client_id`, `--client_secret`, `--refresh_token`, `--region``zcrm:init-auth`Initialiser OAuth en une étape`--name`, `--client_id`, `--client_secret`, `--region`, \[`--redirect_uri`\], \[`--scope`\]`zcrm:list-crm`Lister toutes les connexions CRM-`zcrm:remove-crm`Supprimer une connexion CRM`{name}`📦 Stockage des connexions
-------------------------

[](#-stockage-des-connexions)

Les connexions sont stockées dans un fichier SQLite local :

```
storage/app/zcrm/crm_connections.sqlite

```

Champs enregistrés :

- `name` (clé d'accès)
- `client_id`, `client_secret`
- `refresh_token`
- `access_token`, `expires_at` (auto-géré)
- `region`, `api_domain`

⚠️ Gestion des erreurs
----------------------

[](#️-gestion-des-erreurs)

Toutes les erreurs lèvent une exception `ZCRM\Exceptions\ZCRMException`.

```
try {
    $lead = ZCRM::useModule('Leads')->getRecord('invalid_id');
} catch (\ZCRM\Exceptions\ZCRMException $e) {
    logger()->error('Erreur Zoho CRM: ' . $e->getMessage());
    // Gérer l'erreur...
}
```

👨‍💻 Auteur
----------

[](#‍-auteur)

Développé par Ju – Devreux
Contact :

📄 Licence
---------

[](#-licence)

[MIT](LICENSE)

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance49

Moderate activity, may be stable

Popularity2

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

8

Last Release

374d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/1224a599daa08eedee7cbc3901b7407c1e3cd74d2d54097bf5db85b277beff4a?d=identicon)[Devreux](/maintainers/Devreux)

---

Top Contributors

[![TEKOTEK27](https://avatars.githubusercontent.com/u/122279739?v=4)](https://github.com/TEKOTEK27 "TEKOTEK27 (40 commits)")

### Embed Badge

![Health badge](/badges/devreux-zcrm-multi/health.svg)

```
[![Health](https://phpackages.com/badges/devreux-zcrm-multi/health.svg)](https://phpackages.com/packages/devreux-zcrm-multi)
```

###  Alternatives

[skagarwal/google-places-api

Google Places Api

1913.0M8](/packages/skagarwal-google-places-api)[dcblogdev/laravel-microsoft-graph

A Laravel Microsoft Graph API (Office365) package

168285.5k1](/packages/dcblogdev-laravel-microsoft-graph)[vluzrmos/slack-api

Wrapper for Slack.com WEB API.

102589.1k3](/packages/vluzrmos-slack-api)[smodav/mpesa

M-Pesa API implementation

16363.7k1](/packages/smodav-mpesa)[jasara/php-amzn-selling-partner-api

A fluent interface for Amazon's Selling Partner API in PHP

1344.8k1](/packages/jasara-php-amzn-selling-partner-api)[grantholle/powerschool-api

A Laravel package to make interacting with PowerSchool less painful.

1715.6k1](/packages/grantholle-powerschool-api)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
