AmoCRM bilan integratsiya uchun REST API Gateway (AmoCRM rasmiy kutubxonasi bilan)
- β AmoCRM rasmiy PHP kutubxonasi integratsiyalandi
- β Avtomatik token refresh - hech qachon expire bo'lmaydi
- β 24/7 ishlaydi - uzoq vaqt ishlatilmasa ham muammo yo'q
- β Professional error handling - barcha xatolar to'g'ri boshqariladi
- β OAuth2 callback - oson avtorizatsiya
- β Backward compatible - barcha API endpointlar oldingiday
- Tezkor boshlash
- Asosiy farqlar (v1 vs v2)
- API Endpointlar
- Docker bilan ishlatish
- Production Deploy
- Migration (v1.x β v2.0)
- Texnologiyalar
- Yordam
- Hissa qo'shish
- Litsenziya
git clone https://github.com/blogchik/amocrm-integration-gateway.git
cd amocrm-integration-gateway
composer install
cp .env.example .env.env faylni tahrirlang:
API_KEY=your-secret-gateway-key
AMO_DOMAIN=yoursubdomain.amocrm.ru
AMO_CLIENT_ID=your-integration-id
AMO_CLIENT_SECRET=your-integration-secret
AMO_REDIRECT_URI=https://your-domain.com/oauth/callback
TOKEN_STORAGE_PATH=./storage/tokens.jsonBrauzerda oching:
https://your-domain.com/oauth/authorize
AmoCRM'ga login qiling va ruxsat bering. Token avtomatik saqlanadi.
Lead yaratish:
curl -X POST https://your-domain.com/api/v1/leads/unsorted \
-H "X-API-KEY: your-secret-gateway-key" \
-H "Content-Type: application/json" \
-d '{
"source": "website",
"form_name": "Contact Form",
"lead": {
"name": "Yangi mijoz",
"price": 10000
},
"contact": {
"name": "Alisher Valiev",
"phone": "+998901234567",
"email": "alisher@example.com"
}
}'| Xususiyat | v1.x | v2.0 |
|---|---|---|
| Token refresh | Manual | Avtomatik β |
| 24 soat ishlatilmasa | Xato β | Ishlaydi β |
| AmoCRM kutubxonasi | Custom CURL | Rasmiy β |
| Error handling | Basic | Professional β |
| Token storage | JSON file | JSON file + OAuthService |
| API endpoints | Same | Same (100% compatible) |
| Method | Endpoint | Tavsif |
|---|---|---|
| GET | /oauth/authorize |
AmoCRM'ga yo'naltirish |
| GET | /oauth/callback |
OAuth callback (avtomatik) |
| GET | /oauth/status |
Token status tekshirish |
| Method | Endpoint | Tavsif |
|---|---|---|
| POST | /api/v1/leads/unsorted |
Unsorted lead yaratish |
| Method | Endpoint | Tavsif |
|---|---|---|
| GET | /api/v1/info/pipelines |
Barcha voronkalar |
| GET | /api/v1/info/pipelines/{id} |
Bitta voronka |
| GET | /api/v1/info/lead-fields |
Lead custom fields |
| GET | /api/v1/info/contact-fields |
Contact custom fields |
| GET | /api/v1/info/account |
Account ma'lumotlari |
| Method | Endpoint | Tavsif |
|---|---|---|
| GET | /health |
Health check |
# Build va ishga tushirish
docker-compose up -d
# Composer install
docker-compose exec app composer install
# Logs ko'rish
docker-compose logs -f
# To'xtatish
docker-compose down# Dependencies
composer install --no-dev --optimize-autoloader
# Permissions
chmod 600 storage/tokens.json
chmod 600 .env
# OAuth avtorizatsiya
curl https://your-domain.com/oauth/authorize# docker-compose.prod.yml
version: '3.8'
services:
app:
build:
context: .
dockerfile: docker/Dockerfile
environment:
- APP_ENV=production
volumes:
- ./storage:/var/www/html/storage
restart: unless-stoppeddocker-compose -f docker-compose.prod.yml up -dEski versiyadan o'tish uchun: MIGRATION_GUIDE.md
Qisqacha:
composer install- Eski
storage/tokens.jsonni o'chirish - Qayta avtorizatsiya:
/oauth/authorize - Tayyor! β
- PHP 8.2+
- AmoCRM API PHP Library v1.14+
- Composer
- Docker & Docker Compose
- Nginx
- OAuth2
Lead yaratish (to'liq):
{
"source": "website",
"form_name": "Main Contact Form",
"form_page": "https://example.com/contact",
"lead": {
"name": "Yangi lead - Alisher",
"price": 25000,
"custom_fields": [
{
"field_id": 123456,
"value": "Qo'shimcha ma'lumot"
}
],
"tags": ["website", "urgent"]
},
"contact": {
"name": "Alisher Valiev",
"phone": "+998901234567",
"email": "alisher@example.com"
},
"utm": {
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "spring2024"
},
"comment": "Tez aloqa qiling!",
"ip": "192.168.1.1"
}# Token statusini tekshirish
curl https://your-domain.com/oauth/status \
-H "X-API-KEY: your-key"
# Qayta avtorizatsiya
curl https://your-domain.com/oauth/authorize# Docker
docker-compose logs -f app
# Direct
tail -f storage/error.logPull request'lar xush kelibsiz!
Apache 2.0 License
Jabborov Abduroziq
v2.0.0 - Token expire muammosi butunlay hal qilindi! π
- PHP: >= 8.2
- Extensions:
curl- HTTP so'rovlar uchunjson- JSON ishlash uchunmbstring- Unicode supportopenssl- HTTPS uchun
- Server: Nginx/Apache
- OS: Linux (tavsiya), macOS, Windows
- Docker: >= 20.10
- Docker Compose: >= 1.29
- RAM: >= 512MB
- Disk: >= 1GB
Docker yordamida o'rnatish eng oson va ishonchli usul.
git clone https://github.com/blogchik/amocrm-integration-gateway.git
cd amocrm-integration-gatewaycp .env.example .env.env faylini ochib, quyidagi qiymatlarni o'zgartiring:
# Gateway API Key (o'zingizning xavfsiz kalitingiz)
API_KEY=your_super_secret_api_key_here
# AmoCRM OAuth2 Settings
AMO_DOMAIN=yoursubdomain.amocrm.ru
AMO_CLIENT_ID=your-client-id-from-amocrm
AMO_CLIENT_SECRET=your-client-secret-from-amocrm
AMO_REDIRECT_URI=http://localhost:9095/oauth/callback
# Token storage path
TOKEN_STORAGE_PATH=./storage/tokens.json
# Logging
LOG_ERRORS=truemkdir -p storage
chmod -R 775 storagedocker-compose up -dGateway ishga tushganini tekshirish:
curl http://localhost:9095/healthJavob:
{
"success": true,
"message": "Gateway is running",
"data": {
"status": "ok"
}
}Agar Docker'siz o'rnatmoqchi bo'lsangiz:
git clone https://github.com/blogchik/amocrm-integration-gateway.git
cd amocrm-integration-gatewaysudo apt update
sudo apt install -y php8.2 php8.2-fpm php8.2-curl php8.2-mbstring php8.2-jsonsudo apt install -y nginx/etc/nginx/sites-available/amocrm-gateway fayl yaratish:
server {
listen 80;
server_name your-domain.com;
root /path/to/amocrm-integration-gateway/public;
index index.php;
client_max_body_size 10M;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\. {
deny all;
}
}Nginx'ni qayta ishga tushirish:
sudo ln -s /etc/nginx/sites-available/amocrm-gateway /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxmkdir -p storage
chmod -R 775 storage
chown -R www-data:www-data storagecp .env.example .env
nano .env # Konfiguratsiyani to'ldiring.env fayl barcha muhim konfiguratsiyalarni saqlaydi:
| Variable | Ta'rif | Misol |
|---|---|---|
API_KEY |
Gateway API kaliti (xavfsiz string) | SUPER_SECRET_KEY_2024 |
AMO_DOMAIN |
AmoCRM subdomain | mycompany.amocrm.ru |
AMO_CLIENT_ID |
OAuth2 Client ID | abc123-def456-... |
AMO_CLIENT_SECRET |
OAuth2 Client Secret | xyz789qwe123... |
AMO_REDIRECT_URI |
OAuth2 Redirect URI | http://localhost:9095/oauth/callback |
TOKEN_STORAGE_PATH |
Token saqlash yo'li | ./storage/tokens.json |
LOG_ERRORS |
Xatolarni log qilish | true |
Gateway AmoCRM bilan ishlash uchun OAuth2 autentifikatsiya talab qiladi.
-
AmoCRM kabinetiga kiring:
https://www.amocrm.ru/ -
Sozlamalar β Integratsiyalar ga o'ting
-
Private integratsiya yaratish tugmasini bosing
-
Quyidagi ma'lumotlarni to'ldiring:
- Nomi: Gateway Integration
- Redirect URI:
http://your-domain.com/oauth/callback(yoki local:http://localhost:9095/oauth/callback) - Ruxsatlar:
- β Leads (read, write)
- β Contacts (read, write)
- β Notes (write)
- β Pipelines (read)
-
Saqlangandan keyin Client ID va Client Secret ko'chirib oling
AMO_CLIENT_ID=your-copied-client-id
AMO_CLIENT_SECRET=your-copied-client-secret
AMO_REDIRECT_URI=http://localhost:9095/oauth/callbackAmoCRM tokenini olish uchun qo'lda autentifikatsiya qilish kerak:
- Brauzerda quyidagi URL'ga kiring (qiymatlarni o'zingizniki bilan almashtiring):
https://yoursubdomain.amocrm.ru/oauth?client_id=YOUR_CLIENT_ID&mode=post_message
- Ruxsat bering va Authorization Codeni oling
- Terminalda curl orqali token oling:
curl -X POST https://yoursubdomain.amocrm.ru/oauth2/access_token \
-H "Content-Type: application/json" \
-d '{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"grant_type": "authorization_code",
"code": "AUTHORIZATION_CODE_HERE",
"redirect_uri": "http://localhost:9095/oauth/callback"
}'- Qaytgan
access_token,refresh_token, vaexpires_inma'lumotlarinistorage/tokens.jsonga qo'lda yozing:
{
"access_token": "your_access_token",
"refresh_token": "your_refresh_token",
"expires_at": 1234567890
}Eslatma: Gateway avtomatik ravishda tokenni yangilaydi, shuning uchun bu jarayonni faqat birinchi marta bajarish kerak.
Barcha API so'rovlari (health check bundan mustasno) X-API-KEY header talab qiladi:
curl -H "X-API-KEY: your_api_key_here" http://localhost:9095/api/v1/...Endpoint: GET /health
Auth: Kerak emas
Ta'rif: Gateway holatini tekshirish
Misol:
curl http://localhost:9095/healthJavob:
{
"success": true,
"message": "Gateway is running",
"data": {
"status": "ok"
}
}Endpoint: POST /api/v1/leads/unsorted
Auth: X-API-KEY
Ta'rif: AmoCRM'ga yangi unsorted lead qo'shish
Request Body:
{
"source": "website",
"form_name": "Contact Form",
"form_page": "https://mywebsite.com/contact",
"referer": "https://google.com",
"ip": "127.0.0.1",
"pipeline_id": 123456,
"lead": {
"name": "Yangi mijoz",
"price": 50000,
"custom_fields": [
{
"field_id": 789,
"value": "Qo'shimcha ma'lumot"
}
],
"tags": [
"website",
"hot-lead"
]
},
"contact": {
"name": "Alisher Navoi",
"phone": "+998901234567",
"email": "alisher@example.com"
},
"utm": {
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "spring_sale"
},
"comment": "Mijoz maxsulot haqida so'radi"
}Javob (Success):
{
"success": true,
"message": "Unsorted lead created successfully",
"data": {
"_embedded": {
"unsorted": [
{
"id": 12345,
"uid": "gw_abc123...",
"created_at": 1234567890
}
]
}
}
}Javob (Error):
{
"success": false,
"error": "Validation failed",
"details": {
"lead.name": "Lead name is required",
"contact": "Contact object is required"
}
}Misol (cURL):
curl -X POST http://localhost:9095/api/v1/leads/unsorted \
-H "Content-Type: application/json" \
-H "X-API-KEY: your_api_key" \
-d '{
"source": "website",
"form_name": "Konsultatsiya form",
"lead": {
"name": "Yangi mijoz so'rovi",
"price": 100000,
"tags": ["website", "urgent"]
},
"contact": {
"name": "Jasur Karimov",
"phone": "+998909876543",
"email": "jasur@example.uz"
},
"comment": "Mijoz tez orada javob kutmoqda"
}'Endpoint: GET /api/v1/info/pipelines
Auth: X-API-KEY
Ta'rif: AmoCRM'dagi barcha pipelinelar va ularning statuslarini olish
Misol:
curl -H "X-API-KEY: your_api_key" http://localhost:9095/api/v1/info/pipelinesJavob:
{
"success": true,
"message": "Pipelines retrieved successfully",
"data": {
"_embedded": {
"pipelines": [
{
"id": 123456,
"name": "Asosiy pipeline",
"is_main": true,
"_embedded": {
"statuses": [
{
"id": 111,
"name": "Yangi"
},
{
"id": 222,
"name": "Aloqada"
}
]
}
}
]
}
}
}Endpoint: GET /api/v1/info/pipelines/{id}
Auth: X-API-KEY
Ta'rif: Ma'lum bir pipeline ma'lumotlarini olish
Misol:
curl -H "X-API-KEY: your_api_key" http://localhost:9095/api/v1/info/pipelines/123456Endpoint: GET /api/v1/info/lead-fields
Auth: X-API-KEY
Ta'rif: Lead obyektidagi barcha custom fieldlarni olish (field_id va nomlar)
Misol:
curl -H "X-API-KEY: your_api_key" http://localhost:9095/api/v1/info/lead-fieldsJavob:
{
"success": true,
"message": "Lead fields retrieved successfully",
"data": {
"_embedded": {
"custom_fields": [
{
"id": 789,
"name": "Mahsulot turi",
"type": "select",
"enums": [
{
"id": 1,
"value": "Premium"
},
{
"id": 2,
"value": "Standart"
}
]
}
]
}
}
}Endpoint: GET /api/v1/info/contact-fields
Auth: X-API-KEY
Ta'rif: Contact obyektidagi custom fieldlarni olish
Misol:
curl -H "X-API-KEY: your_api_key" http://localhost:9095/api/v1/info/contact-fieldsEndpoint: GET /api/v1/info/account
Auth: X-API-KEY
Ta'rif: AmoCRM account umumiy ma'lumotlari
Misol:
curl -H "X-API-KEY: your_api_key" http://localhost:9095/api/v1/info/accountJavob:
{
"success": true,
"message": "Account info retrieved successfully",
"data": {
"id": 12345678,
"name": "My Company",
"subdomain": "mycompany",
"currency": "UZS",
"timezone": "Asia/Tashkent"
}
}Production serverga deploy qilishdan oldin quyidagilarga e'tibor bering:
- β Kuchli API_KEY ishlatish (32+ belgili random string)
- β HTTPS ishlatish (SSL sertifikat o'rnatish)
- β .env faylni .gitignore ga qo'shish
- β storage/ papkasini gitdan chiqarish
- β Firewall sozlash (faqat 80, 443 portlar ochiq)
- β Rate limiting qo'shish
- β PHP OPcache yoqish
- β Nginx caching sozlash
- β Gzip compression yoqish
- β Log rotation sozlash
- β Error log monitoring (storage/error.log)
- β Uptime monitoring (health check endpoint)
- β Disk space monitoring (token storage)
Production serverda Docker bilan deploy qilish:
# Docker o'rnatish (Ubuntu)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Docker Compose o'rnatish
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-composecd /var/www
git clone https://github.com/blogchik/amocrm-integration-gateway.git
cd amocrm-integration-gatewaycp .env.example .env
nano .envProduction .env da:
API_KEY=super_strong_random_api_key_32_chars_minimum
AMO_DOMAIN=yourcompany.amocrm.ru
AMO_CLIENT_ID=production-client-id
AMO_CLIENT_SECRET=production-client-secret
AMO_REDIRECT_URI=https://yourdomain.com/oauth/callback
TOKEN_STORAGE_PATH=./storage/tokens.json
LOG_ERRORS=trueNginx konfiguratsiyasiga SSL qo'shish:
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# ... qolgan konfiguratsiya
}
server {
listen 80;
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}docker-compose up -d
docker-compose logs -f # Loglarni kuzatish/etc/systemd/system/amocrm-gateway.service:
[Unit]
Description=AmoCRM Gateway
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/var/www/amocrm-integration-gateway
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.targetYoqish:
sudo systemctl enable amocrm-gateway
sudo systemctl start amocrm-gatewayDocker'siz traditional deployment:
sudo apt update
sudo apt install -y nginx php8.2-fpm php8.2-curl php8.2-mbstring php8.2-json/etc/nginx/sites-available/amocrm-gateway:
server {
listen 443 ssl http2;
server_name gateway.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/gateway.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gateway.yourdomain.com/privkey.pem;
root /var/www/amocrm-integration-gateway/public;
index index.php;
access_log /var/log/nginx/amocrm-gateway-access.log;
error_log /var/log/nginx/amocrm-gateway-error.log;
client_max_body_size 10M;
# Security headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
}
location ~ /\. {
deny all;
}
location ~* (\.env|tokens\.json)$ {
deny all;
}
}
server {
listen 80;
server_name gateway.yourdomain.com;
return 301 https://$server_name$request_uri;
}sudo chown -R www-data:www-data /var/www/amocrm-integration-gateway
sudo chmod -R 755 /var/www/amocrm-integration-gateway
sudo chmod -R 775 /var/www/amocrm-integration-gateway/storagesudo ln -s /etc/nginx/sites-available/amocrm-gateway /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo systemctl restart php8.2-fpmBarcha xatolar storage/error.log faylga yoziladi:
tail -f storage/error.logtail -f /var/log/nginx/access.logdocker-compose logs -f
docker-compose logs -f php # Faqat PHP logs
docker-compose logs -f nginx # Faqat Nginx logsCron job orqali health check:
# /etc/cron.d/amocrm-gateway-monitor
*/5 * * * * curl -sf http://localhost:9095/health > /dev/null || echo "Gateway down!" | mail -s "Alert" admin@example.com/etc/logrotate.d/amocrm-gateway:
/var/www/amocrm-integration-gateway/storage/*.log {
daily
rotate 14
compress
delaycompress
notifempty
missingok
create 0644 www-data www-data
}
Sabab: Docker container ishlamayotgan yoki Nginx/PHP ishlamagan
Yechim:
# Docker
docker-compose ps
docker-compose up -d
# Traditiona
sudo systemctl status nginx
sudo systemctl status php8.2-fpm
sudo systemctl restart nginx php8.2-fpmSabab: X-API-KEY header noto'g'ri yoki yuborilmagan
Yechim:
- .env fayldagi API_KEY ni tekshiring
- Request headerga to'g'ri qo'shilganini tasdiqlang:
curl -H "X-API-KEY: correct_api_key" http://localhost:9095/api/v1/...Sabab: Token muddati tugagan va yangilanmayapti
Yechim:
storage/tokens.jsonfaylni tekshiring- Token mavjud ekanligini tasdiqlang
- Refresh token to'g'riligini tekshiring
- AmoCRM'da integratsiya faol ekanligini ko'ring
- Kerak bo'lsa, tokenni qayta oling (OAuth2 sozlash qismiga qarang)
cat storage/tokens.jsonSabab: Network muammosi yoki AmoCRM server ishlamayapti
Yechim:
# AmoCRM'ga ulanishni tekshiring
curl https://yoursubdomain.amocrm.ru/api/v4/account
# DNS tekshirish
nslookup yoursubdomain.amocrm.ru
# Firewall tekshirish
sudo ufw statusSabab: storage/ papkasiga yozish huquqi yo'q
Yechim:
# Docker
docker-compose exec php chown -R www-data:www-data /var/www/html/storage
docker-compose exec php chmod -R 775 /var/www/html/storage
# Traditional
sudo chown -R www-data:www-data storage/
sudo chmod -R 775 storage/Sabab: URL noto'g'ri yoki Nginx rewrite sozlanmagan
Yechim:
- URL to'g'riligini tekshiring
- Nginx konfiguratsiyasida
try_filessozlamasi borligini ko'ring - Nginx'ni qayta yuklang
sudo nginx -t
sudo systemctl reload nginxSabab: Port band, konfiguratsiya xatosi
Yechim:
# Portni tekshirish
sudo lsof -i :9095
# Loglarni ko'rish
docker-compose logs
# Container'ni qayta yaratish
docker-compose down
docker-compose up -d --force-recreatepublic/index.php faylda:
error_reporting(E_ALL);
ini_set('display_errors', '1'); // Development uchunMUHIM: Production'da display_errors ni '0' qiling!
// LeadController.php
public function createUnsorted(): void
{
$rawBody = file_get_contents('php://input');
var_dump($rawBody); // Debug
die();
}tail -f storage/error.logsrc/AmoClient.php da:
error_log("AmoCRM Request: $method $endpoint");
error_log("AmoCRM Request Data: " . json_encode($data));
error_log("AmoCRM Response: $response");curl_setopt($ch, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'w+');
curl_setopt($ch, CURLOPT_STDERR, $verbose);-
Postman yoki Insomnia dasturini yuklab oling
-
Yangi request yarating:
- Method: POST
- URL: http://localhost:9095/api/v1/leads/unsorted
- Headers:
Content-Type: application/jsonX-API-KEY: your_api_key
- Body: JSON formatda
-
Response va error ma'lumotlarini tekshiring
# Container ichiga kirish
docker-compose exec php sh
cd /var/www/html
ls -la storage/
# PHP versiyasi
docker-compose exec php php -v
# PHP extensions
docker-compose exec php php -m
# Logs
docker-compose logs --tail=100 php- Kuchli API key:
# Random API key generatsiya qilish
openssl rand -base64 32-
API keyni environment variablega qo'yish - Hech qachon code'ga yozmang
-
API key rotation - Davriy ravishda yangilash
Production'da faqat HTTPS ishlatish:
# HTTP'ni HTTPS'ga yo'naltirish
server {
listen 80;
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}Nginx rate limiting qo'shish:
# nginx.conf
http {
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
server {
location /api/ {
limit_req zone=api_limit burst=20 nodelay;
}
}
}Faqat ma'lum domenlardan ruxsat berish:
// public/index.php
$allowedOrigins = ['https://mywebsite.com', 'https://admin.mywebsite.com'];
$origin = $_SERVER['HTTP_ORIGIN'] ?? '';
if (in_array($origin, $allowedOrigins)) {
header("Access-Control-Allow-Origin: $origin");
}- .env ni gitdan chiqaring:
echo ".env" >> .gitignore
git rm --cached .env- storage/ papkasini himoyalang:
location ~* tokens\.json$ {
deny all;
}- File permissions:
chmod 600 .env
chmod 600 storage/tokens.jsonLoyihaga hissa qo'shmoqchimisiz? Ajoyib! Quyidagi qoidalarga rioya qiling:
- Fork qiling:
# GitHub'da Fork tugmasini bosing
git clone https://github.com/YOUR_USERNAME/amocrm-integration-gateway.git- Yangi branch yarating:
git checkout -b feature/my-awesome-feature- O'zgarishlar kiriting:
git add .
git commit -m "feat: mening ajoyib feature"- Push qiling:
git push origin feature/my-awesome-feature- Pull Request oching GitHub'da
<type>: <subject>
<body>
<footer>
Type'lar:
feat: Yangi featurefix: Bug fixdocs: Dokumentatsiyastyle: Kod formatlashrefactor: Refactoringtest: Test qo'shishchore: Build yoki tool o'zgartirishlari
Misol:
feat: add pipeline filtering endpoint
- GET /api/v1/pipelines?status=active endpoint qo'shildi
- Status bo'yicha filtr qo'shildi
- Test case'lar yozildi
Closes #123
- PHP PSR-12 standardiga rioya qiling
- 4 space indentation ishlatil
- Commentlar Uzbek yoki English tilida
Muammo topsangiz yoki feature so'ramoqchi bo'lsangiz, GitHub Issues da yangi issue oching.
Bu loyiha Apache License 2.0 ostida litsenziyalangan. Batafsil ma'lumot uchun LICENSE faylga qarang.
Siz quyidagilarni qilishingiz mumkin:
- β Komertsial maqsadlarda ishlatish
- β O'zgartirish va tarqatish
- β Patent huquqlaridan foydalanish
- β Private loyihalarda ishlatish
Shartlar:
- π Litsenziya va copyright eslatmasini saqlab qolish
- π O'zgarishlarni belgilash
β οΈ Warranty va liability yo'qligi haqida ogohlantirish
Jabborov Abduroziq
- π§ Email: blogchikuz@gmail.com
- π GitHub: @blogchik
- π Yil: 2025
AmoCRM OAuth2 sozlash bo'limiga qarang. U yerda batafsil qo'llanma bor.
API Key siz o'zingiz yaratadigan xavfsiz string. .env faylda o'rnatiladi:
API_KEY=my_super_secure_random_key_hereYo'q, Docker majburiy emas. Oddiy Nginx + PHP-FPM bilan ham ishlatish mumkin. Lekin Docker tavsiya etiladi.
Hozircha bitta account uchun mo'ljallangan. Lekin kodni o'zgartirish orqali multi-account qilish mumkin.
Ha, gateway to'liq bepul va open-source. AmoCRM'ning o'zi pullik CRM ekanligi esdan chiqmasin.
GitHub'da repository'ni Watch qiling yoki Star bosing:
git remote add upstream https://github.com/blogchik/amocrm-integration-gateway.git
git fetch upstream
git merge upstream/mainHa, Apache 2.0 litsenziyasi commercial foydalanishga ruxsat beradi.
Yordam kerakmi? Quyidagi usullardan foydalaning:
- π Bug report: GitHub Issues
- π‘ Feature request: GitHub Issues
- π§ Email: blogchikuz@gmail.com
- π¬ Telegram: @JabborovAbduroziq
Ushbu loyihada foydalanilgan texnologiyalar:
Hamda barcha contributor'larga rahmat! π
- β¨ Initial release
- π Unsorted leads yaratish
- π Info endpoints (pipelines, fields, account)
- π OAuth2 token management
- π³ Docker containerization
- π To'liq dokumentatsiya
Loyihani yoqtirdingizmi? β Star bering!