承接 bslsac/messenger-client 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

bslsac/messenger-client

Composer 安装命令:

composer require bslsac/messenger-client

包简介

Official Laravel client for BSLSAC Messenger API

README 文档

README

Cliente oficial para integración con BSLSAC el Messenger API.

Este paquete encapsula la comunicación con el servicio centralizado Messenger, proporcionando una interfaz simple para enviar notificaciones desde aplicaciones Laravel sin que los sistemas consumidores tengan que implementar lógica de seguridad, construcción de solicitudes HTTP o generación de firmas.

Descripción

BSLSAC Messenger Client fue creado para estandarizar la comunicación entre aplicaciones PHP y el Messenger API de BSLSAC.

El objetivo principal es separar responsabilidades:

  • Las aplicaciones consumidoras únicamente definen la notificación que desean enviar.
  • El paquete administra la comunicación segura.
  • Messenger API administra la autenticación, procesamiento y entrega.

La aplicación consumidora no debe conocer detalles internos del protocolo como:

  • generación de timestamps;
  • construcción de cadenas de firma;
  • generación de HMAC;
  • creación de headers de seguridad;
  • estructura interna de autenticación.

Características

Actualmente el paquete incluye:

  • Cliente HTTP para Messenger API.
  • Integración nativa con Laravel mediante Service Provider.
  • DTO para construcción de notificaciones.
  • Generación automática de timestamps.
  • Autenticación mediante HMAC-SHA256.
  • Generación automática de firmas digitales.
  • Creación automática de headers de seguridad.
  • Serialización automática del contenido.
  • Configuración mediante variables de entorno independientes.

Requisitos

  • PHP >= 8.2
  • Laravel >= 10
  • Composer
  • Extensión OpenSSL habilitada.

Instalación

Instalar mediante Composer:

composer require bslsac/messenger-client

Laravel detectará automáticamente el Service Provider mediante Package Discovery.

Publicación de configuración

Después de instalar el paquete, publicar la configuración:

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

Esto generará:

config/messenger.php

Configuración

El paquete utiliza variables propias para evitar dependencia de configuraciones internas de Laravel.

Agregar al archivo .env:

SAC_MESSENGER_URL=http://localhost/messenger/public
SAC_MESSENGER_KEY=erp_main
SAC_MESSENGER_SECRET=your_secret_key

Variables de entorno

VariableDescripción
SAC_MESSENGER_URLURL base del servicio Messenger API
SAC_MESSENGER_KEYIdentificador de la aplicación registrada
SAC_MESSENGER_SECRETSecreto utilizado para generar firmas HMAC

Configuración interna

Archivo:

config/messenger.php

Ejemplo:

return [

    'url' => env('SAC_MESSENGER_URL'),

    'key' => env('SAC_MESSENGER_KEY'),

    'secret' => env('SAC_MESSENGER_SECRET'),

    'security' => [

        'timestamp_tolerance' => 300,

        'signature_ttl' => 300,

    ],

];

Seguridad

Messenger utiliza autenticación mediante firma HMAC-SHA256.

Cada solicitud enviada al servicio Messenger contiene una firma generada utilizando:

HMAC-SHA256

La firma utiliza:

  • secreto privado de la aplicación;
  • método HTTP;
  • ruta;
  • timestamp;
  • contenido del request.

Construcción de la firma

La cadena utilizada para generar la firma tiene la siguiente estructura:

METHOD|PATH|TIMESTAMP|BODY

Ejemplo:

POST|api/v1/notifications|1784049124|{"channel":"email","recipient":"test@test.com"}

La firma generada:

HMAC-SHA256(
    cadena,
    SAC_MESSENGER_SECRET
)

Headers generados

El paquete agrega automáticamente:

X-Application-Key
X-Timestamp
X-Signature

Ejemplo:

X-Application-Key: erp_main

X-Timestamp: 1784049124

X-Signature:
cc2100fe807c06faa900deab7a5fba6c091fc34f67e1b010cb4a0c21b1fb5dcd

Validaciones realizadas por Messenger API

Messenger valida cada solicitud recibida.

Validación de aplicación

Se verifica:

  • existencia de la aplicación;
  • credencial registrada;
  • estado activo;
  • fecha de expiración.

Validación de timestamp

