From 232d9ccaa6140a0350db2aad1c77693eb47831a7 Mon Sep 17 00:00:00 2001 From: Juan Felipe Zapata Moreno Date: Fri, 6 Mar 2026 10:07:08 -0600 Subject: [PATCH] =?UTF-8?q?feat:=20actualizar=20servicio=20de=20WhatsApp?= =?UTF-8?q?=20para=20incluir=20el=20nombre=20de=20la=20empresa=20y=20elimi?= =?UTF-8?q?nar=20el=20soporte=20para=20XML=20en=20el=20env=C3=ADo=20de=20f?= =?UTF-8?q?acturas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/App/WhatsappController.php | 34 ------------------ app/Services/WhatsappService.php | 35 ++++++------------- config/services.php | 1 + 3 files changed, 12 insertions(+), 58 deletions(-) diff --git a/app/Http/Controllers/App/WhatsappController.php b/app/Http/Controllers/App/WhatsappController.php index 3cab282..e4295b4 100644 --- a/app/Http/Controllers/App/WhatsappController.php +++ b/app/Http/Controllers/App/WhatsappController.php @@ -60,14 +60,12 @@ public function sendInvoice(Request $request) 'phone_number' => ['required', 'string', 'regex:/^[0-9]{10,13}$/'], 'invoice_number' => ['required', 'string'], 'pdf_url' => ['required', 'url'], - 'xml_url' => ['nullable', 'url'], 'customer_name' => ['required', 'string', 'max:255'], ]); $result = $this->whatsAppService->sendInvoice( phoneNumber: $validated['phone_number'], pdfUrl: $validated['pdf_url'], - xmlUrl: $validated['xml_url'] ?? null, invoiceNumber: $validated['invoice_number'], customerName: $validated['customer_name'] ); @@ -84,36 +82,4 @@ public function sendInvoice(Request $request) 'error' => $result ]); } - - /** - * Enviar ticket de venta por WhatsApp - */ - public function sendSaleTicket(Request $request) - { - $validated = $request->validate([ - 'phone_number' => ['required', 'string', 'regex:/^[0-9]{10,13}$/'], - 'sale_number' => ['required', 'string'], - 'ticket_url' => ['required', 'url'], - 'customer_name' => ['required', 'string', 'max:255'], - ]); - - $result = $this->whatsAppService->sendSaleTicket( - phoneNumber: $validated['phone_number'], - ticketUrl: $validated['ticket_url'], - saleNumber: $validated['sale_number'], - customerName: $validated['customer_name'] - ); - - if ($result['success']) { - return ApiResponse::OK->response([ - 'message' => 'Ticket enviado correctamente por WhatsApp', - 'data' => $result - ]); - } - - return ApiResponse::BAD_REQUEST->response([ - 'message' => $result['message'], - 'error' => $result['error'] ?? null - ]); - } } diff --git a/app/Services/WhatsappService.php b/app/Services/WhatsappService.php index 0b8c3d0..121c5b7 100644 --- a/app/Services/WhatsappService.php +++ b/app/Services/WhatsappService.php @@ -13,6 +13,7 @@ class WhatsAppService protected string $apiUrl; protected int $orgId; protected string $token; + protected string $companyName; protected string $email = 'juan.zapata@golsystems.com.mx'; public function __construct() @@ -20,6 +21,7 @@ public function __construct() $this->apiUrl = config('services.whatsapp.api_url', 'https://whatsapp.golsystems.mx/api/send-whatsapp'); $this->orgId = config('services.whatsapp.org_id', 1); $this->token = config('services.whatsapp.token'); + $this->companyName = config('services.whatsapp.company_name', 'PDV'); if (!$this->token) { throw new \Exception('El token de WhatsApp no está configurado. Agrega WHATSAPP_TOKEN en tu archivo .env'); @@ -66,10 +68,17 @@ public function sendDocument( 'parameters' => [ [ 'type' => 'text', + 'parameter_name' => 'nombre_cliente', 'text' => $customerName, ], [ 'type' => 'text', + 'parameter_name' => 'nombre_empresa', + 'text' => $this->companyName, + ], + [ + 'type' => 'text', + 'parameter_name' => 'referencia_factura', 'text' => $ticket, ], ], @@ -147,39 +156,17 @@ public function sendDocument( public function sendInvoice( string $phoneNumber, string $pdfUrl, - ?string $xmlUrl, string $invoiceNumber, string $customerName ): array { - // Enviar PDF - $pdfResult = $this->sendDocument( + return $this->sendDocument( phoneNumber: $phoneNumber, documentUrl: $pdfUrl, - filename: "Factura_{$invoiceNumber}.pdf", + filename: "{$invoiceNumber}.pdf", userEmail: $this->email, ticket: $invoiceNumber, customerName: $customerName ); - - // Si hay XML y el PDF se envió correctamente, enviarlo también - if ($xmlUrl && $pdfResult['success']) { - $xmlResult = $this->sendDocument( - phoneNumber: $phoneNumber, - documentUrl: $xmlUrl, - filename: "Factura_{$invoiceNumber}.xml", - userEmail: $this->email, - ticket: "{$invoiceNumber}_XML", - customerName: $customerName - ); - - return [ - 'success' => $pdfResult['success'] && $xmlResult['success'], - 'pdf' => $pdfResult, - 'xml' => $xmlResult, - ]; - } - - return $pdfResult; } /** diff --git a/config/services.php b/config/services.php index f633127..a7b48b6 100644 --- a/config/services.php +++ b/config/services.php @@ -39,6 +39,7 @@ 'api_url' => env('WHATSAPP_API_URL', 'https://whatsapp.golsystems.mx/api/send-whatsapp'), 'org_id' => env('WHATSAPP_ORG_ID', 1), 'token' => env('WHATSAPP_TOKEN'), + 'company_name' => env('APP_NAME', 'PDV'), ], ];