Cada solicitud incluye un timestamp Unix.

Messenger valida que la diferencia entre cliente y servidor no exceda el límite permitido.

Esto evita solicitudes antiguas.

Ejemplo:

SAC_MESSENGER_TIMESTAMP

Validación HMAC

Messenger genera nuevamente la firma utilizando el secreto almacenado.

Comparación:

firma_cliente == firma_servidor

Si no coincide:

{
  "success": false,
  "code": "INVALID_SIGNATURE",
  "message": "Invalid request signature."
}

Prevención de Replay Attack

Cada firma utilizada es registrada temporalmente.

Una misma firma no puede utilizarse nuevamente.

El registro contiene:

  • aplicación;
  • firma;
  • timestamp;
  • fecha de expiración.

Uso

Ejemplo básico:

use Sac\Messenger\DTO\Notification;
use Sac\Messenger\MessengerManager;


$notification = new Notification(

    channel: 'email',

    recipient: 'usuario@example.com',

    type: 'password_reset',

    payload: [

        'template' => 1,

        'data' => [

            'name' => 'Carlos'

        ]

    ]

);


$response = app(MessengerManager::class)
    ->send($notification);

Estructura de una notificación

Ejemplo:

{
  "channel": "email",
  "recipient": "usuario@example.com",
  "type": "password_reset",
  "payload": {
    "template": 1,
    "data": {
      "name": "Carlos"
    }
  }
}

DTO Notification

La notificación representa la información necesaria para Messenger:

CampoDescripción
channelCanal de envío. Ejemplo: email
recipientDestinatario
typeTipo de notificación
payloadInformación adicional del mensaje

Arquitectura

El paquete sigue una arquitectura donde cada componente tiene una responsabilidad definida.

Aplicación Laravel
        |
        |
        v
Messenger Laravel Client
        |
        |
        v
Messenger API
        |
        |
        v
Servicios de entrega

Responsabilidades

Aplicación consumidora

Responsable de:

  • definir la notificación;
  • indicar destinatario;
  • definir canal;
  • enviar datos necesarios.

No debe:

  • generar firmas;
  • manejar headers;
  • construir requests manualmente.

Messenger Laravel Client

Responsable de:

  • comunicación HTTP;
  • generación de timestamp;
  • construcción de firma;
  • autenticación;
  • serialización.

Messenger API

Responsable de:

  • autenticación;
  • validación;
  • almacenamiento;
  • procesamiento;
  • entrega.

Manejo de secretos

Los secretos deben almacenarse únicamente mediante variables de entorno.

Ejemplo:

SAC_MESSENGER_SECRET=3d512e4830796cb4903950f5e807749e845abce8f0706146ea2e504a3e78dc54

Los secretos deben generarse utilizando valores aleatorios seguros.

Ejemplo:

bin2hex(random_bytes(32))

No utilizar valores predecibles.

Independencia de APP_KEY

El paquete no utiliza:

APP_KEY

de Laravel para autenticación.

La identidad criptográfica de Messenger es independiente:

SAC_MESSENGER_SECRET

Esto permite:

  • cambiar APP_KEY de una aplicación Laravel;
  • mantener integraciones existentes;
  • separar seguridad del framework y seguridad entre servicios.

Compatibilidad

Diseñado para funcionar con:

  • Laravel 10
  • Laravel 11
  • Laravel 12
  • Laravel 13

Roadmap

Próximas mejoras:

  • Reintentos configurables.
  • Soporte para nuevos canales.
  • Versionado estable.
  • Mejoras de observabilidad.
  • Publicación oficial mediante Composer. s

Versión

0.1.0

Primera versión funcional.

Incluye:

  • Cliente HTTP.
  • Service Provider.
  • DTO Notification.
  • Configuración propia.
  • Firma HMAC-SHA256.
  • Headers de seguridad.
  • Comunicación segura con Messenger API.

Licencia

MIT

bslsac/messenger-client 适用场景与选型建议

bslsac/messenger-client 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 07 月 15 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「api」 「email」 「notification」 「laravel」 「push」 「Messenger」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 bslsac/messenger-client 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 bslsac/messenger-client 我们能提供哪些服务?
定制开发 / 二次开发

基于 bslsac/messenger-client 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-15