feat(stripe-sync): implementar resolución dinámica de métodos de pago y corregir validación API
- Se agregó 'getPaymentMethodIdByName' para buscar automáticamente el ID de "Transferencia bancaria" por nombre, asegurando portabilidad entre servidores UISP. - Se implementó el manejo del webhook 'customer_cash_balance_transaction.created' para el registro automático de pagos fondeados. - Fix: Se corrigió error 422 en la API de UCRM forzando el cast de 'clientId' a integer y 'methodId' a string (GUID). - Se actualizó la documentación (README/CHANGELOG) con instrucciones de configuración de webhooks.
This commit is contained in:
parent
c8061c49fe
commit
7e4a535038
2
.gitignore
vendored
Normal file → Executable file
2
.gitignore
vendored
Normal file → Executable file
@ -1,2 +1,4 @@
|
|||||||
*.zip
|
*.zip
|
||||||
unmscrm.apib
|
unmscrm.apib
|
||||||
|
/ucrm.json
|
||||||
|
/data/
|
||||||
8
CHANGELOG.md
Normal file → Executable file
8
CHANGELOG.md
Normal file → Executable file
@ -1,5 +1,13 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [1.2.0] - 23-12-2025
|
||||||
|
### Added
|
||||||
|
- Resolución dinámica del ID del método de pago ("Transferencia bancaria") para mayor portabilidad entre sistemas UISP.
|
||||||
|
- Manejo del evento de webhook `customer_cash_balance_transaction.created` para registrar pagos automáticos cuando se fondea una cuenta Stripe.
|
||||||
|
### Fixed
|
||||||
|
- Error de validación de API 422: Cast explícito de `clientId` a integer.
|
||||||
|
- Error de validación de API 422: Cambio de parámetro `method` a `methodId` y cast a string (GUID).
|
||||||
|
|
||||||
## [1.1.0] - 16-12-2025
|
## [1.1.0] - 16-12-2025
|
||||||
### Added
|
### Added
|
||||||
- Soporte para Modo Oscuro (Dark Mode) con detección automática y toggle manual.
|
- Soporte para Modo Oscuro (Dark Mode) con detección automática y toggle manual.
|
||||||
|
|||||||
635
PaymentIntentStripe.php
Executable file
635
PaymentIntentStripe.php
Executable file
@ -0,0 +1,635 @@
|
|||||||
|
<?php
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use Ubnt\UcrmPluginSdk\Service\UcrmApi;
|
||||||
|
use Ubnt\UcrmPluginSdk\Service\PluginLogManager;
|
||||||
|
// use Exception;
|
||||||
|
|
||||||
|
//version febereo 2025 funcional
|
||||||
|
require(__DIR__ . '/vendor/autoload.php');
|
||||||
|
|
||||||
|
// Establecer la zona horaria en Ciudad de México (UTC -6 o UTC -5 con horario de verano)
|
||||||
|
date_default_timezone_set('America/Mexico_City');
|
||||||
|
|
||||||
|
// Fechas en zona horaria de Ciudad de México
|
||||||
|
$startDateLocal = strtotime('2025-01-20 00:00:00'); // 20 de enero de 2025, 00:00 (hora local)
|
||||||
|
$endDateLocal = strtotime('2025-02-06 18:00:00'); // 6 de febrero de 2025, 18:00 (hora local)
|
||||||
|
// Convertir a UTC
|
||||||
|
$startDate = (new DateTime('@' . $startDateLocal))->setTimezone(new DateTimeZone('UTC'))->getTimestamp();
|
||||||
|
$endDate = (new DateTime('@' . $endDateLocal))->setTimezone(new DateTimeZone('UTC'))->getTimestamp();
|
||||||
|
|
||||||
|
$amount = 200; //Cantidad a cobrar
|
||||||
|
//$amount = intval($amount * 100); //Conversión de la cantidad a centavos, solo referencia, no usar
|
||||||
|
$customer_id_stripe = 'cus_PdXOlNaXGOxvlw'; //ID del cliente en Stripe
|
||||||
|
$clientId_CRM = 409; //ID del cliente en UISP CRM
|
||||||
|
//agregar constante de id de administrador 5472
|
||||||
|
$signedAdminId = 5472; //ID del administrador que realiza la operación
|
||||||
|
$produccion = true; //Variable para indicar si se está en modo producción o no
|
||||||
|
|
||||||
|
$clientGuzzleHttp = new Client([
|
||||||
|
'base_uri' => $baseUri,
|
||||||
|
'headers' => [
|
||||||
|
'X-Auth-App-Key' => $token,
|
||||||
|
'Accept' => 'application/json',
|
||||||
|
],
|
||||||
|
'verify' => false,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($produccion) {
|
||||||
|
$stripe = new \Stripe\StripeClient('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'); //Token de clave privada en modo prodcucción para la API de Stripe
|
||||||
|
$baseUri = 'https://sistema.siip.mx/crm/api/v1.0/'; //endpoint de la API REST del CRM
|
||||||
|
// $token = '7adc9198-50b1-41d0-9bfa-d4946902ed89'; //Token para acceder a los recursos del CRM 2025
|
||||||
|
// $token = '079c28f5-888c-457d-bd7a-0a4202590f75'; //Token para acceder a los recursos del CRM
|
||||||
|
$token = '72VoFACForJQzveorR1sTLrXXwrnnK/oy6Bp9luwFTGC/dRdeQWNmFZqJeHuUzqK'; //Token para acceder a los recursos del CRM actualizado
|
||||||
|
} else {
|
||||||
|
$stripe = new \Stripe\StripeClient('sk_test_51OkG0REFY1WEUtgRH6UxBK5pu80Aq5Iy8EcdPnf0cOWzuVLQTpyLCd7CbPzqMsWMafZOHElCxhEHF7g8boURjWlJ00tBwE0W1M'); //Token de clave privada en modo prueba para la API de Stripe
|
||||||
|
$baseUri = 'https://venus.siip.mx/crm/api/v1.0/'; //endpoint de la API REST del CRM
|
||||||
|
// $token = '6abef18c-783d-4dd0-b530-be6e6a7bbd1d'; //Token para acceder a los recursos del CRM
|
||||||
|
$token = 'gvcnIJqXdUjneVSjhl6THLlQcYXJyIFCcwHKVba2bvIrNraanCTb5VeoWuJ0TFZ9'; //Token para acceder a los recursos del CRM actualizado
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
createPaymentIntent($stripe, $amount, $customer_id_stripe, $clientId_CRM, $signedAdminId); //Crea el PaymentIntent
|
||||||
|
|
||||||
|
|
||||||
|
//createOxxoPaymentIntent($stripe, $amount, $customer_id_stripe, $clientId_CRM); //Crea el PaymentIntent para OXXO
|
||||||
|
//cancelarPaymentIntent($stripe, $customer_id_stripe, $clientId_CRM); //Cancela el PaymentIntent
|
||||||
|
//cancelarOxxoPaymentIntent($stripe, $customer_id_stripe, $clientId_CRM); //Cancela el PaymentIntent para OXXO
|
||||||
|
|
||||||
|
|
||||||
|
//cliente GuzzleHttp para consumir API del UISP CRM
|
||||||
|
|
||||||
|
|
||||||
|
//descomentar para generar el archivo csv con los ID de los clientes a los que se les va a cancelar sus payment intents
|
||||||
|
// $archivoCsv = './PaymentIntentStripe.csv'; //ruta al archivo csv con los ID de los clientes a los que se les va a cancelar sus payment intents
|
||||||
|
|
||||||
|
// $columnaDeseada = 0; // Columna para leer del archivo csv
|
||||||
|
// $esPrimeraFila = false; // Variable de control para detectar la primera fila e ignorarla ya que son las columnas
|
||||||
|
// $ucrm_client_id;
|
||||||
|
|
||||||
|
// if (($gestor = fopen($archivoCsv, 'r')) !== false) { //Abre el archivo csv
|
||||||
|
// while (($datos = fgetcsv($gestor, 1000, ',')) !== false) { //Lee el archivo csv
|
||||||
|
// if ($esPrimeraFila) { //Ignora la primera fila
|
||||||
|
// $esPrimeraFila = false;
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// $num = count($datos); //Cuenta el número de columnas
|
||||||
|
// for ($c = 0; $c < $num; $c++) { //Recorre las columnas
|
||||||
|
// sleep(2); //Espera 1 segundo
|
||||||
|
// $ucrm_client_id = $datos[$columnaDeseada]; //Obtiene el ID del cliente en UISP CRM
|
||||||
|
|
||||||
|
// //Hace la petición GET al CRM para obtener el ID del cliente en Stripe
|
||||||
|
// $response = $clientGuzzleHttp->request('GET', 'clients/' . $ucrm_client_id);
|
||||||
|
// $responseBody = json_decode($response->getBody(), true); //Decodifica el JSON de la respuesta
|
||||||
|
|
||||||
|
// //ejemplo de respuesta en formato JSON de la API del CRM: {"id":2,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"31 Chiapas","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Chiapas 31, Centro, Dolores Hidalgo Cuna de la Independencia Nacional, Gto., M\u00e9xico","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":"Cliente espacial, el m\u00e1s chido","sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2024-01-25T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":true,"firstName":"Daniel Humberto","lastName":"Soto Villegas","username":"danydhsv","contacts":[{"id":2,"clientId":2,"email":"dhsv.141089@gmail.com","phone":"5214181878106","name":"Personal","isBilling":false,"isContact":false,"types":[{"id":1000,"name":"WhatsApp"}]},{"id":170,"clientId":2,"email":"chavoloco@homail.com","phone":"4181148783","name":"Tio","isBilling":false,"isContact":false,"types":[{"id":1003,"name":"WhatsNotifica"}]}],"attributes":[{"id":112,"clientId":2,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_PetN1dhr4rx0kX","clientZoneVisible":true},{"id":113,"clientId":2,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"0021804341999569810","clientZoneVisible":true}],"accountBalance":700.99,"accountCredit":700.99,"accountOutstanding":0.0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[{"id":2,"name":"NS EXENTO","colorBackground":"#42a3df","colorText":"#fff"}],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1564209,"addressGpsLon":-100.9384185,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":true,"hasSuspendedService":false,"hasServiceWithoutDevices":false,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false}
|
||||||
|
|
||||||
|
// //consutar los adeudos del cliente (accountOutstanding) y ponerlo en una variable
|
||||||
|
// $accountOutstanding = $responseBody['accountOutstanding'];
|
||||||
|
|
||||||
|
// //Consultar el nombre completo del cliente y ponerlo en una variable
|
||||||
|
// $nombreCompleto = $responseBody['firstName'] . ' ' . $responseBody['lastName'];
|
||||||
|
// print_r("Nombre del cliente: " . $nombreCompleto); //Imprime el nombre del cliente
|
||||||
|
// logMessage("Nombre del cliente: " . $nombreCompleto); //Imprime el nombre del cliente
|
||||||
|
|
||||||
|
// //Consultar los atributos del cliente en UISP CRM y obtener el ID del cliente en Stripe
|
||||||
|
// $attributes = $responseBody['attributes']; //Obtiene los atributos del cliente
|
||||||
|
// $stripeCustomerId = null; //Inicializa la variable para el ID del cliente en Stripe
|
||||||
|
// foreach ($attributes as $attribute) { //Recorre los atributos del cliente
|
||||||
|
// if ($attribute['key'] == 'stripeCustomerId') { //Busca el atributo con la clave 'stripeCustomerId'
|
||||||
|
// $stripeCustomerId = $attribute['value']; //Obtiene el valor del atributo 'stripeCustomerId'
|
||||||
|
// break; //Sale del ciclo
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if ($stripeCustomerId == null) { //Si no se encontró el ID del cliente en Stripe
|
||||||
|
// print_r("No se encontró el ID del cliente en Stripe" . PHP_EOL);
|
||||||
|
// logMessage("No se encontró el ID del cliente en Stripe" . PHP_EOL);
|
||||||
|
// continue; //Continúa con el siguiente cliente
|
||||||
|
// } else {
|
||||||
|
// print_r("ID del cliente en Stripe: " . $stripeCustomerId); //Imprime el ID del cliente en Stripe
|
||||||
|
// logMessage("ID del cliente en Stripe: " . $stripeCustomerId); //Imprime el ID del cliente en Stripe
|
||||||
|
// if (cancelRequiresActionPaymentIntents($stripe, $stripeCustomerId )) {
|
||||||
|
// echo "Se encontraron y cancelaron PaymentIntents en estado 'requires_action'.\n";
|
||||||
|
// logMessage("Se encontraron y cancelaron PaymentIntents en estado 'requires_action'.\n");
|
||||||
|
// } else {
|
||||||
|
// echo "No se encontraron PaymentIntents en estado 'requires_action' para este cliente.\n";
|
||||||
|
// logMessage("No se encontraron PaymentIntents en estado 'requires_action' para este cliente.\n");
|
||||||
|
// }
|
||||||
|
// $saldoFinal = getSaldoFinal($stripe, $stripeCustomerId, $startDate, $endDate); //Obtiene el saldo final del cliente
|
||||||
|
// print_r("El saldo final es: " . $saldoFinal); //Imprime el saldo final del cliente
|
||||||
|
// logMessage("El saldo final es: " . $saldoFinal); //Imprime el saldo final del cliente
|
||||||
|
// if ($saldoFinal > 0) { //Si el saldo final es mayor a 0 y el adeudo es mayor a 0 o si el saldo final es mayor a 0 y el adeudo es igual a 0
|
||||||
|
// print_r("El saldo de Stripe es $$saldoFinal y los adeudos están en $$accountOutstanding, se procede a realizar un payment Intent" . PHP_EOL); //Imprime el saldo final del cliente
|
||||||
|
// logMessage("El saldo de Stripe es $$saldoFinal y los adeudos están en $$accountOutstanding, se procede a realizar un payment Intent" .PHP_EOL); //Imprime el saldo final del cliente
|
||||||
|
// createPaymentIntent($stripe, $saldoFinal, $stripeCustomerId, $ucrm_client_id); //Crea el PaymentIntent
|
||||||
|
// } else {
|
||||||
|
// print_r("El saldo de Stripe es $$saldoFinal y los adeudos están en $$accountOutstanding, no se realizará el cobro" . PHP_EOL); //Imprime el saldo final del cliente
|
||||||
|
// logMessage("El saldo de Stripe es $$saldoFinal y los adeudos están en $$accountOutstanding, no se realizará el cobro".PHP_EOL); //Imprime el saldo final del cliente
|
||||||
|
// }
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// fclose($gestor);
|
||||||
|
// } else {
|
||||||
|
// print_r("Error al abrir el archivo CSV" . PHP_EOL);
|
||||||
|
// logMessage("Error al abrir el archivo CSV" . PHP_EOL, 'error');
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// function getSaldoFinal($stripe, $customerId, $startDate, $endDate)
|
||||||
|
// {
|
||||||
|
// $limit = 100; // Máximo de eventos por solicitud (Stripe permite un máximo de 100)
|
||||||
|
// $lastEventId = null; // Almacena el ID del último evento para la paginación
|
||||||
|
// $filteredEvents = []; // Arreglo para almacenar los eventos filtrados
|
||||||
|
// $saldoFinal = 0; // Inicializar el saldo final
|
||||||
|
|
||||||
|
// do {
|
||||||
|
// // Obtener los eventos de transacciones de saldo en efectivo, filtrando por fechas
|
||||||
|
// $params = [
|
||||||
|
// 'type' => 'customer_cash_balance_transaction.created',
|
||||||
|
// 'created' => [
|
||||||
|
// 'gte' => $startDate, // Mayor o igual a la fecha de inicio
|
||||||
|
// 'lte' => $endDate, // Menor o igual a la fecha de fin
|
||||||
|
// ],
|
||||||
|
// 'limit' => $limit, // Establecer el límite de eventos por solicitud
|
||||||
|
// ];
|
||||||
|
|
||||||
|
// // Si ya se ha procesado una página, agregar el parámetro de paginación
|
||||||
|
// if ($lastEventId) {
|
||||||
|
// $params['starting_after'] = $lastEventId;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Obtener los eventos
|
||||||
|
// $events = $stripe->events->all($params);
|
||||||
|
|
||||||
|
// // Filtrar por customer ID y almacenar los eventos filtrados
|
||||||
|
// foreach ($events->data as $event) {
|
||||||
|
// $eventObject = $event->data->object;
|
||||||
|
|
||||||
|
// if (isset($eventObject->customer) && $eventObject->customer === $customerId) {
|
||||||
|
// $filteredEvents[] = $event; // Almacenar el evento filtrado
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Guardar el ID del último evento para la paginación
|
||||||
|
// if (!empty($events->data)) {
|
||||||
|
// $lastEventId = end($events->data)->id;// Obtener el último ID de evento
|
||||||
|
// }
|
||||||
|
|
||||||
|
// } while (!empty($events->has_more)); // Repetir mientras haya más eventos
|
||||||
|
|
||||||
|
// // Ordenar los eventos filtrados por fecha de creación (más reciente primero)
|
||||||
|
// usort($filteredEvents, function ($a, $b) {
|
||||||
|
// return $b->created - $a->created; // Orden descendente
|
||||||
|
// });
|
||||||
|
|
||||||
|
// // Obtener el evento más reciente
|
||||||
|
// if (!empty($filteredEvents)) {
|
||||||
|
// $mostRecentEvent = $filteredEvents[0]; // El primer evento será el más reciente
|
||||||
|
// $eventObject = $mostRecentEvent->data->object;
|
||||||
|
|
||||||
|
// $netAmount = abs($eventObject->net_amount); // Valor absoluto de la cantidad en centavos
|
||||||
|
// $netAmountMXN = $netAmount / 100; // Convertir a pesos mexicanos
|
||||||
|
|
||||||
|
// // echo "Evento ID: " . $mostRecentEvent->id . "\n";
|
||||||
|
// // echo "Tipo de Evento: " . $mostRecentEvent->type . "\n";
|
||||||
|
// // echo "Fecha del Evento: " . date('Y-m-d H:i:s', $mostRecentEvent->created) . "\n";
|
||||||
|
// // echo "Cantidad en positivo: " . $netAmountMXN . " MXN\n"; // Mostrar la cantidad positiva convertida a MXN
|
||||||
|
// // echo "Saldo final: " . ($eventObject->ending_balance / 100) . " MXN\n"; // Mostrar el saldo convertido a MXN
|
||||||
|
// // echo "Detalles: " . json_encode($eventObject, JSON_PRETTY_PRINT) . "\n";
|
||||||
|
|
||||||
|
// $saldoFinal = ($eventObject->ending_balance / 100); // Asignar el saldo final
|
||||||
|
// } else {
|
||||||
|
// echo "No se encontraron eventos para el cliente especificado dentro del periodo dado.\n";
|
||||||
|
// logMessage("No se encontraron eventos para el cliente especificado dentro del periodo dado.", 'error');
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return $saldoFinal;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
function createPaymentIntent($stripe, $amount, $customer_id_stripe, $clientId_CRM, $signedAdminId)
|
||||||
|
{
|
||||||
|
$amount = intval($amount * 100); //Conversión de la cantidad a centavos
|
||||||
|
try {
|
||||||
|
|
||||||
|
$paymentIntent = $stripe->paymentIntents->create([
|
||||||
|
'amount' => $amount, //Cantidad a cobrar
|
||||||
|
'currency' => 'mxn',
|
||||||
|
'customer' => $customer_id_stripe, //ID del cliente en Stripe
|
||||||
|
'payment_method_types' => ['customer_balance'],
|
||||||
|
'payment_method_data' => ['type' => 'customer_balance'],
|
||||||
|
'confirm' => true,
|
||||||
|
'payment_method_options' => [
|
||||||
|
'customer_balance' => [
|
||||||
|
'funding_type' => 'bank_transfer',
|
||||||
|
'bank_transfer' => ['type' => 'mx_bank_transfer']
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'metadata' => [
|
||||||
|
'clientId' => $clientId_CRM, // ID del cliente en UISP CRM
|
||||||
|
'createdBy' => 'UCRM',
|
||||||
|
'paymentType' => 'card.one_time',
|
||||||
|
'signedInAdminId' => $signedAdminId, // ID del administrador que realiza la operación
|
||||||
|
'tipoPago' => 'Transferencia Bancaria'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
print_r("PaymentIntent creado: " . $paymentIntent->id . PHP_EOL); //Imprime el ID del PaymentIntent creado
|
||||||
|
logMessage("PaymentIntent creado: " . $paymentIntent->id); //Imprime el ID del PaymentIntent creado
|
||||||
|
print_r("Status: " . $paymentIntent->status . PHP_EOL); //Imprime el estatus del PaymentIntent creado
|
||||||
|
logMessage("Status: " . $paymentIntent->status); //Imprime el estatus del PaymentIntent creado
|
||||||
|
print_r("Amount: " . $paymentIntent->amount . PHP_EOL); //Imprime el monto del PaymentIntent creado
|
||||||
|
logMessage("Amount: " . $paymentIntent->amount); //Imprime el monto del PaymentIntent creado
|
||||||
|
print_r("Currency: " . $paymentIntent->currency . PHP_EOL); //Imprime la moneda del PaymentIntent creado
|
||||||
|
logMessage("Currency: " . $paymentIntent->currency); //Imprime la moneda del PaymentIntent creado
|
||||||
|
print_r("Customer: " . $paymentIntent->customer . PHP_EOL); //Imprime el ID del cliente del PaymentIntent creado
|
||||||
|
logMessage("Customer: " . $paymentIntent->customer); //Imprime el ID del cliente del PaymentIntent creado
|
||||||
|
print_r("Payment Method: " . $paymentIntent->payment_method . PHP_EOL); //Imprime el ID del método de pago del PaymentIntent creado
|
||||||
|
logMessage("Payment Method: " . $paymentIntent->payment_method); //Imprime el ID del método de pago del PaymentIntent creado
|
||||||
|
print_r("Payment Method Type: " . $paymentIntent->payment_method_types[0] . PHP_EOL); //Imprime el tipo de método de pago del PaymentIntent creado
|
||||||
|
logMessage("Payment Method Type: " . $paymentIntent->payment_method_types[0]); //Imprime el tipo de método de pago del PaymentIntent creado
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} catch (\Stripe\Exception\ApiErrorException $e) {
|
||||||
|
print_r("Error creando PaymentIntent: " . $e->getMessage() . PHP_EOL);
|
||||||
|
logMessage("Error creando PaymentIntent: " . $e->getMessage() . PHP_EOL, 'error');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// function createOxxoPaymentIntent($event_json, $amount = null): array
|
||||||
|
// {
|
||||||
|
// //declarar un array asociativo de strings pero no asignarle nada aun
|
||||||
|
// $arrayOxxoPayment = array();
|
||||||
|
// $integerAmount = $amount;
|
||||||
|
|
||||||
|
// print_r("Creando referencia del cliente para OXXO: " . PHP_EOL);
|
||||||
|
// $configManager = PluginConfigManager::create();
|
||||||
|
// $config = $configManager->loadConfig();
|
||||||
|
// $StripeToken = $config['tokenstripe'];
|
||||||
|
// $IPServer = $config['ipserver'];
|
||||||
|
// $tokenCRM = $config['apitoken'];
|
||||||
|
|
||||||
|
// $baseUri = 'https://' . $IPServer . '/crm/api/v1.0/';
|
||||||
|
// $ucrmApi = UcrmApi::create();
|
||||||
|
// $currentUserAdmin = $ucrmApi->get('users/admins', []);
|
||||||
|
// $clientID = $event_json['client_id'];
|
||||||
|
|
||||||
|
// $stripeCustomerId = null;
|
||||||
|
// $clientEmail = '';
|
||||||
|
// $clientFullName = '';
|
||||||
|
|
||||||
|
// $clientGuzzleHttp = new Client([
|
||||||
|
// 'base_uri' => $baseUri,
|
||||||
|
// 'headers' => [
|
||||||
|
// 'X-Auth-App-Key' => $tokenCRM,
|
||||||
|
// 'Accept' => 'application/json',
|
||||||
|
// ],
|
||||||
|
// 'verify' => false,
|
||||||
|
// 'timeout' => 5, // Timeout de 5 segundos
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// $response = $clientGuzzleHttp->request('GET', "clients/" . $clientID);
|
||||||
|
// $arrayClientCRM = json_decode($response->getBody()->getContents(), true);
|
||||||
|
// //$this->logger->info("Valor de arrayClientCRM: " . print_r($arrayClientCRM, true) . PHP_EOL);
|
||||||
|
// $clientFullName = $arrayClientCRM['firstName'] . ' ' . $arrayClientCRM['lastName'];
|
||||||
|
// } catch (RequestException $e) {
|
||||||
|
// if ($e->getCode() === 404) {
|
||||||
|
// print_r("Cliente no encontrado en CRM: " . $clientID . PHP_EOL);
|
||||||
|
// //devolver un array con los campos del codigo error, descripción de la falla, clientID, clientFullName y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
// $arrayOxxoPayment['url'] = '';
|
||||||
|
// $arrayOxxoPayment['error'] = 'errorGetClientNotFound';
|
||||||
|
// $arrayOxxoPayment['failDescription'] = 'Cliente no encontrado en CRM: ' . $clientID;
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $integerAmount;
|
||||||
|
// $arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
|
||||||
|
// }
|
||||||
|
// //timeout
|
||||||
|
// if ($e->getCode() === 408) {
|
||||||
|
// print_r("Timeout al obtener el cliente en CRM: " . $clientID . PHP_EOL);
|
||||||
|
// //devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
// $arrayOxxoPayment['url'] = '';
|
||||||
|
// $arrayOxxoPayment['error'] = 'errorTimeoutGetClient';
|
||||||
|
// $arrayOxxoPayment['failDescription'] = 'Timeout al obtener el cliente en CRM: ' . $clientID;
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $integerAmount;
|
||||||
|
// $arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
// }
|
||||||
|
// print_r("Error al obtener el cliente en CRM (Error {$e->getCode()}): " . $e->getMessage() . PHP_EOL);
|
||||||
|
// //devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
// $arrayOxxoPayment['url'] = '';
|
||||||
|
// $arrayOxxoPayment['error'] = 'errorGetClient';
|
||||||
|
// $arrayOxxoPayment['failDescription'] = 'Error al obtener el cliente en CRM: ' . $clientID;
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $integerAmount;
|
||||||
|
// $arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Obtener email del cliente
|
||||||
|
// foreach ($arrayClientCRM['contacts'] as $contact) {
|
||||||
|
// if (!empty($contact['email'])) {
|
||||||
|
// $clientEmail = $contact['email'];
|
||||||
|
// break;
|
||||||
|
// } else {
|
||||||
|
// $clientEmail = 'siip8873@gmail.com'; // Default
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// // Obtener stripeCustomerId
|
||||||
|
// foreach ($arrayClientCRM['attributes'] as $attribute) {
|
||||||
|
// if ($attribute['key'] === 'stripeCustomerId') {
|
||||||
|
// $stripeCustomerId = $attribute['value'];
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// print_r("Stripe Customer ID obtenido: " . $stripeCustomerId . PHP_EOL);
|
||||||
|
// } catch (Exception $e) {
|
||||||
|
// print_r("Error al obtener el Customer ID de Stripe (Error {$e->getCode()}): " . $e->getMessage() . PHP_EOL);
|
||||||
|
// //devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
// $arrayOxxoPayment['error'] = 'errorGetCustomerStripe';
|
||||||
|
// $arrayOxxoPayment['failDescription'] = 'Error al obtener el Customer ID de Stripe: ' . $clientID;
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $integerAmount;
|
||||||
|
// $arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if ($amount === null) {
|
||||||
|
// $amount = abs($arrayClientCRM['accountOutstanding']); //Monto adeudado del cliente
|
||||||
|
// } else {
|
||||||
|
// print_r("Monto proporcionado directamente: $amount " . PHP_EOL);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if ($amount > 10) {
|
||||||
|
// $amountInCents = intval($amount * 100); // Convertir a centavos
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// print_r("Creando referencia en Stripe por $amount para el cliente $stripeCustomerId" . PHP_EOL);
|
||||||
|
// $guzzleClient = new Client([
|
||||||
|
// 'timeout' => 5, // Timeout de 5 segundos
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
// $response = $guzzleClient->post('https://api.stripe.com/v1/payment_intents', [
|
||||||
|
// 'auth' => [$StripeToken, ''],
|
||||||
|
// 'form_params' => [
|
||||||
|
// 'amount' => $amountInCents,
|
||||||
|
// 'currency' => 'mxn',
|
||||||
|
// 'payment_method_types' => ['customer_balance', 'card', 'oxxo'],
|
||||||
|
// 'description' => 'Pago de servicio de SIIP Internet',
|
||||||
|
// 'customer' => $stripeCustomerId,
|
||||||
|
// 'metadata' => [
|
||||||
|
// 'clientId' => $clientID,
|
||||||
|
// 'createdBy' => 'UCRM',
|
||||||
|
// 'paymentType' => 'card.one_time',
|
||||||
|
// 'signedInAdminId' => $currentUserAdmin[1]['id'],
|
||||||
|
// 'tipoPago' => 'OXXO',
|
||||||
|
// ],
|
||||||
|
// 'payment_method_options' => [
|
||||||
|
// 'oxxo' => [
|
||||||
|
// 'expires_after_days' => 3,
|
||||||
|
// ],
|
||||||
|
// ],
|
||||||
|
// ]
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
// $paymentIntent = json_decode($response->getBody()->getContents(), true);
|
||||||
|
|
||||||
|
// } catch (\Stripe\Exception\ApiConnectionException $e) {
|
||||||
|
// print_r("Error de conexión con Stripe (Error {$e->getCode()}): " . $e->getMessage() . PHP_EOL);
|
||||||
|
// //devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
// $arrayOxxoPayment['url'] = '';
|
||||||
|
// $arrayOxxoPayment['error'] = 'errorConnectionStripe';
|
||||||
|
// $arrayOxxoPayment['failDescription'] = 'Error de conexión con Stripe: ' . $clientID;
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $amount;
|
||||||
|
// $arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
// } catch (\Stripe\Exception\ApiErrorException $e) {
|
||||||
|
// print_r("Error de la API de Stripe: " . $e->getMessage() . PHP_EOL);
|
||||||
|
// //devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
// $arrayOxxoPayment['url'] = '';
|
||||||
|
// $arrayOxxoPayment['error'] = 'errorApiStripe';
|
||||||
|
// $arrayOxxoPayment['failDescription'] = 'Error de la API de Stripe: ' . $clientID;
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $amount;
|
||||||
|
// $arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
// } catch (Exception $e) {
|
||||||
|
// print_r("Error inesperado al crear PaymentIntent (Error {$e->getCode()}): " . $e->getMessage() . PHP_EOL);
|
||||||
|
// //si e->getMessage incluye el mensaje: You must provide a customer when creating or updating a PaymentIntent with a `customer_ba (truncated...) declarar una variable y ahi poner "Este cliente no tiene cuenta de Stripe"
|
||||||
|
// if ($e->getMessage() == 'You must provide a customer when creating or updating a PaymentIntent with a `customer_ba (truncated...)') {
|
||||||
|
// print_r("Este cliente no tiene cuenta de Stripe" . PHP_EOL);
|
||||||
|
// $arrayOxxoPayment['failDescription'] = 'Este cliente no tiene cuenta de Stripe: ' . $clientID;
|
||||||
|
// } else {
|
||||||
|
// print_r("Este cliente no tiene cuenta de Stripe" . PHP_EOL);
|
||||||
|
// print_r("Error inesperado al crear PaymentIntent: " . $e->getMessage() . PHP_EOL);
|
||||||
|
// $arrayOxxoPayment['failDescription'] = 'Error inesperado al crear PaymentIntent: ' . $clientID;
|
||||||
|
// }
|
||||||
|
// //devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
// $arrayOxxoPayment['url'] = '';
|
||||||
|
// $arrayOxxoPayment['error'] = 'errorCreatePaymentIntent';
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $amount;
|
||||||
|
// $arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// $firstName = isset($arrayClientCRM['firstName']) ? trim($arrayClientCRM['firstName']) : '';
|
||||||
|
// $lastName = isset($arrayClientCRM['lastName']) ? trim($arrayClientCRM['lastName']) : '';
|
||||||
|
|
||||||
|
// if (strlen($firstName) < 2 || strlen($lastName) < 2) {
|
||||||
|
// print_r("Este cliente no tiene cuenta de Stripe" . PHP_EOL);
|
||||||
|
// ("Nombre/apellido inválido: ' . $firstName . ' ' . $lastName" . PHP_EOL);
|
||||||
|
// //devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
// $arrayOxxoPayment['url'] = '';
|
||||||
|
// $arrayOxxoPayment['error'] = 'errorNombreApellidoInvalido';
|
||||||
|
// $arrayOxxoPayment['failDescription'] = "Nombre/apellido inválido: ' . $firstName . ' ' . $lastName";
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $amount;
|
||||||
|
// $arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// $responsePaymentMethod = $guzzleClient->post('https://api.stripe.com/v1/payment_methods', [
|
||||||
|
// 'auth' => [$StripeToken, ''],
|
||||||
|
// 'form_params' => [
|
||||||
|
// 'type' => 'oxxo',
|
||||||
|
// 'billing_details' => [
|
||||||
|
// 'name' => "$firstName $lastName",
|
||||||
|
// 'email' => $clientEmail,
|
||||||
|
// ],
|
||||||
|
// ]
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
// $paymentMethod = json_decode($responsePaymentMethod->getBody()->getContents(), true);
|
||||||
|
|
||||||
|
// $responseConfirmPaymentIntent = $guzzleClient->post('https://api.stripe.com/v1/payment_intents/' . $paymentIntent['id'] . '/confirm', [
|
||||||
|
// 'auth' => [$StripeToken, ''],
|
||||||
|
// 'form_params' => [
|
||||||
|
// 'payment_method' => $paymentMethod['id'],
|
||||||
|
// ]
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
// $paymentIntentConfirm = json_decode($responseConfirmPaymentIntent->getBody()->getContents(), true);
|
||||||
|
|
||||||
|
// } catch (Exception $e) {
|
||||||
|
// print_r("Error al confirmar PaymentIntent: " . $e->getMessage() . PHP_EOL);
|
||||||
|
// //devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
// $arrayOxxoPayment['url'] = '';
|
||||||
|
// $arrayOxxoPayment['error'] = 'errorConfirmPaymentIntent';
|
||||||
|
// $arrayOxxoPayment['failDescription'] = 'Error al confirmar PaymentIntent: ' . $e->getMessage();
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $amount;
|
||||||
|
// $arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (!empty($paymentIntentConfirm['next_action']) && isset($paymentIntentConfirm['next_action']['oxxo_display_details'])) {
|
||||||
|
// $oxxoPayment = $paymentIntentConfirm['next_action']['oxxo_display_details'];
|
||||||
|
// $oxxo_reference = $oxxoPayment['number'];
|
||||||
|
// $oxxo_receipt_url = $oxxoPayment['hosted_voucher_url'];
|
||||||
|
|
||||||
|
// print_r("Referencia OXXO: " . $oxxo_reference . PHP_EOL);
|
||||||
|
// print_r("URL del recibo: " . $oxxo_receipt_url . PHP_EOL);
|
||||||
|
// //$this->captureScreenshot($oxxo_receipt_url);
|
||||||
|
// //devolver un array con los campos de url de oxxo, descripción de la falla, clientID y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = $oxxo_reference;
|
||||||
|
// $arrayOxxoPayment['url'] = $oxxo_receipt_url;
|
||||||
|
// $arrayOxxoPayment['error'] = '';
|
||||||
|
// $arrayOxxoPayment['failDescription'] = '';
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $amount;
|
||||||
|
// print_r("Referencia OXXO creada correctamente." . PHP_EOL);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
// } else {
|
||||||
|
// print_r("El PaymentIntent no tiene detalles de OXXO disponibles. Estado: " . $paymentIntentConfirm['status'] . PHP_EOL);
|
||||||
|
// //devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
// $arrayOxxoPayment['url'] = '';
|
||||||
|
// $arrayOxxoPayment['error'] = 'errorPaymentIntentWithoutOxxoDetails';
|
||||||
|
// $arrayOxxoPayment['failDescription'] = 'El PaymentIntent no tiene detalles de OXXO disponibles. Estado: ' . $paymentIntentConfirm['status'];
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $amount;
|
||||||
|
// $arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// } else {
|
||||||
|
// print_r("Este cliente no tiene adeudos." . PHP_EOL);
|
||||||
|
// //devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
// $arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
// $arrayOxxoPayment['url'] = '';
|
||||||
|
// $arrayOxxoPayment['error'] = 'errorsinadeudo';
|
||||||
|
// $arrayOxxoPayment['failDescription'] = 'Este cliente no tiene adeudos.';
|
||||||
|
// $arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
// $arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
// $arrayOxxoPayment['amount'] = $amount;
|
||||||
|
// $arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
// return $arrayOxxoPayment;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Cancela todos los PaymentIntents en estado 'requires_action' para un cliente específico.
|
||||||
|
// *
|
||||||
|
// * @param \Stripe\StripeClient $stripe Instancia de StripeClient
|
||||||
|
// * @param string $customerId ID del cliente en Stripe
|
||||||
|
// * @return bool True si se encontraron y cancelaron PaymentIntents, False si no hay ninguno en estado 'requires_action'
|
||||||
|
// */
|
||||||
|
// function cancelRequiresActionPaymentIntents($stripe, $customerId)
|
||||||
|
// {
|
||||||
|
// try {
|
||||||
|
// // Listar todos los PaymentIntents del cliente
|
||||||
|
// $paymentIntents = $stripe->paymentIntents->all([
|
||||||
|
// 'customer' => $customerId,
|
||||||
|
// 'limit' => 100, // Número máximo de resultados por página
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
// $foundAndCanceled = false;
|
||||||
|
|
||||||
|
// foreach ($paymentIntents->data as $intent) {
|
||||||
|
// // Verificar si el estado es 'requires_action'
|
||||||
|
// if ($intent->status === 'requires_action') {
|
||||||
|
// // Cancelar el PaymentIntent
|
||||||
|
// $stripe->paymentIntents->cancel($intent->id);
|
||||||
|
// $foundAndCanceled = true;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Manejar paginación si hay más de 100 PaymentIntents
|
||||||
|
// while ($paymentIntents->has_more) {
|
||||||
|
// $lastIntentId = end($paymentIntents->data)->id;
|
||||||
|
// $paymentIntents = $stripe->paymentIntents->all([
|
||||||
|
// 'customer' => $customerId,
|
||||||
|
// 'limit' => 100,
|
||||||
|
// 'starting_after' => $lastIntentId,
|
||||||
|
// ]);
|
||||||
|
|
||||||
|
// foreach ($paymentIntents->data as $intent) {
|
||||||
|
// if ($intent->status === 'requires_action') {
|
||||||
|
// $stripe->paymentIntents->cancel($intent->id);
|
||||||
|
// $foundAndCanceled = true;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return $foundAndCanceled;
|
||||||
|
|
||||||
|
// } catch (\Stripe\Exception\ApiErrorException $e) {
|
||||||
|
// // Manejo de errores
|
||||||
|
// error_log('Error al procesar PaymentIntents: ' . $e->getMessage());
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
function logMessage($message, $type = 'info')
|
||||||
|
{
|
||||||
|
$logFile = __DIR__ . '/payment_intents.log';
|
||||||
|
$dateTime = new DateTime('now', new DateTimeZone('America/Mexico_City'));
|
||||||
|
$formattedDateTime = $dateTime->format('Y-m-d H:i:s');
|
||||||
|
file_put_contents($logFile, "[$formattedDateTime] [$type] $message" . PHP_EOL, FILE_APPEND);
|
||||||
|
}
|
||||||
2
README.md
Normal file → Executable file
2
README.md
Normal file → Executable file
@ -38,5 +38,5 @@ Este plugin permite buscar clientes en la base de datos de UISP CRM y generar in
|
|||||||
- Si el cliente no tiene un "Stripe Customer ID", no se permitirá generar el pago.
|
- Si el cliente no tiene un "Stripe Customer ID", no se permitirá generar el pago.
|
||||||
|
|
||||||
---
|
---
|
||||||
**Versión**: 1.1.0
|
**Versión**: 1.2.0
|
||||||
**Copyright**: © 2024 SIIP Internet. Todos los derechos reservados.
|
**Copyright**: © 2024 SIIP Internet. Todos los derechos reservados.
|
||||||
|
|||||||
23
archivos_webhook_destino/main.php
Executable file
23
archivos_webhook_destino/main.php
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
chdir(__DIR__);
|
||||||
|
|
||||||
|
require 'vendor/autoload.php';
|
||||||
|
|
||||||
|
(static function () {
|
||||||
|
$builder = new \DI\ContainerBuilder();
|
||||||
|
$container = $builder->build();
|
||||||
|
$plugin = $container->get(\SmsNotifier\Plugin::class);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$plugin->run();
|
||||||
|
|
||||||
|
// cleanup plugin log
|
||||||
|
//$container->get(\SmsNotifier\Service\LogCleaner::class)->clean();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$logger = new \SmsNotifier\Service\Logger();
|
||||||
|
$logger->error($e->getMessage());
|
||||||
|
$logger->debug($e->getTraceAsString());
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
http_response_code(200); //Response OK when it's called by a webhook.
|
||||||
147
archivos_webhook_destino/public.php
Executable file
147
archivos_webhook_destino/public.php
Executable file
@ -0,0 +1,147 @@
|
|||||||
|
<?php
|
||||||
|
use Ubnt\UcrmPluginSdk\Service\PluginLogManager;
|
||||||
|
use Ubnt\UcrmPluginSdk\Service\PluginConfigManager;
|
||||||
|
|
||||||
|
require_once 'main.php';
|
||||||
|
|
||||||
|
// Función para imprimir una tabla
|
||||||
|
// function imprimirTabla()
|
||||||
|
// {
|
||||||
|
// echo '
|
||||||
|
// <table border="1">
|
||||||
|
// <tr>
|
||||||
|
// <th>Archivos PDF</th>
|
||||||
|
// <th>Resultado</th>
|
||||||
|
// </tr>
|
||||||
|
// ';
|
||||||
|
|
||||||
|
// borrarArchivosPDFWordpress();
|
||||||
|
// echo '</table>
|
||||||
|
// ';
|
||||||
|
// }
|
||||||
|
|
||||||
|
// function borrarArchivosPDFWordpress()
|
||||||
|
// {
|
||||||
|
// $log = PluginLogManager::create(); //Initialize Logger
|
||||||
|
// $configManager = PluginConfigManager::create();
|
||||||
|
// $config = $configManager->loadConfig();
|
||||||
|
|
||||||
|
// // Configuración de conexión FTP
|
||||||
|
// $ftp_server = $config['hostServerFTP'];
|
||||||
|
// $ftp_username = $config['usernameServerFTP'];
|
||||||
|
// $ftp_password = $config['passServerFTP'];
|
||||||
|
// $remote_folder = "/public_html/wp/wp-content/uploads/img/";
|
||||||
|
|
||||||
|
// // Conexión FTP
|
||||||
|
// $ftp_conn = ftp_connect($ftp_server) or die("No se pudo conectar al servidor FTP");
|
||||||
|
// $login = ftp_login($ftp_conn, $ftp_username, $ftp_password);
|
||||||
|
// ftp_pasv($ftp_conn, true);
|
||||||
|
|
||||||
|
// // Verificar conexión y login
|
||||||
|
// if ($ftp_conn && $login) {
|
||||||
|
// $log->appendLog("Conexión FTP exitosa" . PHP_EOL);
|
||||||
|
|
||||||
|
// // Obtener lista de archivos en la carpeta
|
||||||
|
// $files = ftp_nlist($ftp_conn, $remote_folder);
|
||||||
|
// if (is_array($files)) {
|
||||||
|
// // Eliminar la ruta del directorio de los archivos
|
||||||
|
// $files = array_map(function($file) use ($remote_folder) {
|
||||||
|
// return str_replace($remote_folder, '', $file);
|
||||||
|
// }, $files);
|
||||||
|
|
||||||
|
// // Obtener fechas de modificación
|
||||||
|
// $filesWithTime = [];
|
||||||
|
// foreach ($files as $file) {
|
||||||
|
// $modifiedTime = ftp_mdtm($ftp_conn, $remote_folder . $file);
|
||||||
|
// if ($modifiedTime != -1) {
|
||||||
|
// $filesWithTime[$file] = $modifiedTime;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Ordenar archivos por fecha de modificación, más recientes primero
|
||||||
|
// arsort($filesWithTime);
|
||||||
|
|
||||||
|
// // Obtener los archivos a eliminar (todos menos los 5 más recientes)
|
||||||
|
// $filesToDelete = array_slice(array_keys($filesWithTime), 5);
|
||||||
|
|
||||||
|
// // Eliminar archivos antiguos
|
||||||
|
// foreach ($filesToDelete as $file) {
|
||||||
|
// if (ftp_delete($ftp_conn, $remote_folder . $file)) {
|
||||||
|
// echo '<tr><td>' . $file . '</td><td>Archivo borrado</td></tr>';
|
||||||
|
// } else {
|
||||||
|
// echo '<tr><td>' . $file . '</td><td>Error al borrar archivo</td></tr>';
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// $log->appendLog("Archivos eliminados" . PHP_EOL);
|
||||||
|
// } else {
|
||||||
|
// $log->appendLog("No se pudo obtener la lista de archivos de la carpeta FTP" . PHP_EOL);
|
||||||
|
// }
|
||||||
|
// // Cerrar conexión FTP
|
||||||
|
// ftp_close($ftp_conn);
|
||||||
|
// } else {
|
||||||
|
// $log->appendLog("No se pudo conectar o iniciar sesión en el servidor FTP." . PHP_EOL);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Verificar si se ha enviado una solicitud POST
|
||||||
|
// if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["pintar"])) {
|
||||||
|
// // Llamar a la función para imprimir la tabla
|
||||||
|
// imprimirTabla();
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Contenido HTML para el formulario con el botón
|
||||||
|
// $html = '
|
||||||
|
// <!DOCTYPE html>
|
||||||
|
// <html lang="es">
|
||||||
|
// <head>
|
||||||
|
// <meta charset="UTF-8">
|
||||||
|
// <meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
// <style>
|
||||||
|
// body {
|
||||||
|
// font-family: Arial, sans-serif;
|
||||||
|
// background-color: #f0f0f0;
|
||||||
|
// margin: 0;
|
||||||
|
// padding: 20px;
|
||||||
|
// }
|
||||||
|
// h1 {
|
||||||
|
// text-align: center;
|
||||||
|
// color: #333;
|
||||||
|
// }
|
||||||
|
// table {
|
||||||
|
// width: 100%;
|
||||||
|
// border-collapse: collapse;
|
||||||
|
// border: 2px solid #333;
|
||||||
|
// margin-bottom: 20px;
|
||||||
|
// }
|
||||||
|
// th, td {
|
||||||
|
// padding: 10px;
|
||||||
|
// border: 1px solid #999;
|
||||||
|
// }
|
||||||
|
// th {
|
||||||
|
// background-color: #f2f2f2;
|
||||||
|
// }
|
||||||
|
// tr:nth-child(even) {
|
||||||
|
// background-color: #f9f9f9;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// .container {
|
||||||
|
// display: flex;
|
||||||
|
// justify-content: center;
|
||||||
|
// align-items: center;
|
||||||
|
|
||||||
|
// }
|
||||||
|
// </style>
|
||||||
|
// </head>
|
||||||
|
// <body>
|
||||||
|
// <h1>Limpieza de archivos PDF de comprobantes de pago subidos a Wordpress para su envío</h1>
|
||||||
|
// <div class="container">
|
||||||
|
// <form method="post">
|
||||||
|
// <button type="submit" name="pintar">Ejecutar borrado de archivos</button>
|
||||||
|
// </form>
|
||||||
|
// </div>
|
||||||
|
|
||||||
|
// </body>
|
||||||
|
// </html>
|
||||||
|
// ';
|
||||||
|
// echo $html;
|
||||||
1873
archivos_webhook_destino/src/Facade/AbstractMessageNotifierFacade.php
Executable file
1873
archivos_webhook_destino/src/Facade/AbstractMessageNotifierFacade.php
Executable file
File diff suppressed because it is too large
Load Diff
738
archivos_webhook_destino/src/Facade/AbstractOxxoOperationsFacade.php
Executable file
738
archivos_webhook_destino/src/Facade/AbstractOxxoOperationsFacade.php
Executable file
@ -0,0 +1,738 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace SmsNotifier\Facade;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
use SmsNotifier\Factory\MessageTextFactory;
|
||||||
|
use SmsNotifier\Service\Logger;
|
||||||
|
use SmsNotifier\Service\SmsNumberProvider;
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use GuzzleHttp\Exception\RequestException;
|
||||||
|
use Ubnt\UcrmPluginSdk\Service\UcrmApi;
|
||||||
|
use Ubnt\UcrmPluginSdk\Service\PluginConfigManager;
|
||||||
|
use Ubnt\UcrmPluginSdk\Service\PluginLogManager;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* send message to client's number
|
||||||
|
*/
|
||||||
|
|
||||||
|
abstract class AbstractOxxoOperationsFacade
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Logger
|
||||||
|
*/
|
||||||
|
protected $logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var MessageTextFactory
|
||||||
|
*/
|
||||||
|
protected $messageTextFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var SmsNumberProvider
|
||||||
|
*/
|
||||||
|
protected $clientPhoneNumber;
|
||||||
|
/**
|
||||||
|
* @var UcrmApi
|
||||||
|
*/
|
||||||
|
protected $ucrmApi;
|
||||||
|
|
||||||
|
protected $stripeCustomAttributeID;
|
||||||
|
protected $clabeInterbancariaBanamexID;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
Logger $logger,
|
||||||
|
MessageTextFactory $messageTextFactory,
|
||||||
|
SmsNumberProvider $clientPhoneNumber
|
||||||
|
) {
|
||||||
|
$this->logger = $logger;
|
||||||
|
$this->messageTextFactory = $messageTextFactory;
|
||||||
|
$this->clientPhoneNumber = $clientPhoneNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates a PaymentIntent for OXXO in Stripe for a Customer
|
||||||
|
* @param array $event_json
|
||||||
|
* @param int|null $amount
|
||||||
|
* @return array
|
||||||
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||||
|
* @throws \Stripe\Exception\ApiErrorException
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function createOxxoPaymentIntent($event_json, $amount = null): array
|
||||||
|
{
|
||||||
|
//declarar un array asociativo de strings pero no asignarle nada aun
|
||||||
|
$arrayOxxoPayment = array();
|
||||||
|
$integerAmount = $amount;
|
||||||
|
|
||||||
|
$this->logger->info("Creando referencia del cliente para OXXO: " . PHP_EOL);
|
||||||
|
$configManager = PluginConfigManager::create();
|
||||||
|
$config = $configManager->loadConfig();
|
||||||
|
$StripeToken = $config['tokenstripe'];
|
||||||
|
$IPServer = $config['ipserver'];
|
||||||
|
$tokenCRM = $config['apitoken'];
|
||||||
|
$ipPuppeteer = $config['ipPuppeteer'];
|
||||||
|
$portPuppeteer = $config['portPuppeteer'];
|
||||||
|
|
||||||
|
$baseUri = 'https://' . $IPServer . '/crm/api/v1.0/';
|
||||||
|
$this->ucrmApi = UcrmApi::create();
|
||||||
|
$currentUserAdmin = $this->ucrmApi->get('users/admins', []);
|
||||||
|
$clientID = $event_json['client_id'];
|
||||||
|
|
||||||
|
$stripeCustomerId = null;
|
||||||
|
$clientEmail = '';
|
||||||
|
$clientFullName = '';
|
||||||
|
|
||||||
|
$clientGuzzleHttp = new Client([
|
||||||
|
'base_uri' => $baseUri,
|
||||||
|
'headers' => [
|
||||||
|
'X-Auth-App-Key' => $tokenCRM,
|
||||||
|
'Accept' => 'application/json',
|
||||||
|
],
|
||||||
|
'verify' => false,
|
||||||
|
'timeout' => 5, // Timeout de 5 segundos
|
||||||
|
]);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$response = $clientGuzzleHttp->request('GET', "clients/" . $clientID);
|
||||||
|
$arrayClientCRM = json_decode($response->getBody()->getContents(), true);
|
||||||
|
//$this->logger->info("Valor de arrayClientCRM: " . print_r($arrayClientCRM, true) . PHP_EOL);
|
||||||
|
$clientFullName = $arrayClientCRM['firstName'] . ' ' . $arrayClientCRM['lastName'];
|
||||||
|
} catch (RequestException $e) {
|
||||||
|
if ($e->getCode() === 404) {
|
||||||
|
$this->logger->error("Cliente no encontrado en CRM: " . $clientID . PHP_EOL);
|
||||||
|
//devolver un array con los campos del codigo error, descripción de la falla, clientID, clientFullName y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
$arrayOxxoPayment['url'] = '';
|
||||||
|
$arrayOxxoPayment['error'] = 'errorGetClientNotFound';
|
||||||
|
$arrayOxxoPayment['failDescription'] = 'Cliente no encontrado en CRM: ' . $clientID;
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $integerAmount;
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
//timeout
|
||||||
|
if ($e->getCode() === 408) {
|
||||||
|
$this->logger->error("Timeout al obtener el cliente en CRM: " . $clientID . PHP_EOL);
|
||||||
|
//devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
$arrayOxxoPayment['url'] = '';
|
||||||
|
$arrayOxxoPayment['error'] = 'errorTimeoutGetClient';
|
||||||
|
$arrayOxxoPayment['failDescription'] = 'Timeout al obtener el cliente en CRM: ' . $clientID;
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $integerAmount;
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
}
|
||||||
|
$this->logger->error("Error al obtener el cliente en CRM (Error {$e->getCode()}): " . $e->getMessage() . PHP_EOL);
|
||||||
|
//devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
$arrayOxxoPayment['url'] = '';
|
||||||
|
$arrayOxxoPayment['error'] = 'errorGetClient';
|
||||||
|
$arrayOxxoPayment['failDescription'] = 'Error al obtener el cliente en CRM: ' . $clientID;
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $integerAmount;
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Obtener email del cliente
|
||||||
|
foreach ($arrayClientCRM['contacts'] as $contact) {
|
||||||
|
if (!empty($contact['email'])) {
|
||||||
|
$clientEmail = $contact['email'];
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
$clientEmail = 'siip8873@gmail.com'; // Default
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Obtener stripeCustomerId
|
||||||
|
foreach ($arrayClientCRM['attributes'] as $attribute) {
|
||||||
|
if ($attribute['key'] === 'stripeCustomerId') {
|
||||||
|
$stripeCustomerId = $attribute['value'];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->logger->info("Stripe Customer ID obtenido: " . $stripeCustomerId . PHP_EOL);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$this->logger->error("Error al obtener el Customer ID de Stripe (Error {$e->getCode()}): " . $e->getMessage() . PHP_EOL);
|
||||||
|
//devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
$arrayOxxoPayment['error'] = 'errorGetCustomerStripe';
|
||||||
|
$arrayOxxoPayment['failDescription'] = 'Error al obtener el Customer ID de Stripe: ' . $clientID;
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $integerAmount;
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($amount === null) {
|
||||||
|
$amount = abs($arrayClientCRM['accountOutstanding']); //Monto adeudado del cliente
|
||||||
|
} else {
|
||||||
|
//la variable $amount debe ser numérica pero en ocasiones la solicitud puede traer signos o alguna letra ingresada mal por el cliente, se debe analizar para limpiar cualquier caracter que no sea numérico
|
||||||
|
if(!is_numeric($amount)) {
|
||||||
|
$amount = preg_replace('/[^\d.]/', '', $amount); // Eliminar todo lo que no sea dígito o punto decimal
|
||||||
|
}
|
||||||
|
$this->logger->debug("Monto proporcionado directamente: $amount " . PHP_EOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($amount > 10) {
|
||||||
|
$amountInCents = intval($amount * 100); // Convertir a centavos
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->logger->debug("Creando referencia en Stripe por $amount para el cliente $stripeCustomerId" . PHP_EOL);
|
||||||
|
$guzzleClient = new Client([
|
||||||
|
'timeout' => 5, // Timeout de 5 segundos
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = $guzzleClient->post('https://api.stripe.com/v1/payment_intents', [
|
||||||
|
'auth' => [$StripeToken, ''],
|
||||||
|
'form_params' => [
|
||||||
|
'amount' => $amountInCents,
|
||||||
|
'currency' => 'mxn',
|
||||||
|
'payment_method_types' => ['customer_balance', 'card', 'oxxo'],
|
||||||
|
'description' => 'Pago de servicio de SIIP Internet',
|
||||||
|
'customer' => $stripeCustomerId,
|
||||||
|
'metadata' => [
|
||||||
|
'clientId' => $clientID,
|
||||||
|
'createdBy' => 'UCRM',
|
||||||
|
'paymentType' => 'card.one_time',
|
||||||
|
'signedInAdminId' => $currentUserAdmin[1]['id'],
|
||||||
|
'tipoPago' => 'OXXO',
|
||||||
|
],
|
||||||
|
'payment_method_options' => [
|
||||||
|
'oxxo' => [
|
||||||
|
'expires_after_days' => 3,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$paymentIntent = json_decode($response->getBody()->getContents(), true);
|
||||||
|
|
||||||
|
} catch (\Stripe\Exception\ApiConnectionException $e) {
|
||||||
|
$this->logger->error("Error de conexión con Stripe (Error {$e->getCode()}): " . $e->getMessage() . PHP_EOL);
|
||||||
|
//devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
$arrayOxxoPayment['url'] = '';
|
||||||
|
$arrayOxxoPayment['error'] = 'errorConnectionStripe';
|
||||||
|
$arrayOxxoPayment['failDescription'] = 'Error de conexión con Stripe: ' . $clientID;
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $amount;
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
} catch (\Stripe\Exception\ApiErrorException $e) {
|
||||||
|
$this->logger->error("Error de la API de Stripe: " . $e->getMessage() . PHP_EOL);
|
||||||
|
//devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
$arrayOxxoPayment['url'] = '';
|
||||||
|
$arrayOxxoPayment['error'] = 'errorApiStripe';
|
||||||
|
$arrayOxxoPayment['failDescription'] = 'Error de la API de Stripe: ' . $clientID;
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $amount;
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$this->logger->error("Error inesperado al crear PaymentIntent (Error {$e->getCode()}): " . $e->getMessage() . PHP_EOL);
|
||||||
|
//si e->getMessage incluye el mensaje: You must provide a customer when creating or updating a PaymentIntent with a `customer_ba (truncated...) declarar una variable y ahi poner "Este cliente no tiene cuenta de Stripe"
|
||||||
|
if ($e->getMessage() == 'You must provide a customer when creating or updating a PaymentIntent with a `customer_ba (truncated...)') {
|
||||||
|
$this->logger->error("Este cliente no tiene cuenta de Stripe" . PHP_EOL);
|
||||||
|
$arrayOxxoPayment['failDescription'] = 'Este cliente no tiene cuenta de Stripe: ' . $clientID;
|
||||||
|
} else {
|
||||||
|
$this->logger->error("Error inesperado al crear PaymentIntent: " . $e->getMessage() . PHP_EOL);
|
||||||
|
$arrayOxxoPayment['failDescription'] = 'Error inesperado al crear PaymentIntent: ' . $clientID;
|
||||||
|
}
|
||||||
|
//devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
$arrayOxxoPayment['url'] = '';
|
||||||
|
$arrayOxxoPayment['error'] = 'errorCreatePaymentIntent';
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $amount;
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$firstName = isset($arrayClientCRM['firstName']) ? trim($arrayClientCRM['firstName']) : '';
|
||||||
|
$lastName = isset($arrayClientCRM['lastName']) ? trim($arrayClientCRM['lastName']) : '';
|
||||||
|
|
||||||
|
if (strlen($firstName) < 2 || strlen($lastName) < 2) {
|
||||||
|
$this->logger->error("Nombre/apellido inválido: ' . $firstName . ' ' . $lastName" . PHP_EOL);
|
||||||
|
//devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
$arrayOxxoPayment['url'] = '';
|
||||||
|
$arrayOxxoPayment['error'] = 'errorNombreApellidoInvalido';
|
||||||
|
$arrayOxxoPayment['failDescription'] = "Nombre/apellido inválido: ' . $firstName . ' ' . $lastName";
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $amount;
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$responsePaymentMethod = $guzzleClient->post('https://api.stripe.com/v1/payment_methods', [
|
||||||
|
'auth' => [$StripeToken, ''],
|
||||||
|
'form_params' => [
|
||||||
|
'type' => 'oxxo',
|
||||||
|
'billing_details' => [
|
||||||
|
'name' => "$firstName $lastName",
|
||||||
|
'email' => $clientEmail,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$paymentMethod = json_decode($responsePaymentMethod->getBody()->getContents(), true);
|
||||||
|
|
||||||
|
$responseConfirmPaymentIntent = $guzzleClient->post('https://api.stripe.com/v1/payment_intents/' . $paymentIntent['id'] . '/confirm', [
|
||||||
|
'auth' => [$StripeToken, ''],
|
||||||
|
'form_params' => [
|
||||||
|
'payment_method' => $paymentMethod['id'],
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$paymentIntentConfirm = json_decode($responseConfirmPaymentIntent->getBody()->getContents(), true);
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$this->logger->error("Error al confirmar PaymentIntent: " . $e->getMessage() . PHP_EOL);
|
||||||
|
//devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
$arrayOxxoPayment['url'] = '';
|
||||||
|
$arrayOxxoPayment['error'] = 'errorConfirmPaymentIntent';
|
||||||
|
$arrayOxxoPayment['failDescription'] = 'Error al confirmar PaymentIntent: ' . $e->getMessage();
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $amount;
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($paymentIntentConfirm['next_action']) && isset($paymentIntentConfirm['next_action']['oxxo_display_details'])) {
|
||||||
|
$oxxoPayment = $paymentIntentConfirm['next_action']['oxxo_display_details'];
|
||||||
|
$oxxo_reference = $oxxoPayment['number'];
|
||||||
|
$oxxo_receipt_url = $oxxoPayment['hosted_voucher_url'];
|
||||||
|
|
||||||
|
$this->logger->info("Referencia OXXO: " . $oxxo_reference . PHP_EOL);
|
||||||
|
$this->logger->info("URL del recibo: " . $oxxo_receipt_url . PHP_EOL);
|
||||||
|
//$this->captureScreenshot($oxxo_receipt_url);
|
||||||
|
//devolver un array con los campos de url de oxxo, descripción de la falla, clientID y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = $oxxo_reference;
|
||||||
|
$arrayOxxoPayment['url'] = $oxxo_receipt_url;
|
||||||
|
$arrayOxxoPayment['error'] = '';
|
||||||
|
$arrayOxxoPayment['failDescription'] = '';
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $amount;
|
||||||
|
$this->logger->info("Referencia OXXO creada correctamente." . PHP_EOL);
|
||||||
|
|
||||||
|
|
||||||
|
// Configuración de la API de tu servicio Docker de Puppeteer
|
||||||
|
$api_url = 'http://'.$ipPuppeteer.':'.$portPuppeteer.'/screenshot'; // Asegúrate que esta URL sea accesible
|
||||||
|
|
||||||
|
// --- Datos para la petición ---
|
||||||
|
$request_data = [
|
||||||
|
'url' => $oxxo_receipt_url, // URL del recibo de OXXO
|
||||||
|
// Opcional: Si quieres recortar la imagen, descomenta y ajusta el 'clip'
|
||||||
|
|
||||||
|
'clip' => [
|
||||||
|
'x' => 325,
|
||||||
|
'y' => 30,
|
||||||
|
'width' => 550,
|
||||||
|
'height' => 550
|
||||||
|
]
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
// Nombre del archivo donde se guardará la imagen
|
||||||
|
$clientFullNameWithoutSpaces = str_replace(' ', '_', $clientFullName); // Reemplazar espacios por guiones bajos
|
||||||
|
$voucherFileName = 'voucher_'.$clientFullNameWithoutSpaces.'_' . time() . '.jpeg'; // Usamos .jpeg por defecto
|
||||||
|
$output_filename = __DIR__ . '/../../vouchers_oxxo/' . $voucherFileName; // Usamos .jpeg por defecto
|
||||||
|
$output_filename = realpath(__DIR__ . '/../../vouchers_oxxo') . '/'. $voucherFileName; // Mejor: ruta absoluta y verifica que el directorio exista
|
||||||
|
//$output_filename = '/path/to/vouchers_oxxo/voucher_' . time() . '.jpeg'; // Mejor aún: ruta absoluta y fija, si es posible
|
||||||
|
|
||||||
|
$guzzleClient = new Client([
|
||||||
|
'timeout' => 5, // Timeout de 5 segundos
|
||||||
|
]);
|
||||||
|
// Descargar el recibo de OXXO
|
||||||
|
try {
|
||||||
|
// --- Realizar la petición POST ---
|
||||||
|
$response = $guzzleClient->post($api_url, [
|
||||||
|
'json' => $request_data, // Guzzle codifica automáticamente el array a JSON y establece Content-Type: application/json
|
||||||
|
'headers' => [
|
||||||
|
'Accept' => 'image/jpeg, image/png', // Indicar que esperamos una imagen
|
||||||
|
],
|
||||||
|
// Opcional: para depuración si necesitas ver el cuerpo de la respuesta en caso de error
|
||||||
|
// 'http_errors' => false // Desactiva las excepciones para códigos de estado 4xx/5xx y maneja la respuesta manualmente
|
||||||
|
]);
|
||||||
|
|
||||||
|
// --- Procesar la respuesta ---
|
||||||
|
$statusCode = $response->getStatusCode();
|
||||||
|
$contentType = $response->getHeaderLine('Content-Type');
|
||||||
|
|
||||||
|
$this->logger->debug("Status Code: " . $statusCode);
|
||||||
|
$this->logger->debug("Content Type: " . $contentType);
|
||||||
|
|
||||||
|
if ($statusCode === 200 && str_contains($contentType, 'image/')) {
|
||||||
|
// La respuesta es una imagen y el código de estado es 200 OK
|
||||||
|
$image_content = $response->getBody()->getContents();
|
||||||
|
|
||||||
|
// *** VERIFICACIÓN IMPORTANTE: ***
|
||||||
|
if (file_put_contents($output_filename, $image_content)) {
|
||||||
|
$this->logger->debug("¡Imagen guardada exitosamente en: " . $output_filename);
|
||||||
|
$url_file = $this->UploadVoucherToWordpressByImageFileName($voucherFileName); //Carga del comprobante PDF a Wordpress para su posterior envío
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = $url_file; // Agregar la URL del archivo de imagen al array
|
||||||
|
} else {
|
||||||
|
$this->logger->error("Error: No se pudo guardar la imagen en " . $output_filename);
|
||||||
|
$this->logger->error("Ruta del archivo: " . $output_filename); // Agregado para depuración
|
||||||
|
$this->logger->error("Directorio del script: " . __DIR__); // Agregado para depuración
|
||||||
|
$this->logger->error("Error de PHP: " . error_get_last()['message']); // Agregado para depuración
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// No es una imagen o hubo un error en el servicio
|
||||||
|
$this->logger->debug("Error: La respuesta no es una imagen o el código de estado no es 200 OK.");
|
||||||
|
$this->logger->debug("Cuerpo de la respuesta: " . $response->getBody()->getContents());
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (RequestException $e) {
|
||||||
|
// Manejo de errores de red o del servidor (ej. timeouts, 4xx, 5xx si http_errors no es false)
|
||||||
|
$this->logger->error("Error en la petición: " . $e->getMessage());
|
||||||
|
if ($e->hasResponse()) {
|
||||||
|
$this->logger->error("Cuerpo de la respuesta de error: " . $e->getResponse()->getBody()->getContents());
|
||||||
|
$this->logger->error("Código de estado HTTP de error: " . $e->getResponse()->getStatusCode());
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
// Otros errores inesperados
|
||||||
|
$this->logger->error("Error inesperado: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
} else {
|
||||||
|
$this->logger->info("El PaymentIntent no tiene detalles de OXXO disponibles. Estado: " . $paymentIntentConfirm['status'] . PHP_EOL);
|
||||||
|
//devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
$arrayOxxoPayment['url'] = '';
|
||||||
|
$arrayOxxoPayment['error'] = 'errorPaymentIntentWithoutOxxoDetails';
|
||||||
|
$arrayOxxoPayment['failDescription'] = 'El PaymentIntent no tiene detalles de OXXO disponibles. Estado: ' . $paymentIntentConfirm['status'];
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $amount;
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$this->logger->info("Este cliente no tiene adeudos." . PHP_EOL);
|
||||||
|
//devolver un array con los campos del codigo error, descripción de la falla, clientID y amount
|
||||||
|
$arrayOxxoPayment['oxxo_reference'] = '';
|
||||||
|
$arrayOxxoPayment['url'] = '';
|
||||||
|
$arrayOxxoPayment['error'] = 'errorsinadeudo';
|
||||||
|
$arrayOxxoPayment['failDescription'] = 'Este cliente no tiene adeudos.';
|
||||||
|
$arrayOxxoPayment['clientID'] = $clientID;
|
||||||
|
$arrayOxxoPayment['clientFullName'] = $clientFullName;
|
||||||
|
$arrayOxxoPayment['amount'] = $amount;
|
||||||
|
$arrayOxxoPayment['voucher_image_url'] = '';
|
||||||
|
return $arrayOxxoPayment;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * implement in subclass with the specific messaging provider
|
||||||
|
// * @see TwilioNotifierFacade::sendWhatsApp()
|
||||||
|
// */
|
||||||
|
abstract protected function sendWhatsApp(
|
||||||
|
string $message
|
||||||
|
): void;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function validarEmail($email)
|
||||||
|
{
|
||||||
|
$this->logger->debug('SE VALIDA EL EMAIL!!! ' . PHP_EOL);
|
||||||
|
// Utilizar la función filter_var con el filtro FILTER_VALIDATE_EMAIL para validar el email
|
||||||
|
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
||||||
|
// Si el email es válido, devolver el email
|
||||||
|
return $email;
|
||||||
|
} else {
|
||||||
|
// Si el email no es válido, devolver una cadena vacía
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function UploadReceiptToWordpressByImageFileName($imageFileName): string
|
||||||
|
{
|
||||||
|
|
||||||
|
// $log = PluginLogManager::create(); //Initialize Logger
|
||||||
|
// $configManager = PluginConfigManager::create();
|
||||||
|
// $config = $configManager->loadConfig();
|
||||||
|
|
||||||
|
// // Configuración de conexión FTP
|
||||||
|
// $ftp_server = $config['hostServerFTP'];
|
||||||
|
// $ftp_username = $config['usernameServerFTP'];
|
||||||
|
// $ftp_password = $config['passServerFTP'];
|
||||||
|
|
||||||
|
$remote_folder = "/public_html/wp/wp-content/uploads/img/";
|
||||||
|
|
||||||
|
|
||||||
|
// Configuración de conexión FTP
|
||||||
|
$ftp_server = "siip.mx";
|
||||||
|
$ftp_username = "siip0001";
|
||||||
|
$ftp_password = '$spGiT,[wa)n';
|
||||||
|
$remote_file = "/public_html/wp/wp-content/uploads/img/" . $imageFileName;
|
||||||
|
$file_to_upload = __DIR__ . '/' . $imageFileName;
|
||||||
|
$url = 'https://siip.mx/wp/wp-content/uploads/img/' . $imageFileName;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Conexión FTP
|
||||||
|
$ftp_conn = ftp_connect($ftp_server) or die("No se pudo conectar al servidor FTP");
|
||||||
|
$login = ftp_login($ftp_conn, $ftp_username, $ftp_password);
|
||||||
|
ftp_pasv($ftp_conn, true);
|
||||||
|
// Verificar conexión y login
|
||||||
|
if ($ftp_conn && $login) {
|
||||||
|
print_r("Conexión FTP exitosa" . PHP_EOL);
|
||||||
|
// $log->appendLog("Conexión FTP exitosa" . PHP_EOL);
|
||||||
|
|
||||||
|
// Cargar archivo
|
||||||
|
if (ftp_put($ftp_conn, $remote_file, $file_to_upload, FTP_BINARY)) {
|
||||||
|
print_r("El archivo ha sido cargado exitosamente." . PHP_EOL);
|
||||||
|
print_r("La URL es: " . $url . PHP_EOL);
|
||||||
|
// $log->appendLog("El archivo ha sido cargado exitosamente." . PHP_EOL);
|
||||||
|
// $log->appendLog("La URL es: " . $url . PHP_EOL);
|
||||||
|
// Cerrar conexión FTP
|
||||||
|
//ftp_close($ftp_conn);
|
||||||
|
//return $url;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//$log->appendLog("Error al cargar el archivo " . PHP_EOL);
|
||||||
|
print_r("Error al cargar el archivo " . PHP_EOL);
|
||||||
|
ftp_close($ftp_conn);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Obtener lista de archivos en la carpeta
|
||||||
|
$files = ftp_nlist($ftp_conn, $remote_folder);
|
||||||
|
if (is_array($files)) {
|
||||||
|
// Eliminar la ruta del directorio de los archivos
|
||||||
|
$files = array_map(function ($file) use ($remote_folder) {
|
||||||
|
return str_replace($remote_folder, '', $file);
|
||||||
|
}, $files);
|
||||||
|
|
||||||
|
// Obtener fechas de modificación
|
||||||
|
$filesWithTime = [];
|
||||||
|
foreach ($files as $file) {
|
||||||
|
$modifiedTime = ftp_mdtm($ftp_conn, $remote_folder . $file);
|
||||||
|
if ($modifiedTime != -1) {
|
||||||
|
$filesWithTime[$file] = $modifiedTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ordenar archivos por fecha de modificación, más recientes primero
|
||||||
|
arsort($filesWithTime);
|
||||||
|
|
||||||
|
// Obtener los archivos a eliminar (todos menos los 5 más recientes)
|
||||||
|
$filesToDelete = array_slice(array_keys($filesWithTime), 5);
|
||||||
|
|
||||||
|
// Eliminar archivos antiguos
|
||||||
|
foreach ($filesToDelete as $file) {
|
||||||
|
if (ftp_delete($ftp_conn, $remote_folder . $file)) {
|
||||||
|
print_r("Comprobante eliminado de Wordpress: " . $file . PHP_EOL);
|
||||||
|
// $log->appendLog("Comprobante eliminado de Wordpress: " . $file . PHP_EOL);
|
||||||
|
} else {
|
||||||
|
print_r('Error al borrar comprobante' . $file . PHP_EOL);
|
||||||
|
// $log->appendLog('Error al borrar comprobante' . $file . PHP_EOL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print_r("Archivos eliminados" . PHP_EOL);
|
||||||
|
// $log->appendLog("Archivos eliminados" . PHP_EOL);
|
||||||
|
ftp_close($ftp_conn);
|
||||||
|
return $url;
|
||||||
|
} else {
|
||||||
|
print_r("No se pudo obtener la lista de archivos de la carpeta FTP" . PHP_EOL);
|
||||||
|
// $log->appendLog("No se pudo obtener la lista de archivos de la carpeta FTP" . PHP_EOL);
|
||||||
|
ftp_close($ftp_conn);
|
||||||
|
return $url;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cerrar conexión FTP
|
||||||
|
//ftp_close($ftp_conn);
|
||||||
|
//return '';
|
||||||
|
} else {
|
||||||
|
print_r("No se pudo conectar o iniciar sesión en el servidor FTP." . PHP_EOL);
|
||||||
|
// $log->appendLog("No se pudo conectar o iniciar sesión en el servidor FTP." . PHP_EOL);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function UploadVoucherToWordpressByImageFileName($imageFileName): string
|
||||||
|
{
|
||||||
|
|
||||||
|
$log = PluginLogManager::create(); //Initialize Logger
|
||||||
|
$configManager = PluginConfigManager::create();
|
||||||
|
$config = $configManager->loadConfig();
|
||||||
|
|
||||||
|
// Configuración de conexión FTP
|
||||||
|
$ftp_server = $config['hostServerFTP'];
|
||||||
|
$ftp_username = $config['usernameServerFTP'];
|
||||||
|
$ftp_password = $config['passServerFTP'];
|
||||||
|
$remote_folder = "/public_html/wp/wp-content/uploads/vouchers_oxxo/";
|
||||||
|
|
||||||
|
$log->appendLog("Subiendo voucher a worpdpress " . PHP_EOL);
|
||||||
|
// Configuración de conexión FTP
|
||||||
|
// $ftp_server = "siip.mx";
|
||||||
|
// $ftp_username = "siip0001";
|
||||||
|
// $ftp_password = '$spGiT,[wa)n';
|
||||||
|
$remote_file = "/public_html/wp/wp-content/uploads/vouchers_oxxo/" . $imageFileName;
|
||||||
|
$file_to_upload = __DIR__ . '/../../vouchers_oxxo/' . $imageFileName;
|
||||||
|
$url = 'https://siip.mx/wp/wp-content/uploads/vouchers_oxxo/' . $imageFileName;
|
||||||
|
|
||||||
|
$log->appendLog("file_to_upload: " . $file_to_upload . PHP_EOL);
|
||||||
|
|
||||||
|
// Conexión FTP
|
||||||
|
$ftp_conn = ftp_connect($ftp_server) or die("No se pudo conectar al servidor FTP");
|
||||||
|
$login = ftp_login($ftp_conn, $ftp_username, $ftp_password);
|
||||||
|
ftp_pasv($ftp_conn, true);
|
||||||
|
// Verificar conexión y login
|
||||||
|
if ($ftp_conn && $login) {
|
||||||
|
$log->appendLog("Conexión FTP exitosa" . PHP_EOL);
|
||||||
|
|
||||||
|
// Cargar archivo
|
||||||
|
if (ftp_put($ftp_conn, $remote_file, $file_to_upload, FTP_BINARY)) {
|
||||||
|
$log->appendLog("El archivo ha sido cargado exitosamente." . PHP_EOL);
|
||||||
|
$log->appendLog("La URL es: " . $url . PHP_EOL);
|
||||||
|
|
||||||
|
$this->deleteFilesWordpressExceptLastHundred($log, $ftp_conn, $remote_file);
|
||||||
|
// Cerrar conexión FTP
|
||||||
|
ftp_close($ftp_conn); //COMENTAR AQUÍ SI SE BORRAN LOS ARCHIVOS DE WORDPRESS DESCOMENTANDO EL CÓDIGO DE MÁS ABAJO
|
||||||
|
return $url; //COMENTAR AQUÍ SI SE BORRAN LOS ARCHIVOS DE WORDPRESS DESCOMENTANDO EL CÓDIGO DE MÁS ABAJO
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$log->appendLog("Error al cargar el archivo " . PHP_EOL);
|
||||||
|
ftp_close($ftp_conn);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
//SI SE DECIDE VOLVER A ELIMINAR LOS COMPROBANTES ENTONCES DESCOMENTAR ESTA PARTE DE ABAJO Y COMENTAR LA SECCIÓN DE ARRIBA
|
||||||
|
|
||||||
|
// Obtener lista de archivos en la carpeta
|
||||||
|
// $files = ftp_nlist($ftp_conn, $remote_folder);
|
||||||
|
// if (is_array($files)) {
|
||||||
|
// // Eliminar la ruta del directorio de los archivos
|
||||||
|
// $files = array_map(function ($file) use ($remote_folder) {
|
||||||
|
// return str_replace($remote_folder, '', $file);
|
||||||
|
// }, $files);
|
||||||
|
|
||||||
|
// // Obtener fechas de modificación
|
||||||
|
// $filesWithTime = [];
|
||||||
|
// foreach ($files as $file) {
|
||||||
|
// $modifiedTime = ftp_mdtm($ftp_conn, $remote_folder . $file);
|
||||||
|
// if ($modifiedTime != -1) {
|
||||||
|
// $filesWithTime[$file] = $modifiedTime;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Ordenar archivos por fecha de modificación, más recientes primero
|
||||||
|
// arsort($filesWithTime);
|
||||||
|
|
||||||
|
// // Obtener los archivos a eliminar (todos menos los 50 más recientes)
|
||||||
|
// $filesToDelete = array_slice(array_keys($filesWithTime), 50);
|
||||||
|
|
||||||
|
// // Eliminar archivos antiguos
|
||||||
|
// foreach ($filesToDelete as $file) {
|
||||||
|
// if (ftp_delete($ftp_conn, $remote_folder . $file)) {
|
||||||
|
// $log->appendLog("Comprobante eliminado de Wordpress: " . $file . PHP_EOL);
|
||||||
|
// } else {
|
||||||
|
// $log->appendLog('Error al borrar comprobante' . $file . PHP_EOL);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// $log->appendLog("Archivos eliminados" . PHP_EOL);
|
||||||
|
// ftp_close($ftp_conn);
|
||||||
|
// return $url;
|
||||||
|
// } else {
|
||||||
|
// $log->appendLog("No se pudo obtener la lista de archivos de la carpeta FTP" . PHP_EOL);
|
||||||
|
// ftp_close($ftp_conn);
|
||||||
|
// return $url;
|
||||||
|
// }
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$log->appendLog("No se pudo conectar o iniciar sesión en el servidor FTP." . PHP_EOL);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteFilesWordpressExceptLastHundred($log, $ftp_conn, $remote_folder): bool
|
||||||
|
{
|
||||||
|
|
||||||
|
// Obtener lista de archivos en la carpeta
|
||||||
|
$files = ftp_nlist($ftp_conn, $remote_folder);
|
||||||
|
if (is_array($files)) {
|
||||||
|
// Eliminar la ruta del directorio de los archivos
|
||||||
|
$files = array_map(function ($file) use ($remote_folder) {
|
||||||
|
return str_replace($remote_folder, '', $file);
|
||||||
|
}, $files);
|
||||||
|
|
||||||
|
// Obtener fechas de modificación
|
||||||
|
$filesWithTime = [];
|
||||||
|
foreach ($files as $file) {
|
||||||
|
$modifiedTime = ftp_mdtm($ftp_conn, $remote_folder . $file);
|
||||||
|
if ($modifiedTime != -1) {
|
||||||
|
$filesWithTime[$file] = $modifiedTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ordenar archivos por fecha de modificación, más recientes primero
|
||||||
|
arsort($filesWithTime);
|
||||||
|
|
||||||
|
// Obtener los archivos a eliminar (todos menos los 50 más recientes)
|
||||||
|
$filesToDelete = array_slice(array_keys($filesWithTime), 50);
|
||||||
|
|
||||||
|
// Eliminar archivos antiguos
|
||||||
|
foreach ($filesToDelete as $file) {
|
||||||
|
if (ftp_delete($ftp_conn, $remote_folder . $file)) {
|
||||||
|
$log->appendLog("Voucher eliminado de Wordpress: " . $file . PHP_EOL);
|
||||||
|
} else {
|
||||||
|
$log->appendLog('Error al borrar voucher' . $file . PHP_EOL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$log->appendLog("Archivos eliminados" . PHP_EOL);
|
||||||
|
ftp_close($ftp_conn);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
$log->appendLog("No se pudo obtener la lista de archivos de la carpeta FTP" . PHP_EOL);
|
||||||
|
ftp_close($ftp_conn);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
489
archivos_webhook_destino/src/Facade/AbstractStripeOperationsFacade.php
Executable file
489
archivos_webhook_destino/src/Facade/AbstractStripeOperationsFacade.php
Executable file
@ -0,0 +1,489 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace SmsNotifier\Facade;
|
||||||
|
|
||||||
|
use Attribute;
|
||||||
|
use Exception;
|
||||||
|
use GuzzleHttp\Exception\GuzzleException;
|
||||||
|
use SmsNotifier\Data\NotificationData;
|
||||||
|
use SmsNotifier\Factory\MessageTextFactory;
|
||||||
|
use SmsNotifier\Service\Logger;
|
||||||
|
use SmsNotifier\Service\SmsNumberProvider;
|
||||||
|
use GuzzleHttp\Client;
|
||||||
|
use Ubnt\UcrmPluginSdk\Service\UcrmApi;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* send message to client's number
|
||||||
|
*/
|
||||||
|
|
||||||
|
abstract class AbstractStripeOperationsFacade
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Logger
|
||||||
|
*/
|
||||||
|
protected $logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var MessageTextFactory
|
||||||
|
*/
|
||||||
|
protected $messageTextFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var SmsNumberProvider
|
||||||
|
*/
|
||||||
|
protected $clientPhoneNumber;
|
||||||
|
/**
|
||||||
|
* @var UcrmApi
|
||||||
|
*/
|
||||||
|
protected $ucrmApi;
|
||||||
|
|
||||||
|
protected $stripeCustomAttributeID;
|
||||||
|
protected $clabeInterbancariaBanamexID;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
Logger $logger,
|
||||||
|
MessageTextFactory $messageTextFactory,
|
||||||
|
SmsNumberProvider $clientPhoneNumber
|
||||||
|
) {
|
||||||
|
$this->logger = $logger;
|
||||||
|
$this->messageTextFactory = $messageTextFactory;
|
||||||
|
$this->clientPhoneNumber = $clientPhoneNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates a PaymentIntent in Stripe for a Customer
|
||||||
|
*/
|
||||||
|
public function createPaymentIntent($event_json)
|
||||||
|
{
|
||||||
|
$this->logger->info("Iniciando creación de PaymentIntent en Stripe." . PHP_EOL);
|
||||||
|
|
||||||
|
$configManager = \Ubnt\UcrmPluginSdk\Service\PluginConfigManager::create();
|
||||||
|
$config = $configManager->loadConfig();
|
||||||
|
$StripeToken = $config['tokenstripe'];
|
||||||
|
$idPaymentAdmin = $config['idPaymentAdminCRM']; //ID del administrador que crea el PaymentIntent
|
||||||
|
$stripe = new \Stripe\StripeClient($StripeToken); //Token de clave privada para la API de Stripe
|
||||||
|
|
||||||
|
// Asegurarse de que 'customer' esté presente en la estructura del evento
|
||||||
|
if (!isset($event_json['data']['object']['customer'])) {
|
||||||
|
$this->logger->info("Error: Invalid event structure. Customer ID not found." . PHP_EOL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$customerId = $event_json['data']['object']['customer'];
|
||||||
|
if (is_null($customerId)) {
|
||||||
|
$this->logger->info("Error: Customer ID is null." . PHP_EOL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validar que net_amount está presente
|
||||||
|
if (!isset($event_json['data']['object']['net_amount'])) {
|
||||||
|
$this->logger->info("Error: net_amount not found in event data." . PHP_EOL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$amount = $event_json['data']['object']['net_amount'];
|
||||||
|
//convertir en positivo
|
||||||
|
if ($event_json['data']['object']['net_amount'] < 0) {
|
||||||
|
$this->logger->warning("Error: net_amount es negativo." . PHP_EOL);
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//imprimir la cantidad del PaymentIntent
|
||||||
|
$this->logger->info("Cantidad del PaymentIntent: " . $amount . PHP_EOL);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Obtener información del cliente desde Stripe
|
||||||
|
$stripeQuery = $stripe->customers->retrieve($customerId, []);
|
||||||
|
$UCRM_clientID = $stripeQuery['metadata']['ucrm_client_id']; // ID del cliente en Ubiquiti UISP
|
||||||
|
|
||||||
|
// Obtener información del administrador actual
|
||||||
|
$this->ucrmApi = UcrmApi::create();
|
||||||
|
$currentUserAdmin = $this->ucrmApi->get('users/admins', []);
|
||||||
|
|
||||||
|
// Crear PaymentIntent
|
||||||
|
$paymentIntent = $stripe->paymentIntents->create([
|
||||||
|
'amount' => $amount,
|
||||||
|
'currency' => 'mxn',
|
||||||
|
'customer' => $customerId,
|
||||||
|
'payment_method_types' => ['customer_balance'],
|
||||||
|
'payment_method_data' => ['type' => 'customer_balance'],
|
||||||
|
'confirm' => true,
|
||||||
|
'payment_method_options' => [
|
||||||
|
'customer_balance' => [
|
||||||
|
'funding_type' => 'bank_transfer',
|
||||||
|
'bank_transfer' => ['type' => 'mx_bank_transfer']
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'metadata' => [
|
||||||
|
'clientId' => $UCRM_clientID, // ID del cliente en Ubiquiti
|
||||||
|
'createdBy' => 'UCRM',
|
||||||
|
'paymentType' => 'card.one_time',
|
||||||
|
'signedInAdminId' => $idPaymentAdmin, // ID del administrador que crea el PaymentIntent
|
||||||
|
'tipoPago' => 'Transferencia Bancaria'
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->logger->info("PaymentIntent creado: " . $paymentIntent->id . PHP_EOL);
|
||||||
|
|
||||||
|
} catch (\Stripe\Exception\ApiErrorException $e) {
|
||||||
|
$this->logger->info("Error creando PaymentIntent: " . $e->getMessage() . PHP_EOL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Creates the Stripe Customer
|
||||||
|
*/
|
||||||
|
public function createStripeClient(NotificationData $notificationData, $tagStripe = false): void
|
||||||
|
{
|
||||||
|
$configManager = \Ubnt\UcrmPluginSdk\Service\PluginConfigManager::create();
|
||||||
|
$config = $configManager->loadConfig();
|
||||||
|
// the "exportFormat" key must be defined in plugin's manifest file, see the link above
|
||||||
|
$IPServer = $config['ipserver'];
|
||||||
|
$UCRMAPIToken = $config['apitoken'];
|
||||||
|
$StripeToken = $config['tokenstripe'];
|
||||||
|
$baseUri = 'https://' . $IPServer . '/crm/api/v1.0/'; //endpoint de la API REST del CRM
|
||||||
|
$this->ucrmApi = UcrmApi::create();
|
||||||
|
|
||||||
|
$stripe = new \Stripe\StripeClient($StripeToken); //Token de clave privada en modo prueba para la API de Stripe
|
||||||
|
//$stripe = new \Stripe\StripeClient('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'); //Token de clave privada en modo prodcucción para la API de Stripe
|
||||||
|
|
||||||
|
//valor de $notificationData en json
|
||||||
|
$this->logger->info("Valor de notificationData: " . json_encode($notificationData) . PHP_EOL);
|
||||||
|
|
||||||
|
//ejemplo de notificationData: {"uuid":"0be6fee6-db1d-4ab5-a52c-2ee87b04315e","changeType":"edit","entity":"client","entityId":170,"message":null,"clientId":170,"eventName":"client.edit","clientData":{"id":170,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"San Luis 34","street2":null,"city":"Dolores Hidalgo","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"San Luis 34, Dolores Hidalgo, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":null,"sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2025-03-24T00:00:00-0600","leadConvertedAt":"2025-03-24T15:01:22-0600","companyContactFirstName":null,"companyContactLastName":null,"isActive":false,"firstName":"Charicuas","lastName":"Quinero","username":null,"contacts":[{"id":176,"clientId":170,"email":null,"phone":null,"name":null,"isBilling":true,"isContact":true,"types":[{"id":1,"name":"Billing"},{"id":2,"name":"General"}]}],"attributes":[{"id":192,"clientId":170,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_S0T9BJ4dO0p0A3","clientZoneVisible":true},{"id":193,"clientId":170,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"124180302040274015","clientZoneVisible":true}],"accountBalance":0,"accountCredit":0,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[{"id":5,"name":"CREARCLABESTRIPE","colorBackground":"#e30000","colorText":"#fff"}],"invitationEmailSentDate":null,"avatarColor":"#ef5350","addressGpsLat":22.00854045,"addressGpsLon":-99.0272544,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":false,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"serviceData":null,"invoiceData":null,"paymentData":null}
|
||||||
|
|
||||||
|
//obtener el id del cliente
|
||||||
|
$clientId = $notificationData->clientData['id'];
|
||||||
|
|
||||||
|
//si en attributes del cliente encuentra el custom field de Stripe Customer ID entonces no se vuelve a crear el cliente en Stripe
|
||||||
|
$attributes = $notificationData->clientData['attributes'];
|
||||||
|
$this->logger->info("Valor de attributes: " . json_encode($attributes) . PHP_EOL);
|
||||||
|
$stripeCustomerId = null;
|
||||||
|
foreach ($attributes as $attribute) {
|
||||||
|
if ($attribute['key'] === 'stripeCustomerId') {
|
||||||
|
$stripeCustomerId = $attribute['value'];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$customAttributes = $this->ucrmApi->get('custom-attributes/', ['attributeType' => 'client']);//Obtener los atributos del sistema que estén vinculados a la entidad "cliente"
|
||||||
|
//$this->logger->info("result del custom Attributes: " . json_encode($customAttributes) . PHP_EOL);
|
||||||
|
|
||||||
|
|
||||||
|
// Verificar si se obtuvieron los atributos
|
||||||
|
if ($customAttributes && is_array($customAttributes)) {
|
||||||
|
foreach ($customAttributes as $attribute) {
|
||||||
|
// Verificar si 'name' contiene la palabra 'Stripe' sin distinguir mayúsculas y minúsculas
|
||||||
|
if (isset($attribute['name']) && stripos($attribute['name'], 'Stripe') !== false) {
|
||||||
|
$this->logger->info("ID correspondiente a 'Customer Stripe ID': " . $attribute['id'] . PHP_EOL);
|
||||||
|
$this->stripeCustomAttributeID = $attribute['id'];
|
||||||
|
} else if (isset($attribute['name']) && stripos($attribute['name'], 'Clabe') !== false) {
|
||||||
|
//$this->logger->info("ID correspondiente a 'Clabe Interbancaria Banamex': " . $attribute['id'] .PHP_EOL);
|
||||||
|
$this->clabeInterbancariaBanamexID = $attribute['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->logger->info("Error al obtener los atributos personalizados." . PHP_EOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($stripeCustomerId) {
|
||||||
|
$this->logger->info("El cliente ya tiene un Stripe Customer ID: " . $stripeCustomerId . PHP_EOL);
|
||||||
|
if ($tagStripe) {
|
||||||
|
$tagsIds = $this->ucrmApi->get('client-tags', []);
|
||||||
|
//ejemplo de respuesta $tagsIds: [{"id":4,"name":"EQUIPO A CREDITO","colorBackground":"#fed74a","colorText":"#444"},{"id":5,"name":"CREARCLABESTRIPE","colorBackground":"#e30000","colorText":"#fff"}]
|
||||||
|
|
||||||
|
//obtener el ID de la etiqueta o tag llamada "CREAR CLABE STRIPE" y asiganarla a una variable $tagCrearClabeStripe basandose en el ejemplo de respuesta anterior
|
||||||
|
$tagCrearClabeStripe = null;
|
||||||
|
foreach ($tagsIds as $tag) {
|
||||||
|
if ($tag['name'] === 'CREAR CLABE STRIPE') {
|
||||||
|
$tagCrearClabeStripe = $tag['id'];
|
||||||
|
// $this->logger->info("ID de la etiqueta 'CREAR CLABE STRIPE': " . $tagCrearClabeStripe . PHP_EOL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$tagCrearClabeStripe) {
|
||||||
|
$this->logger->info("No se encontró la etiqueta 'CREAR CLABE STRIPE'." . PHP_EOL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->ucrmApi->patch("clients/$clientId/remove-tag/" . $tagCrearClabeStripe);
|
||||||
|
$this->logger->info("Se eliminó la etiqueta 'CREAR CLABE STRIPE' del cliente." . PHP_EOL);
|
||||||
|
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//$this->logger->info("Ya dentro del metodo Create Stripe Client " . PHP_EOL);
|
||||||
|
//$this->sendWhatsApp('Hola Dany');
|
||||||
|
|
||||||
|
|
||||||
|
if ($tagStripe) {
|
||||||
|
$tagsIds = $this->ucrmApi->get('client-tags', []);
|
||||||
|
//ejemplo de respuesta $tagsIds: [{"id":4,"name":"EQUIPO A CREDITO","colorBackground":"#fed74a","colorText":"#444"},{"id":5,"name":"CREARCLABESTRIPE","colorBackground":"#e30000","colorText":"#fff"}]
|
||||||
|
|
||||||
|
//obtener el ID de la etiqueta o tag llamada "CREARCLABESTRIPE" y asiganarla a una variable $tagCrearClabeStripe basandose en el ejemplo de respuesta anterior
|
||||||
|
$tagCrearClabeStripe = null;
|
||||||
|
foreach ($tagsIds as $tag) { //revisamos los tags del cliente y si encuentra el tag de "CREARCLABESTRIPE" entonces lo asigna a la variable $tagCrearClabeStripe el valor de id
|
||||||
|
if ($tag['name'] === 'CREAR CLABE STRIPE') {
|
||||||
|
$tagCrearClabeStripe = $tag['id'];
|
||||||
|
// $this->logger->info("ID de la etiqueta 'CREAR CLABE STRIPE': " . $tagCrearClabeStripe . PHP_EOL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$tagCrearClabeStripe) {
|
||||||
|
$this->logger->info("No se encontró la etiqueta 'CREAR CLABE STRIPE'." . PHP_EOL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$this->createCustomerStripe($notificationData, $stripe, $baseUri, $UCRMAPIToken);
|
||||||
|
$this->ucrmApi->patch("clients/$clientId/remove-tag/" . $tagCrearClabeStripe);
|
||||||
|
$this->logger->info("Se eliminó la etiqueta 'CREAR CLABE STRIPE' del cliente." . PHP_EOL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Verificar si la solicitud fue exitosa (código de estado 200)
|
||||||
|
//https://172.16.5.120/crm/api/v1.0/payments?limit=1&clientId=1992&order=createdDate&direction=DESC
|
||||||
|
|
||||||
|
$notification_client_data = $notificationData->clientData; //array con los datos del cliente
|
||||||
|
|
||||||
|
// Asegúrate de trabajar con un objeto PHP
|
||||||
|
$dataObject = json_decode(json_encode($notification_client_data)); // Convertir a JSON y luego decodificar como objeto
|
||||||
|
|
||||||
|
if (!is_object($dataObject)) {
|
||||||
|
$this->logger->info("Error: Los datos del cliente no pudieron ser procesados." . PHP_EOL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->createCustomerStripe($notificationData, $stripe, $baseUri, $UCRMAPIToken);
|
||||||
|
}
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * implement in subclass with the specific messaging provider
|
||||||
|
// * @see TwilioNotifierFacade::sendWhatsApp()
|
||||||
|
// */
|
||||||
|
abstract protected function sendWhatsApp(
|
||||||
|
string $message
|
||||||
|
): void;
|
||||||
|
|
||||||
|
|
||||||
|
function createCustomerStripe($notificationData, $stripe, $baseUri, $token): bool
|
||||||
|
{
|
||||||
|
$this->ucrmApi = UcrmApi::create();
|
||||||
|
$this->logger->info("Creando el Customer Stripe" . PHP_EOL);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$ucrm_client_id = $notificationData->clientData['id'];
|
||||||
|
$clientCRMContacts = $notificationData->clientData['contacts'];
|
||||||
|
|
||||||
|
$firstName = $notificationData->clientData['firstName']; //obtenemos nombre del cliente y lo almacenamos en una variable
|
||||||
|
$lastName = $notificationData->clientData['lastName']; //obtenemos apellidos del cliente y lo almacenamos en una variable
|
||||||
|
$this->logger->info('El cliente a procesar es : ' . $firstName . ' ' . $lastName . PHP_EOL); //impresión de control para ver el nombre del cliente a procesar en consola
|
||||||
|
|
||||||
|
$cadenaNotificationData = json_encode($notificationData);
|
||||||
|
$this->logger->info("Datos notificationData: " . $cadenaNotificationData . PHP_EOL);
|
||||||
|
foreach ($clientCRMContacts as $contact) { //aquí revisamos los datos de contacto del cliente, como pueden ser uno o varios se hace uso del foreach
|
||||||
|
$this->logger->info('Ya dentro del FOREACH!!! ' . PHP_EOL);
|
||||||
|
|
||||||
|
$phone = ''; //variable para almacenar el número de teléfono del cliente que se mandará a su cuenta de Stripe
|
||||||
|
|
||||||
|
foreach ($contact['types'] as $type) { //revisamos el tipo de contacto
|
||||||
|
|
||||||
|
$this->logger->info('REVISANDO EL PRIMER CONTACTO!!! ' . PHP_EOL);
|
||||||
|
if ($type['name'] === "WhatsApp") { //si es de tipo whatsapp..
|
||||||
|
//print_r("Encontré un tipo de Contacto para WhatsAapp" . PHP_EOL);
|
||||||
|
$phone = $contact['phone']; //se asigna como número de teléfono
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
$phone = $contact['phone']; //Si no encuentra un tipo de contacto como Whatsapp entonces el último número de celular obtenido es el que se envía
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$email = $this->validarEmail($contact['email']); //validamos el email del cliente mediante la función validarEmail para que en caso de que no esté bien formado lo ponga en blanco
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->logger->info('ahora se procede a validar el teléfono!!! ' . PHP_EOL);
|
||||||
|
|
||||||
|
//si la variable $phone no esta vacia o null se valida con la funcion validarNumeroTelefono
|
||||||
|
if ($phone == '') {
|
||||||
|
$this->logger->info('El número de teléfono está vacío o no es válido.' . PHP_EOL);
|
||||||
|
//se manda a crear pero sin numero de teléfono
|
||||||
|
$this->logger->info('AHORA SE MANDA A CREAR EL CLIENTE A STRIPE!!! ' . PHP_EOL);
|
||||||
|
$result = $stripe->customers->create([
|
||||||
|
"description" => "Cliente SIIP CRM con client_id: " . $ucrm_client_id,
|
||||||
|
"name" => $firstName . ' ' . $lastName,
|
||||||
|
"email" => $email,
|
||||||
|
'preferred_locales' => ['es-419']
|
||||||
|
]); //aquí se contruye la petición de creación de un customer en Stripe y se consume la API
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$phone = $this->validarNumeroTelefono($phone); //validamos y procesamos el número de celular del cliente para que se vaya a 10 dígitos ya que Stripe por si mismo les agrega el +52
|
||||||
|
$this->logger->info('AHORA SE MANDA A CREAR EL CLIENTE A STRIPE!!! ' . PHP_EOL);
|
||||||
|
$result = $stripe->customers->create([
|
||||||
|
"description" => "Cliente SIIP CRM con client_id: " . $ucrm_client_id,
|
||||||
|
"name" => $firstName . ' ' . $lastName,
|
||||||
|
"phone" => $phone,
|
||||||
|
"email" => $email,
|
||||||
|
'preferred_locales' => ['es-419']
|
||||||
|
]); //aquí se contruye la petición de creación de un customer en Stripe y se consume la API
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->logger->info(json_encode($result) . PHP_EOL); //imprimir respuesta de creación del cliente
|
||||||
|
//ejemplo de respuesta de stripe cuando se crea el cliente: {"id":"cus_Rkh9CoRTpjlZUu","object":"customer","address":null,"balance":0,"created":1739250682,"currency":null,"default_source":null,"delinquent":false,"description":"Cliente SIIP CRM con client_id: 167","discount":null,"email":null,"invoice_prefix":"5017E9D3","invoice_settings":{"custom_fields":null,"default_payment_method":null,"footer":null,"rendering_options":null},"livemode":false,"metadata":[],"name":"Javier Alatorre","next_invoice_sequence":1,"phone":"4181878106","preferred_locales":["es-419"],"shipping":null,"tax_exempt":"none","test_clock":null}
|
||||||
|
|
||||||
|
//validar si se creo el cliente con la API de Stripe $stripe->customers->create
|
||||||
|
if (!isset($result['id'])) { //si no existe el ID del cliente en la respuesta de Stripe entonces se manda un mensaje de error
|
||||||
|
$this->logger->info('Error al crear el cliente en Stripe: ' . json_encode($result) . PHP_EOL);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$stripe_customer_id = $result['id']; //obtenemos el customer id de Stripe recibido por medio del consumo del API y lo asignamos a una variable $stripe_customer_id
|
||||||
|
sleep(2);
|
||||||
|
$result2 = $stripe->customers->update(
|
||||||
|
$stripe_customer_id,
|
||||||
|
['metadata' => ['ucrm_client_id' => '' . $ucrm_client_id]]
|
||||||
|
);//aquí se contruye la petición de actualización de un customer en Stripe para agregarle los metadatos y se consume la API, requiere el ID del Customer, por eso antes lo almacenamos en la variable $stripe_customer_id
|
||||||
|
|
||||||
|
$this->logger->info(json_encode($result2) . PHP_EOL); // imprimir respuesta de actualización del metadata del cliente
|
||||||
|
sleep(2);
|
||||||
|
$result3 = $stripe->customers->createFundingInstructions(
|
||||||
|
$stripe_customer_id,
|
||||||
|
[
|
||||||
|
'currency' => 'mxn',
|
||||||
|
'funding_type' => 'bank_transfer',
|
||||||
|
'bank_transfer' => ['type' => 'mx_bank_transfer'],
|
||||||
|
]
|
||||||
|
); //aquí se contruye la petición de creación de Instrucciones de Fondeo de un customer en Stripe (O su metodo de pago como cuenta bancaria para transferencias) y se consume la API
|
||||||
|
|
||||||
|
$this->logger->info(json_encode($result3) . PHP_EOL); //imprimir respuesta de asignación de cuenta bancaria de transferencia
|
||||||
|
|
||||||
|
// Acceder al valor de "clabe" para BANORTE
|
||||||
|
$clabeInterbancaria = $result3['bank_transfer']['financial_addresses'][0]['spei']['clabe']; //Asignamos la clabe obtenida con la API de Stripe con la solicitud anterior a la variable $clabe
|
||||||
|
$stripeID = $this->stripeCustomAttributeID;
|
||||||
|
$clabeInterbancariaID = $this->clabeInterbancariaBanamexID;
|
||||||
|
|
||||||
|
$customer = $stripe->customers->update(
|
||||||
|
$stripe_customer_id,
|
||||||
|
[
|
||||||
|
'metadata' => [
|
||||||
|
'clabe' => $clabeInterbancaria, // Nueva clabe
|
||||||
|
],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->logger->info("CLABE guardada en metadata: " . $customer->metadata->clabe . PHP_EOL);
|
||||||
|
|
||||||
|
|
||||||
|
$json_data_patch = '{
|
||||||
|
"attributes": [
|
||||||
|
{
|
||||||
|
"value": "' . $stripe_customer_id . '",
|
||||||
|
"customAttributeId":' . $stripeID . '
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": "' . $clabeInterbancaria . '",
|
||||||
|
"customAttributeId":' . $clabeInterbancariaID . '
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
}'; //JSON para hacer patch de los custom fields del cliente en el UISCP CRM, Campo para el Stripe Customer ID y la Clabe interbancaria
|
||||||
|
|
||||||
|
//valor de $json_data_patch en json
|
||||||
|
//$this->logger->info("Valor de json_data_patch: " . $json_data_patch . PHP_EOL);
|
||||||
|
// try{
|
||||||
|
// $responsepatchCRM= $this->ucrmApi->patch("clients/$ucrm_client_id", [
|
||||||
|
// "attributes" => [
|
||||||
|
// [
|
||||||
|
// "value" => $stripe_customer_id,
|
||||||
|
// "customAttributeId" => $stripeID
|
||||||
|
// ],
|
||||||
|
// [
|
||||||
|
// "value" => $clabeInterbancaria,
|
||||||
|
// "customAttributeId" => $clabeInterbancariaID
|
||||||
|
// ]
|
||||||
|
// ]
|
||||||
|
// ]); //aquí se contruye la petición para hacer patch hacia el cliente en sus custom fields con la API del UISP UCRM
|
||||||
|
// $this->logger->info("Se actualizó el cliente en UCRM con el Stripe Customer ID y la Clabe Interbancaria." . PHP_EOL);
|
||||||
|
// $this->logger->info(json_encode($responsepatchCRM) . PHP_EOL); //imprimir respuesta del patch de CRM con la clabe y Customer ID Stripe
|
||||||
|
// }catch (GuzzleException $e) {
|
||||||
|
// $this->logger->info("Error al hacer el patch al cliente en UCRM: " . $e->getMessage() . PHP_EOL);
|
||||||
|
// return false; // Return false if patch fails
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
$clientguzz = new Client(); //instancia de cliente GuzzleHttp para consumir API UISP CRM
|
||||||
|
try {
|
||||||
|
//aquí se contruye la petición para hacer patch hacia el cliente en sus custom fields con la API del UISP UCRM
|
||||||
|
$responseCRM = $clientguzz->patch($baseUri . 'clients/' . $ucrm_client_id, [
|
||||||
|
'json' => json_decode($json_data_patch, true),
|
||||||
|
'headers' => [
|
||||||
|
'X-Auth-App-Key' => $token, // Cambia el nombre de la cabecera de autorización
|
||||||
|
'Accept' => 'application/json', // Indica que esperamos una respuesta en formato JSON
|
||||||
|
],
|
||||||
|
'verify' => false,
|
||||||
|
]);
|
||||||
|
|
||||||
|
|
||||||
|
} catch (GuzzleException $error) {
|
||||||
|
$this->logger->info("Error al hacer el patch al CRM: " . $error->getMessage() . PHP_EOL);
|
||||||
|
return false; // Return false if patch fails
|
||||||
|
}
|
||||||
|
$this->logger->info(json_encode($responseCRM) . PHP_EOL); //imprimir respuesta del patch de CRM con la clabe y Customer ID Stripe
|
||||||
|
|
||||||
|
return true; // Return true if all operations succeed
|
||||||
|
}
|
||||||
|
|
||||||
|
function validarNumeroTelefono($telefono)
|
||||||
|
{
|
||||||
|
// Eliminar espacios y guiones
|
||||||
|
$telefono = preg_replace('/\s+|-/', '', $telefono);
|
||||||
|
|
||||||
|
// Eliminar caracteres no numéricos
|
||||||
|
$telefono = preg_replace('/\D/', '', $telefono);
|
||||||
|
|
||||||
|
// Verificar si quedan exactamente 10 dígitos
|
||||||
|
if (strlen($telefono) === 10) {
|
||||||
|
// Retornar el número de teléfono correctamente formateado
|
||||||
|
return $telefono;
|
||||||
|
} elseif (strlen($telefono) > 10) {
|
||||||
|
// Si el número tiene más de 10 dígitos, quitar los primeros
|
||||||
|
return substr($telefono, -10);
|
||||||
|
} else {
|
||||||
|
// Si el número tiene menos de 10 dígitos, retornar cadena vacía
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function validarEmail($email)
|
||||||
|
{
|
||||||
|
$this->logger->info('SE VALIDA EL EMAIL!!! ' . PHP_EOL);
|
||||||
|
// Utilizar la función filter_var con el filtro FILTER_VALIDATE_EMAIL para validar el email
|
||||||
|
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
|
||||||
|
// Si el email es válido, devolver el email
|
||||||
|
return $email;
|
||||||
|
} else {
|
||||||
|
// Si el email no es válido, devolver una cadena vacía
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
98
archivos_webhook_destino/src/Facade/AbstractUpdateClientFacade.php
Executable file
98
archivos_webhook_destino/src/Facade/AbstractUpdateClientFacade.php
Executable file
@ -0,0 +1,98 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace SmsNotifier\Facade;
|
||||||
|
|
||||||
|
use SmsNotifier\Data\NotificationData;
|
||||||
|
use SmsNotifier\Factory\MessageTextFactory;
|
||||||
|
use SmsNotifier\Service\Logger;
|
||||||
|
use SmsNotifier\Service\SmsNumberProvider;
|
||||||
|
use Twilio\Exceptions\HttpException;
|
||||||
|
use SmsNotifier\Facade\ClientCallBellAPI;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* send message to client's number
|
||||||
|
*/
|
||||||
|
|
||||||
|
abstract class AbstractUpdateClientFacade
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Logger
|
||||||
|
*/
|
||||||
|
protected $logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var MessageTextFactory
|
||||||
|
*/
|
||||||
|
protected $messageTextFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var SmsNumberProvider
|
||||||
|
*/
|
||||||
|
protected $smsNumberProvider;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
Logger $logger,
|
||||||
|
MessageTextFactory $messageTextFactory,
|
||||||
|
SmsNumberProvider $smsNumberProvider
|
||||||
|
) {
|
||||||
|
$this->logger = $logger;
|
||||||
|
$this->messageTextFactory = $messageTextFactory;
|
||||||
|
$this->smsNumberProvider = $smsNumberProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* sets up the body and uses the implementation's sendMessage() to send
|
||||||
|
*/
|
||||||
|
public function notify(NotificationData $notificationData): void
|
||||||
|
{
|
||||||
|
$clientSmsNumber = $this->smsNumberProvider->getUcrmClientNumber($notificationData); //renombrar variables
|
||||||
|
|
||||||
|
if (empty($clientSmsNumber)) {
|
||||||
|
$this->logger->warning('No SMS number found for client: ' . $notificationData->clientId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// $messageBody = $this->messageTextFactory->createBody($notificationData);
|
||||||
|
// if (! $messageBody) {
|
||||||
|
// $this->logger->info('No text configured for event: ' . $notificationData->eventName);
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
$this->logger->debug(sprintf('llego al llamado de sendwhatsapp con client_id: %s y número de celular: %s', $notificationData->clientId, $clientSmsNumber));
|
||||||
|
//$this->sendMessage($notificationData, $clientSmsNumber, $messageBody);
|
||||||
|
//$this->sendWhatsApp($notificationData, $clientSmsNumber);
|
||||||
|
|
||||||
|
$client_callbell_api = new ClientCallBellAPI();
|
||||||
|
$client_callbell_api->sendMessageWhatsApp($clientSmsNumber, $notificationData);
|
||||||
|
$response_getContactCallBell=json_decode($client_callbell_api->getContactWhatsapp($clientSmsNumber));
|
||||||
|
$client_callbell_api->patchWhatsapp($response_getContactCallBell->contact->uuid,$notificationData);
|
||||||
|
|
||||||
|
} catch (HttpException $httpException) {
|
||||||
|
//$this->logger->debug('Ocurrio un error en el try catch');
|
||||||
|
$this->logger->error($httpException->getCode() . ' ' . $httpException->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* implement in subclass with the specific messaging provider
|
||||||
|
* @see TwilioNotifierFacade::sendMessage()
|
||||||
|
*/
|
||||||
|
abstract protected function sendMessage(
|
||||||
|
NotificationData $notificationData,
|
||||||
|
string $clientSmsNumber,
|
||||||
|
string $messageBody
|
||||||
|
): void;
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * implement in subclass with the specific messaging provider
|
||||||
|
// * @see TwilioNotifierFacade::sendWhatsApp()
|
||||||
|
// */
|
||||||
|
// abstract protected function sendWhatsApp(
|
||||||
|
// NotificationData $notificationData,
|
||||||
|
// string $clientSmsNumber
|
||||||
|
// ): void;
|
||||||
|
}
|
||||||
1346
archivos_webhook_destino/src/Facade/ClientCallBellAPI.php
Executable file
1346
archivos_webhook_destino/src/Facade/ClientCallBellAPI.php
Executable file
File diff suppressed because it is too large
Load Diff
58
archivos_webhook_destino/src/Facade/PluginNotifierFacade.php
Executable file
58
archivos_webhook_destino/src/Facade/PluginNotifierFacade.php
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace SmsNotifier\Facade;
|
||||||
|
|
||||||
|
use SmsNotifier\Data\NotificationData;
|
||||||
|
use SmsNotifier\Data\PluginData;
|
||||||
|
use SmsNotifier\Factory\MessageTextFactory;
|
||||||
|
use SmsNotifier\Service\Logger;
|
||||||
|
use SmsNotifier\Service\OptionsManager;
|
||||||
|
use SmsNotifier\Service\SmsNumberProvider;
|
||||||
|
use Twilio\Rest\Client;
|
||||||
|
|
||||||
|
|
||||||
|
class PluginNotifierFacade extends AbstractStripeOperationsFacade
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Client
|
||||||
|
*/
|
||||||
|
private $twilioClient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var PluginData
|
||||||
|
*/
|
||||||
|
private $pluginData;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
Logger $logger,
|
||||||
|
MessageTextFactory $messageTextFactory,
|
||||||
|
SmsNumberProvider $smsNumberProvider,
|
||||||
|
OptionsManager $optionsManager
|
||||||
|
) {
|
||||||
|
parent::__construct($logger, $messageTextFactory, $smsNumberProvider);
|
||||||
|
// load config data
|
||||||
|
$this->pluginData = $optionsManager->load();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Send WhatsApp through the CallBell API
|
||||||
|
*/
|
||||||
|
protected function sendWhatsApp(
|
||||||
|
string $message,
|
||||||
|
): void {
|
||||||
|
$this->logger->debug('Enviando mensaje desde twilio notifier facade: '.$message);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Phone number of sender - required by Twilio. In this plugin, we only load it from config.
|
||||||
|
*/
|
||||||
|
private function getSenderNumber(): string
|
||||||
|
{
|
||||||
|
return $this->pluginData->twilioSmsNumber;
|
||||||
|
}
|
||||||
|
}
|
||||||
58
archivos_webhook_destino/src/Facade/PluginOxxoNotifierFacade.php
Executable file
58
archivos_webhook_destino/src/Facade/PluginOxxoNotifierFacade.php
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace SmsNotifier\Facade;
|
||||||
|
|
||||||
|
use SmsNotifier\Data\NotificationData;
|
||||||
|
use SmsNotifier\Data\PluginData;
|
||||||
|
use SmsNotifier\Factory\MessageTextFactory;
|
||||||
|
use SmsNotifier\Service\Logger;
|
||||||
|
use SmsNotifier\Service\OptionsManager;
|
||||||
|
use SmsNotifier\Service\SmsNumberProvider;
|
||||||
|
use Twilio\Rest\Client;
|
||||||
|
|
||||||
|
|
||||||
|
class PluginOxxoNotifierFacade extends AbstractOxxoOperationsFacade
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Client
|
||||||
|
*/
|
||||||
|
private $twilioClient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var PluginData
|
||||||
|
*/
|
||||||
|
private $pluginData;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
Logger $logger,
|
||||||
|
MessageTextFactory $messageTextFactory,
|
||||||
|
SmsNumberProvider $smsNumberProvider,
|
||||||
|
OptionsManager $optionsManager
|
||||||
|
) {
|
||||||
|
parent::__construct($logger, $messageTextFactory, $smsNumberProvider);
|
||||||
|
// load config data
|
||||||
|
$this->pluginData = $optionsManager->load();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Send WhatsApp through the CallBell API
|
||||||
|
*/
|
||||||
|
protected function sendWhatsApp(
|
||||||
|
string $message,
|
||||||
|
): void {
|
||||||
|
$this->logger->debug('Enviando mensaje desde twilio notifier facade: '.$message);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Phone number of sender - required by Twilio. In this plugin, we only load it from config.
|
||||||
|
*/
|
||||||
|
private function getSenderNumber(): string
|
||||||
|
{
|
||||||
|
return $this->pluginData->twilioSmsNumber;
|
||||||
|
}
|
||||||
|
}
|
||||||
93
archivos_webhook_destino/src/Facade/TwilioNotifierFacade.php
Executable file
93
archivos_webhook_destino/src/Facade/TwilioNotifierFacade.php
Executable file
@ -0,0 +1,93 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace SmsNotifier\Facade;
|
||||||
|
|
||||||
|
use SmsNotifier\Data\NotificationData;
|
||||||
|
use SmsNotifier\Data\PluginData;
|
||||||
|
use SmsNotifier\Factory\MessageTextFactory;
|
||||||
|
use SmsNotifier\Service\Logger;
|
||||||
|
use SmsNotifier\Service\OptionsManager;
|
||||||
|
use SmsNotifier\Service\SmsNumberProvider;
|
||||||
|
use Twilio\Rest\Client;
|
||||||
|
use SmsNotifier\Facade\ClientCallBellAPI;
|
||||||
|
|
||||||
|
class TwilioNotifierFacade extends AbstractMessageNotifierFacade
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Client
|
||||||
|
*/
|
||||||
|
private $twilioClient;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var PluginData
|
||||||
|
*/
|
||||||
|
private $pluginData;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
Logger $logger,
|
||||||
|
MessageTextFactory $messageTextFactory,
|
||||||
|
SmsNumberProvider $smsNumberProvider,
|
||||||
|
OptionsManager $optionsManager
|
||||||
|
) {
|
||||||
|
parent::__construct($logger, $messageTextFactory, $smsNumberProvider);
|
||||||
|
// load config data
|
||||||
|
$this->pluginData = $optionsManager->load();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get Twilio SMS API object (unless it's already initialized)
|
||||||
|
*/
|
||||||
|
public function getTwilioClient(): Client
|
||||||
|
{
|
||||||
|
if (!$this->twilioClient) {
|
||||||
|
$this->twilioClient = new Client(
|
||||||
|
$this->pluginData->token_callbell
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $this->twilioClient;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Send WhatsApp through the CallBell API
|
||||||
|
*/
|
||||||
|
protected function sendWhatsApp(
|
||||||
|
string $message,
|
||||||
|
): void {
|
||||||
|
$this->logger->debug('Enviando mensaje desde twilio notifier facade: '.$message);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Send message through the Twilio client
|
||||||
|
*/
|
||||||
|
protected function sendMessage(
|
||||||
|
NotificationData $notificationData,
|
||||||
|
string $clientSmsNumber,
|
||||||
|
string $messageBody
|
||||||
|
): void {
|
||||||
|
$this->logger->debug(sprintf('Sending: %s', $messageBody));
|
||||||
|
|
||||||
|
$messageInstance = $this->getTwilioClient()->messages->create(
|
||||||
|
$clientSmsNumber,
|
||||||
|
[
|
||||||
|
'from' => $this->getSenderNumber(),
|
||||||
|
'body' => $messageBody,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->logger->debug((string) $messageInstance);
|
||||||
|
$this->logger->info(sprintf('Twilio status: %s, message id: %s', $messageInstance->status, $messageInstance->sid));
|
||||||
|
if ($messageInstance->errorCode) {
|
||||||
|
$this->logger->warning(sprintf('Twilio error: %s %s', $messageInstance->errorCode, $messageInstance->errorMessage));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Phone number of sender - required by Twilio. In this plugin, we only load it from config.
|
||||||
|
*/
|
||||||
|
private function getSenderNumber(): string
|
||||||
|
{
|
||||||
|
return $this->pluginData->twilioSmsNumber;
|
||||||
|
}
|
||||||
|
}
|
||||||
5
archivos_webhook_destino/src/Facade/pruebas_ucrm_api.php
Executable file
5
archivos_webhook_destino/src/Facade/pruebas_ucrm_api.php
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
<?php
|
||||||
|
use Ubnt\UcrmPluginSdk\Service\UcrmApi;
|
||||||
|
|
||||||
|
|
||||||
|
$$ucrmApi = UcrmApi::create();
|
||||||
699
archivos_webhook_destino/src/Plugin.php
Executable file
699
archivos_webhook_destino/src/Plugin.php
Executable file
@ -0,0 +1,699 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare (strict_types = 1);
|
||||||
|
|
||||||
|
namespace SmsNotifier;
|
||||||
|
|
||||||
|
use Psr\Log\LogLevel;
|
||||||
|
use SmsNotifier\Facade\PluginNotifierFacade;
|
||||||
|
use SmsNotifier\Facade\PluginOxxoNotifierFacade;
|
||||||
|
use SmsNotifier\Facade\TwilioNotifierFacade;
|
||||||
|
use SmsNotifier\Factory\NotificationDataFactory;
|
||||||
|
use SmsNotifier\Service\Logger;
|
||||||
|
use SmsNotifier\Service\OptionsManager;
|
||||||
|
use SmsNotifier\Service\PluginDataValidator;
|
||||||
|
use Twilio\Exceptions\TwilioException;
|
||||||
|
use Ubnt\UcrmPluginSdk\Service\UcrmApi;
|
||||||
|
|
||||||
|
class Plugin
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Logger
|
||||||
|
*/
|
||||||
|
private $logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var OptionsManager
|
||||||
|
*/
|
||||||
|
private $optionsManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var PluginDataValidator
|
||||||
|
*/
|
||||||
|
private $pluginDataValidator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var PluginNotifierFacade
|
||||||
|
*/
|
||||||
|
private $pluginNotifierFacade;
|
||||||
|
/**
|
||||||
|
* @var PluginOxxoNotifierFacade
|
||||||
|
*/
|
||||||
|
private $pluginOxxoNotifierFacade;
|
||||||
|
/**
|
||||||
|
* @var TwilioNotifierFacade
|
||||||
|
*/
|
||||||
|
private $notifierFacade;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var NotificationDataFactory
|
||||||
|
*/
|
||||||
|
private $notificationDataFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var UcrmApi
|
||||||
|
*/
|
||||||
|
protected $ucrmApi;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
Logger $logger,
|
||||||
|
OptionsManager $optionsManager,
|
||||||
|
PluginDataValidator $pluginDataValidator,
|
||||||
|
TwilioNotifierFacade $notifierFacade,
|
||||||
|
PluginNotifierFacade $pluginNotifierFacade,
|
||||||
|
PluginOxxoNotifierFacade $pluginOxxoNotifierFacade,
|
||||||
|
NotificationDataFactory $notificationDataFactory
|
||||||
|
) {
|
||||||
|
$this->logger = $logger;
|
||||||
|
$this->optionsManager = $optionsManager;
|
||||||
|
$this->pluginDataValidator = $pluginDataValidator;
|
||||||
|
$this->notifierFacade = $notifierFacade;
|
||||||
|
$this->pluginNotifierFacade = $pluginNotifierFacade;
|
||||||
|
$this->pluginOxxoNotifierFacade = $pluginOxxoNotifierFacade;
|
||||||
|
$this->notificationDataFactory = $notificationDataFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function run(): void
|
||||||
|
{
|
||||||
|
// $hola = PHP_SAPI;
|
||||||
|
// $this->logger->info('valor de PHP_SAPI: ' . $hola);
|
||||||
|
if (PHP_SAPI === 'fpm-fcgi') {
|
||||||
|
// $this->logger->debug('Whatsapp over HTTP started');
|
||||||
|
$this->processHttpRequest();
|
||||||
|
// $this->logger->debug('HTTP request processing ended.');
|
||||||
|
} elseif (PHP_SAPI === 'cli') {
|
||||||
|
// $this->logger->debug('Whatsapp over CLI started');
|
||||||
|
$this->processCli();
|
||||||
|
// $this->logger->debug('CLI process ended.');
|
||||||
|
} else {
|
||||||
|
throw new \UnexpectedValueException('Unknown PHP_SAPI type: ' . PHP_SAPI);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private function processCli(): void
|
||||||
|
{
|
||||||
|
if ($this->pluginDataValidator->validate()) {
|
||||||
|
$this->logger->info('Validating config');
|
||||||
|
$this->optionsManager->load();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function processHttpRequest(): void
|
||||||
|
{
|
||||||
|
$pluginData = $this->optionsManager->load();
|
||||||
|
if ($pluginData->logging_level) {
|
||||||
|
$this->logger->setLogLevelThreshold(LogLevel::DEBUG);
|
||||||
|
}
|
||||||
|
|
||||||
|
$userInput = file_get_contents('php://input'); //se recibe el json del webhook
|
||||||
|
//imprimir el json del webhook
|
||||||
|
$this->logger->debug('valor del webhook: ' . $userInput . PHP_EOL);
|
||||||
|
|
||||||
|
if (! $userInput) {
|
||||||
|
$this->logger->warning('no input');
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$jsonData = @json_decode($userInput, true, 50);
|
||||||
|
|
||||||
|
if (! isset($jsonData['uuid'])) {
|
||||||
|
$this->logger->info('No UUID found in the webhook data');
|
||||||
|
//$this->logger->error('JSON error: ' . json_last_error_msg());
|
||||||
|
|
||||||
|
//return;
|
||||||
|
|
||||||
|
// Maneja el evento del webhook externo
|
||||||
|
if ($jsonData) {
|
||||||
|
switch ($jsonData['type']) {
|
||||||
|
case 'customer_cash_balance_transaction.created':
|
||||||
|
if ($jsonData['data']['object']['type'] === 'funded') {
|
||||||
|
$this->logger->info('Evento de transferencia de un cliente recibido: ' . json_encode($jsonData) . PHP_EOL);
|
||||||
|
$this->pluginNotifierFacade->createPaymentIntent($jsonData);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($jsonData['data']['object']['type'] === 'applied_to_payment') {
|
||||||
|
$this->logger->info('Se aplicó el saldo en Stripe de un pago: ' . json_encode($jsonData) . PHP_EOL);
|
||||||
|
|
||||||
|
}elseif ($jsonData['data']['object']['type'] === 'unapplied_from_payment'){
|
||||||
|
//ejemplo de json para transferencia de dinero cancelada: {"id":"evt_1RlEGgEFY1WEUtgR6Bp2DzDP","object":"event","api_version":"2023-10-16","created":1752606717,"data":{"object":{"id":"ccsbtxn_1RlEGfEFY1WEUtgRv8jAUGmE","object":"customer_cash_balance_transaction","created":1752606717,"currency":"mxn","customer":"cus_PetN1dhr4rx0kX","ending_balance":18000,"livemode":false,"net_amount":18000,"type":"unapplied_from_payment","unapplied_from_payment":{"payment_intent":"pi_3RlDPdEFY1WEUtgR1JBgNhTQ"}}},"livemode":false,"pending_webhooks":2,"request":{"id":"req_954mskVBfAI0jn","idempotency_key":"749518f6-baa0-4ae9-99e4-8029a35719aa"},"type":"customer_cash_balance_transaction.created"}
|
||||||
|
$paymentIntentId = $jsonData['data']['object']['unapplied_from_payment']['payment_intent'];
|
||||||
|
//Se canceló una transferencia de dinero, imprimir que se canceló y además el monto neto
|
||||||
|
$this->logger->warning('Evento de transferencia cancelada para el pago: ' . $paymentIntentId . PHP_EOL);
|
||||||
|
$this->logger->warning('Monto neto de la transferencia cancelada: ' . $jsonData['data']['object']['net_amount'] . PHP_EOL);
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'payout.failed':
|
||||||
|
$this->logger->info('Evento de transferencia fallida encontrado: ' . json_encode($jsonData) . PHP_EOL);
|
||||||
|
//imprimir detalles del fallo
|
||||||
|
$this->logger->info('Detalles del fallo: ' . json_encode($jsonData));
|
||||||
|
break;
|
||||||
|
case 'payment_intent.partially_funded':
|
||||||
|
$this->logger->info('Evento de pago parcialmente financiado encontrado: ' . json_encode($jsonData) . PHP_EOL);
|
||||||
|
//imprimir detalles del evento o pago
|
||||||
|
$this->logger->info('Detalles del evento: ' . json_encode($jsonData));
|
||||||
|
break;
|
||||||
|
case 'inbound_payment.payment_attempt':
|
||||||
|
//$this->logger->info('Evento de Pago de OXXO recibido: ' . json_encode($jsonData) . PHP_EOL);
|
||||||
|
break;
|
||||||
|
case 'cash_balance.funds_available':
|
||||||
|
$this->logger->info('Evento de Pago de fondos disponibles recibido: ' . json_encode($jsonData) . PHP_EOL);
|
||||||
|
break;
|
||||||
|
case 'energy.alert':
|
||||||
|
$this->logger->info('Evento de Energía recibido: ' . $jsonData['message'] . PHP_EOL);
|
||||||
|
break;
|
||||||
|
case 'oxxo.request':
|
||||||
|
$this->logger->info('Evento de solicitud de referencia de oxxo recibido' . PHP_EOL);
|
||||||
|
|
||||||
|
// Construir la URL basada en el "client_id"
|
||||||
|
// $url = "https://siip.mx/wp/wp-content/uploads/img/voucher.png";
|
||||||
|
if (! empty($jsonData['amount'])) {
|
||||||
|
$this->logger->info('Referencia personalizada, Valor del monto: ' . $jsonData['amount'] . PHP_EOL);
|
||||||
|
$intentos = 0;
|
||||||
|
do {
|
||||||
|
// if ($intentos > 1) {
|
||||||
|
// sleep(2);
|
||||||
|
// }
|
||||||
|
$responseOxxo = $this->pluginOxxoNotifierFacade->createOxxoPaymentIntent($jsonData, $jsonData['amount']);
|
||||||
|
$this->logger->info('Referencia personalizada, Valor de la respuesta: ' . json_encode($responseOxxo) . PHP_EOL);
|
||||||
|
//El array asociativo $responseOxxo es un array asosiativo con los siguientes campos: oxxo_reference, error, failDescription, clientID, amount
|
||||||
|
$intentos++;
|
||||||
|
} while (strpos($responseOxxo['url'], 'https') !== 0 && $intentos < 3); //Mientras la url no contenga https y el número de intentos sea menor a 3
|
||||||
|
} else {
|
||||||
|
$intentos = 0;
|
||||||
|
do {
|
||||||
|
// if ($intentos > 1) {
|
||||||
|
// sleep(2);
|
||||||
|
// }
|
||||||
|
$responseOxxo = $this->pluginOxxoNotifierFacade->createOxxoPaymentIntent($jsonData);
|
||||||
|
//El array asociativo $responseOxxo es un array asosiativo con los siguientes campos: oxxo_reference, error, failDescription, clientID, amount
|
||||||
|
$intentos++;
|
||||||
|
} while (strpos($responseOxxo['url'], 'https') !== 0 && $intentos < 3); //Mientras la url no contenga https y el número de intentos sea menor a 3
|
||||||
|
}
|
||||||
|
|
||||||
|
//El array asociativo $responseOxxo es un array asosiativo con los siguientes campos: oxxo_reference, error, failDescription, clientID, amount
|
||||||
|
//Si la respuesta no contiene https, se genera un error
|
||||||
|
if (strpos($responseOxxo['url'], 'https') !== 0) {
|
||||||
|
//this->logger->error('Error al crear la referencia de OXXO: ' . $responseOxxo);
|
||||||
|
//crear un json con variable $response que contenga las claves y valores del array $responseOxxo los cuales son: oxxo_reference, error, failDescription, clientID, clientFullName amount
|
||||||
|
$response = '{' .
|
||||||
|
'"url": "' . $responseOxxo['url'] . '",' .
|
||||||
|
'"oxxo_reference": "' . $responseOxxo['oxxo_reference'] . '",' .
|
||||||
|
'"voucher_image_url": "' . $responseOxxo['voucher_image_url'] . '",' .
|
||||||
|
'"error": "' . $responseOxxo['error'] . '",' .
|
||||||
|
'"failDescription": "' . $responseOxxo['failDescription'] . '",' .
|
||||||
|
'"clientID": "' . $responseOxxo['clientID'] . '",' .
|
||||||
|
'"clientFullName": "' . $responseOxxo['clientFullName'] . '",' .
|
||||||
|
'"amount": "' . $responseOxxo['amount'] . '"' .
|
||||||
|
'}';
|
||||||
|
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
echo $response;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
//crear un json con variable $response que contenga las claves y valores del array $responseOxxo los cuales son: oxxo_reference, error, failDescription, clientID, clientFullName, amount
|
||||||
|
|
||||||
|
$response = '{' .
|
||||||
|
'"url": "' . $responseOxxo['url'] . '",' .
|
||||||
|
'"oxxo_reference": "' . $responseOxxo['oxxo_reference'] . '",' .
|
||||||
|
'"voucher_image_url": "' . $responseOxxo['voucher_image_url'] . '",' .
|
||||||
|
'"error": "' . $responseOxxo['error'] . '",' .
|
||||||
|
'"failDescription": "' . $responseOxxo['failDescription'] . '",' .
|
||||||
|
'"clientID": "' . $responseOxxo['clientID'] . '",' .
|
||||||
|
'"clientFullName": "' . $responseOxxo['clientFullName'] . '",' .
|
||||||
|
'"amount": "' . $responseOxxo['amount'] . '"' .
|
||||||
|
'}';
|
||||||
|
|
||||||
|
$this->logger->debug('Reponse que se envía a CallBell: ' . $response);
|
||||||
|
// Enviar el encabezado de respuesta como JSON
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
|
||||||
|
// Enviar la respuesta en formato JSON
|
||||||
|
//echo json_encode($response);
|
||||||
|
echo $response;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// $event_json = json_decode($userInput);
|
||||||
|
// $webhook_string = json_encode($event_json);
|
||||||
|
// $this->logger->debug("El valor de webhook_string: " . $webhook_string . PHP_EOL);
|
||||||
|
|
||||||
|
$notification = $this->notificationDataFactory->getObject($jsonData);
|
||||||
|
$this->logger->debug('valor el evento recibido por webhook: ' . $notification->eventName . PHP_EOL);
|
||||||
|
$this->logger->debug('Valor de JSON: ' . json_encode($jsonData) . PHP_EOL);
|
||||||
|
|
||||||
|
if ($notification->changeType === 'test') {
|
||||||
|
|
||||||
|
$configManager = \Ubnt\UcrmPluginSdk\Service\PluginConfigManager::create();
|
||||||
|
$config = $configManager->loadConfig();
|
||||||
|
|
||||||
|
$this->logger->info('Webhook test successful.');
|
||||||
|
|
||||||
|
return;
|
||||||
|
} else if ($notification->changeType === 'paperless.update') {
|
||||||
|
//imprimir el webhook json
|
||||||
|
$this->logger->info('Webhook de paperless update: ' . json_encode($jsonData) . PHP_EOL);
|
||||||
|
}
|
||||||
|
// if (!$notification->clientId) {
|
||||||
|
// $this->logger->warning('No client specified, cannot notify them.');
|
||||||
|
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
$configManager = \Ubnt\UcrmPluginSdk\Service\PluginConfigManager::create();
|
||||||
|
$config = $configManager->loadConfig();
|
||||||
|
// the "exportFormat" key must be defined in plugin's manifest file, see the link above
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
if ($notification->eventName === 'payment.add') {
|
||||||
|
|
||||||
|
$result = json_encode($notification);
|
||||||
|
$this->logger->debug('Notification encodificado en JSON:' . $result . PHP_EOL);
|
||||||
|
|
||||||
|
$datos_payment = $notification->paymentData;
|
||||||
|
$this->logger->debug('valor del payment data: ' . json_encode($datos_payment) . PHP_EOL);
|
||||||
|
$payment_method_id = $notification->paymentData['methodId'];
|
||||||
|
//$this->logger->debug('Metodo de pago: ' . $notification->paymentData['methodId'] . PHP_EOL);
|
||||||
|
|
||||||
|
$payment_method = '';
|
||||||
|
|
||||||
|
switch ($payment_method_id) {
|
||||||
|
|
||||||
|
case '11721cdf-a498-48be-903e-daa67552e4f6':
|
||||||
|
$payment_method = 'Cheque';
|
||||||
|
if ($config['checkPaymentMethodId']) {
|
||||||
|
$this->notifierFacade->verifyPaymentActionToDo($notification);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '6efe0fa8-36b2-4dd1-b049-427bffc7d369':
|
||||||
|
$payment_method = 'Efectivo';
|
||||||
|
if ($config['cashPaymentMethodId']) {
|
||||||
|
$this->notifierFacade->verifyPaymentActionToDo($notification);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '4145b5f5-3bbc-45e3-8fc5-9cda970c62fb':
|
||||||
|
$payment_method = 'Transferencia bancaria';
|
||||||
|
if ($config['bankTransferPaymentMethodId']) {
|
||||||
|
$this->notifierFacade->verifyPaymentActionToDo($notification);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '78e84000-9b5b-44a4-8367-da43df86ce34':
|
||||||
|
$payment_method = 'PayPal';
|
||||||
|
if ($config['paypalPaymentMethodId']) {
|
||||||
|
$this->notifierFacade->verifyPaymentActionToDo($notification);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '6da98bb9-6df7-4c41-8608-5cdd7fde7d5d':
|
||||||
|
$payment_method = 'Tarjeta de crédito PayPal';
|
||||||
|
if ($config['creditCardPaypalPaymentMethodId']) {
|
||||||
|
$this->notifierFacade->verifyPaymentActionToDo($notification);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '1dd098fa-5d63-4c8d-88b7-3c27ffbbb6ae':
|
||||||
|
$payment_method = 'Tarjeta de crédito Stripe';
|
||||||
|
if ($config['creditCardStripePaymentMethodId']) {
|
||||||
|
$this->notifierFacade->verifyPaymentActionToDo($notification);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'b9e1e9d1-5c7b-41d2-b6b2-3e568d700290':
|
||||||
|
$payment_method = 'Suscripción de Stripe (tarjeta de crédito)';
|
||||||
|
if ($config['stripeSubscriptionCreditCardPaymentMethodId']) {
|
||||||
|
$this->notifierFacade->verifyPaymentActionToDo($notification);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '939f7701-00b7-4676-9b1e-17afb268c8ba':
|
||||||
|
$payment_method = 'Suscripción de PayPal';
|
||||||
|
if ($config['paypalSubscriptionPaymentMethodId']) {
|
||||||
|
$this->notifierFacade->verifyPaymentActionToDo($notification);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '1c963e35-df24-444d-95d2-12592d5107e8':
|
||||||
|
$payment_method = 'MercadoPago';
|
||||||
|
if ($config['mercadopagoPaymentMethodId']) {
|
||||||
|
$this->notifierFacade->verifyPaymentActionToDo($notification);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'd8c1eae9-d41d-479f-aeaf-38497975d7b3':
|
||||||
|
$payment_method = 'Personalizado';
|
||||||
|
if ($config['customPaymentMethodId']) {
|
||||||
|
$this->notifierFacade->verifyPaymentActionToDo($notification);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case '72271b72-5c0a-45e2-94d1-cdf4d7cf10e2':
|
||||||
|
$payment_method = 'Cortesía';
|
||||||
|
if ($config['courtesyPaymentMethodId']) {
|
||||||
|
$this->notifierFacade->verifyPaymentActionToDo($notification);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$payment_method = 'Desconocido, revisar metodos de pago no contemplados';
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if ($notification->eventName === 'client.edit') {
|
||||||
|
$this->logger->debug('Se actualiza a un cliente');
|
||||||
|
$this->logger->debug('Valor de json_data: ' . json_encode($jsonData));
|
||||||
|
//ejemplo de json_data: {"uuid":"aacaf5c5-2bf4-44ea-864f-a24121b453bb","changeType":"edit","entity":"client","entityId":"171","eventName":"client.edit","extraData":{"entity":{"id":171,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Campeche 56","street2":null,"city":"Dolores Hidalgo","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Campeche 56, Dolores Hidalgo, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":null,"sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2025-05-21T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":false,"firstName":"Archi","lastName":"Isalas","username":"mainstreamm2@gmail.com","contacts":[{"id":177,"clientId":171,"email":"mainstreamm2@gmail.com","phone":"4181878106","name":null,"isBilling":false,"isContact":false,"types":[]}],"attributes":[{"id":198,"clientId":171,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_SM2zH6IsjTz6ol","clientZoneVisible":true},{"id":199,"clientId":171,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"124180950530868794","clientZoneVisible":true}],"accountBalance":0,"accountCredit":0,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1572461,"addressGpsLon":-100.9377137,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":false,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"entityBeforeEdit":{"id":171,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"Campeche 56","street2":null,"city":"Dolores Hidalgo","countryId":173,"stateId":null,"zipCode":"37800","fullAddress":"Campeche 56, Dolores Hidalgo, 37800","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":null,"sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2025-05-21T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":false,"firstName":"Archi","lastName":"Isalas","username":"mainstreamm2@gmail.com","contacts":[{"id":177,"clientId":171,"email":"mainstreamm2@gmail.com","phone":"4181878106","name":null,"isBilling":false,"isContact":false,"types":[{"id":1003,"name":"WhatsNotifica"}]}],"attributes":[{"id":198,"clientId":171,"customAttributeId":10,"name":"Stripe Customer ID","key":"stripeCustomerId","value":"cus_SM2zH6IsjTz6ol","clientZoneVisible":true},{"id":199,"clientId":171,"customAttributeId":11,"name":"Clabe Interbancaria","key":"clabeInterbancaria","value":"124180950530868794","clientZoneVisible":true}],"accountBalance":0,"accountCredit":0,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#f1df43","addressGpsLat":21.1572461,"addressGpsLon":-100.9377137,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":false,"hasSuspendedService":false,"hasServiceWithoutDevices":true,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false}}}
|
||||||
|
|
||||||
|
|
||||||
|
$clientID = $jsonData['entityId'];
|
||||||
|
$this->ucrmApi = UcrmApi::create();
|
||||||
|
$customAttributes = $this->ucrmApi->get('custom-attributes/', ['attributeType' => 'client']); //Obtener los atributos del sistema que estén vinculados a la entidad "cliente"
|
||||||
|
//$this->logger->info("result del custom Attributes: " . json_encode($customAttributes) . PHP_EOL);
|
||||||
|
|
||||||
|
$idPasswordAntenaCliente = null;
|
||||||
|
$passwordAntenaValue = null;
|
||||||
|
|
||||||
|
//ejemplo de $customAttributes: [{"id":1,"name":"ip","key":"ip","attributeType":"client","type":"string","clientZoneVisible":false},{"id":2,"name":"ubntpass","key":"ubntpass","attributeType":"client","type":"string","clientZoneVisible":false},{"id":3,"name":"adminpass","key":"adminpass","attributeType":"client","type":"string","clientZoneVisible":true},{"id":4,"name":"ssid","key":"ssid","attributeType":"client","type":"string","clientZoneVisible":true},{"id":5,"name":"clavessid","key":"clavessid","attributeType":"client","type":"string","clientZoneVisible":true},{"id":6,"name":"clave","key":"clave","attributeType":"client","type":"string","clientZoneVisible":true},{"id":11,"name":"latitud","key":"latitud","attributeType":"client","type":"string","clientZoneVisible":true},{"id":12,"name":"longitud","key":"longitud","attributeType":"client","type":"string","clientZoneVisible":true},{"id":16,"name":"instalador","key":"instalador","attributeType":"client","type":"string","clientZoneVisible":true},{"id":17,"name":"creado por","key":"creadoPor","attributeType":"client","type":"string","clientZoneVisible":true},{"id":21,"name":"Chat de CallBell","key":"chatDeCallbell","attributeType":"client","type":"string","clientZoneVisible":false},{"id":22,"name":"uuid","key":"uuid","attributeType":"client","type":"string","clientZoneVisible":false},{"id":23,"name":"zona","key":"zona","attributeType":"client","type":"enum","clientZoneVisible":true},{"id":29,"name":"Stripe Customer ID","key":"stripeCustomerId","attributeType":"client","type":"string","clientZoneVisible":true},{"id":30,"name":"Clabe Interbancaria","key":"clabeInterbancaria","attributeType":"client","type":"string","clientZoneVisible":true},{"id":31,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","attributeType":"client","type":"enum","clientZoneVisible":true},{"id":35,"name":"Site","key":"site","attributeType":"client","type":"string","clientZoneVisible":true},{"id":36,"name":"Antena/Sectorial","key":"antenaSectorial","attributeType":"client","type":"string","clientZoneVisible":true},{"id":37,"name":"Password Antena Cliente","key":"passwordAntenaCliente","attributeType":"client","type":"string","clientZoneVisible":false}]
|
||||||
|
|
||||||
|
// Verificar si se obtuvieron los atributos
|
||||||
|
if ($customAttributes && is_array($customAttributes)) {
|
||||||
|
foreach ($customAttributes as $attribute) {
|
||||||
|
// Verificar si 'name' contiene la palabra 'passwordAntenaCliente' sin distinguir mayúsculas y minúsculas
|
||||||
|
if (isset($attribute['key']) && stripos($attribute['key'], 'passwordAntenaCliente') !== false) {
|
||||||
|
$this->logger->info("ID correspondiente a 'passwordAntenaCliente': " . $attribute['id'] . PHP_EOL);
|
||||||
|
$idPasswordAntenaCliente = $attribute['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->logger->info("Error al obtener los atributos personalizados." . PHP_EOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
//buscar en los attributes ($jsonData) del cliente el id del atributo personalizado 'passwordAntenaCliente' si no está o si está pero está en blanco se manda llamar la función $this->notifierFacade->getVaultCredentials($clientID);
|
||||||
|
|
||||||
|
foreach ($jsonData['extraData']['entity']['attributes'] as $attribute) {
|
||||||
|
if ($attribute['customAttributeId'] === $idPasswordAntenaCliente) {
|
||||||
|
$this->logger->info("El valor de passwordAntenaValue es: " . $attribute['value'] . PHP_EOL);
|
||||||
|
$passwordAntenaValue = $attribute['value'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//si el value de passwordAntenaValue es igual a null o cadena vacía se manda llamar la función $this->notifierFacade->getVaultCredentials($clientID);
|
||||||
|
if ($passwordAntenaValue === null || $passwordAntenaValue === '') {
|
||||||
|
$password = $this->notifierFacade->getVaultCredentials($clientID);
|
||||||
|
$this->logger->info("El valor de passwordAntenaValue es null o cadena vacía, se manda llamar la función getVaultCredentials" . PHP_EOL);
|
||||||
|
$this->logger->info("El valor de password es: " . $password . PHP_EOL);
|
||||||
|
|
||||||
|
if ($this->notifierFacade->patchClientCustomAttribute($clientID, $idPasswordAntenaCliente, $password)) {
|
||||||
|
$this->logger->info("Se actualizó el atributo personalizado passwordAntenaCliente con el valor: " . $password . PHP_EOL);
|
||||||
|
} else {
|
||||||
|
$this->logger->info("No se pudo actualizar el atributo personalizado passwordAntenaCliente" . PHP_EOL);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->logger->info("Ya existe un valor de passwordAntenaValue: " . $passwordAntenaValue . PHP_EOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
//ejemplo de json_data: {"uuid":"17e043a7-03b5-4312-ab81-a7818124a77e","changeType":"edit","entity":"client","entityId":"158","eventName":"client.edit","extraData":{"entity":{"id":158,"userIdent":null,"previousIsp":null,"isLead":false,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"23 San Luis","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37804","fullAddress":"San Luis 23, Guadalupe, Dolores Hidalgo Cuna de la Independencia Nacional, Gto., M\u00e9xico","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":null,"sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2025-01-06T00:00:00-0600","leadConvertedAt":"2025-02-09T03:15:49-0600","companyContactFirstName":null,"companyContactLastName":null,"isActive":false,"firstName":"Luis","lastName":"Guti\u00e9rrez","username":null,"contacts":[{"id":162,"clientId":158,"email":null,"phone":null,"name":null,"isBilling":true,"isContact":true,"types":[{"id":1,"name":"Billing"},{"id":2,"name":"General"}]}],"attributes":[],"accountBalance":0,"accountCredit":0,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#2196f3","addressGpsLat":21.153272,"addressGpsLon":-100.9134508,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":false,"hasSuspendedService":false,"hasServiceWithoutDevices":false,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false},"entityBeforeEdit":{"id":158,"userIdent":null,"previousIsp":null,"isLead":true,"clientType":1,"companyName":null,"companyRegistrationNumber":null,"companyTaxId":null,"companyWebsite":null,"street1":"23 San Luis","street2":null,"city":"Dolores Hidalgo Cuna de la Independencia Nacional","countryId":173,"stateId":null,"zipCode":"37804","fullAddress":"San Luis 23, Guadalupe, Dolores Hidalgo Cuna de la Independencia Nacional, Gto., M\u00e9xico","invoiceStreet1":null,"invoiceStreet2":null,"invoiceCity":null,"invoiceStateId":null,"invoiceCountryId":null,"invoiceZipCode":null,"invoiceAddressSameAsContact":true,"note":null,"sendInvoiceByPost":null,"invoiceMaturityDays":null,"stopServiceDue":null,"stopServiceDueDays":null,"organizationId":1,"tax1Id":null,"tax2Id":null,"tax3Id":null,"registrationDate":"2025-01-06T00:00:00-0600","leadConvertedAt":null,"companyContactFirstName":null,"companyContactLastName":null,"isActive":false,"firstName":"Luis","lastName":"Guti\u00e9rrez","username":null,"contacts":[{"id":162,"clientId":158,"email":null,"phone":null,"name":null,"isBilling":true,"isContact":true,"types":[{"id":1,"name":"Billing"},{"id":2,"name":"General"}]}],"attributes":[],"accountBalance":0,"accountCredit":0,"accountOutstanding":0,"currencyCode":"MXN","organizationName":"SIIP Pruebas","bankAccounts":[],"tags":[],"invitationEmailSentDate":null,"avatarColor":"#2196f3","addressGpsLat":21.153272,"addressGpsLon":-100.9134508,"isArchived":false,"generateProformaInvoices":null,"usesProforma":false,"hasOverdueInvoice":false,"hasOutage":false,"hasSuspendedService":false,"hasServiceWithoutDevices":false,"referral":null,"hasPaymentSubscription":false,"hasAutopayCreditCard":false}}}
|
||||||
|
|
||||||
|
// Validar que 'extraData' existe y contiene las claves necesarias
|
||||||
|
if (
|
||||||
|
isset($jsonData['extraData']['entityBeforeEdit']) &&
|
||||||
|
isset($jsonData['extraData']['entity'])
|
||||||
|
) {
|
||||||
|
$entityBeforeEdit = $jsonData['extraData']['entityBeforeEdit'];
|
||||||
|
$entity = $jsonData['extraData']['entity'];
|
||||||
|
|
||||||
|
//$this->logger->debug('Validando claves dentro de entityBeforeEdit y entity');
|
||||||
|
|
||||||
|
// Validar si 'isLead' esta en true en entityBeforeEdit y en false en entity
|
||||||
|
if (array_key_exists('isLead', $entityBeforeEdit) && array_key_exists('isLead', $entity)) {
|
||||||
|
//$this->logger->debug('Los datos entityBeforeEdit y entity contienen el campo isLead');
|
||||||
|
|
||||||
|
$isLeadBefore = $entityBeforeEdit['isLead'];
|
||||||
|
$isLeadAfter = $entity['isLead'];
|
||||||
|
|
||||||
|
// Comprobar si 'isLead' cambió de true a false
|
||||||
|
if ($isLeadBefore === true && $isLeadAfter === false) {
|
||||||
|
$this->logger->debug('El cliente cambió de potencial a cliente');
|
||||||
|
//$this->pluginNotifierFacade->createStripeClient($notification); //Se comenta esta línea para que no se cree el cliente en Stripe al convertir el lead a cliente, ya que se hará al agregar la etiqueta 'CREAR CLABE STRIPE'
|
||||||
|
} else {
|
||||||
|
$this->logger->debug('El cliente no cambió de potencial a cliente');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->logger->warning('El campo isLead no existe en entityBeforeEdit o entity');
|
||||||
|
}
|
||||||
|
|
||||||
|
// buscar si existe la etiqueta 'STRIPE' en entity pero no en entityBeforeEdit
|
||||||
|
$tags = $jsonData['extraData']['entity']['tags'];
|
||||||
|
$tagsBefore = $jsonData['extraData']['entityBeforeEdit']['tags'];
|
||||||
|
|
||||||
|
$this->logger->debug('Validando claves dentro de entity y entityBeforeEdit');
|
||||||
|
|
||||||
|
// Validar que 'tags' existe en ambas entidades
|
||||||
|
if (array_key_exists('tags', $jsonData['extraData']['entity']) && array_key_exists('tags', $jsonData['extraData']['entityBeforeEdit'])) {
|
||||||
|
$this->logger->debug('Los datos entity y entityBeforeEdit contienen el campo tags');
|
||||||
|
|
||||||
|
$tags = $jsonData['extraData']['entity']['tags'];
|
||||||
|
$tagsBefore = $jsonData['extraData']['entityBeforeEdit']['tags'];
|
||||||
|
|
||||||
|
$this->logger->debug('Validando si la etiqueta STRIPE existe en entity pero no en entityBeforeEdit');
|
||||||
|
|
||||||
|
// Comprobar si la etiqueta 'CREAR CLABE STRIPE' existe en 'tags' pero no en 'tagsBefore'
|
||||||
|
$stripeTagExists = false;
|
||||||
|
$stripeTagExistsBefore = false;
|
||||||
|
foreach ($tags as $tag) {
|
||||||
|
if ($tag['name'] === 'CREAR CLABE STRIPE') {
|
||||||
|
$stripeTagExists = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach ($tagsBefore as $tag) {
|
||||||
|
if ($tag['name'] === 'CREAR CLABE STRIPE') {
|
||||||
|
$stripeTagExistsBefore = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Comprobar si la etiqueta 'STRIPE' existe en 'tags' pero no en 'tagsBefore'
|
||||||
|
if ($stripeTagExists && ! $stripeTagExistsBefore) {
|
||||||
|
$this->logger->debug('La etiqueta CREAR CLABE STRIPE se agregará al cliente');
|
||||||
|
$this->pluginNotifierFacade->createStripeClient($notification, true);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->logger->warning('El campo tags no existe en entity o entityBeforeEdit');
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$this->logger->warning('Los datos entityBeforeEdit o entity no están presentes en extraData');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->notifierFacade->verifyClientActionToDo($notification);
|
||||||
|
|
||||||
|
} else if ($notification->eventName === 'client.add') {
|
||||||
|
$this->logger->debug('Se agregó un nuevo cliente' . PHP_EOL);
|
||||||
|
$this->logger->debug('Valor de json_data: ' . json_encode($jsonData));
|
||||||
|
|
||||||
|
// Verificar que existen tanto 'entityBeforeEdit' como 'entity'
|
||||||
|
// if (isset($jsonData['extraData']['entity']['isLead'])) {
|
||||||
|
// $this->logger->debug('El campo isLead existe en los datos del evento');
|
||||||
|
// $isLead = $jsonData['extraData']['entity']['isLead'];
|
||||||
|
|
||||||
|
// // Comprobar si 'isLead' es true
|
||||||
|
// if ($isLead === true) {
|
||||||
|
// $this->logger->debug('El cliente es potencial');
|
||||||
|
// $this->pluginNotifierFacade->createStripeClient($notification);
|
||||||
|
// } else {
|
||||||
|
// $this->logger->debug('El cliente no es potencial');
|
||||||
|
// $this->pluginNotifierFacade->createStripeClient($notification);
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// $this->logger->warning('El campo isLead no existe en los datos del evento');
|
||||||
|
// }
|
||||||
|
|
||||||
|
} else if ($notification->eventName === 'service.edit') {
|
||||||
|
$this->logger->debug('Se editó el servicio a un cliente' . PHP_EOL);
|
||||||
|
$this->notifierFacade->verifyServiceActionToDo($notification);
|
||||||
|
//ejemplo de json_data: {"uuid":"06d281ca-d78e-4f0a-a282-3a6b77d25da0","changeType":"edit","entity":"service","entityId":"155","eventName":"service.edit","extraData":{"entity":{"id":155,"prepaid":false,"clientId":171,"status":1,"name":"Basico 300","fullAddress":"Campeche 56, Dolores Hidalgo, 37800","street1":"Campeche 56","street2":null,"city":"Dolores Hidalgo","countryId":173,"stateId":null,"zipCode":"37800","note":null,"addressGpsLat":21.1572461,"addressGpsLon":-100.9377137,"servicePlanId":6,"servicePlanPeriodId":26,"price":300,"hasIndividualPrice":false,"totalPrice":300,"currencyCode":"MXN","invoiceLabel":null,"contractId":null,"contractLengthType":1,"minimumContractLengthMonths":null,"activeFrom":"2025-05-21T00:00:00-0600","activeTo":null,"contractEndDate":null,"discountType":0,"discountValue":null,"discountInvoiceLabel":"Descuento","discountFrom":null,"discountTo":null,"tax1Id":null,"tax2Id":null,"tax3Id":null,"invoicingStart":"2025-05-21T00:00:00-0600","invoicingPeriodType":1,"invoicingPeriodStartDay":1,"nextInvoicingDayAdjustment":10,"invoicingProratedSeparately":true,"invoicingSeparately":false,"sendEmailsAutomatically":null,"useCreditAutomatically":true,"servicePlanName":"Basico 300","servicePlanPrice":300,"servicePlanPeriod":1,"servicePlanType":"Internet","downloadSpeed":8,"uploadSpeed":8,"hasOutage":false,"unmsClientSiteStatus":null,"fccBlockId":null,"lastInvoicedDate":null,"unmsClientSiteId":"359cb58d-e64f-453a-890e-23d5abb4f116","attributes":[],"addressData":null,"suspensionReasonId":null,"serviceChangeRequestId":null,"setupFeePrice":null,"earlyTerminationFeePrice":null,"downloadSpeedOverride":null,"uploadSpeedOverride":null,"trafficShapingOverrideEnd":null,"trafficShapingOverrideEnabled":false,"servicePlanGroupId":null,"suspensionPeriods":[],"surcharges":[]},"entityBeforeEdit":{"id":155,"prepaid":false,"clientId":171,"status":1,"name":"Basico 300","fullAddress":"Campeche 56, Dolores Hidalgo, 37800","street1":"Campeche 56","street2":null,"city":"Dolores Hidalgo","countryId":173,"stateId":null,"zipCode":"37800","note":null,"addressGpsLat":21.1572461,"addressGpsLon":-100.9377137,"servicePlanId":6,"servicePlanPeriodId":26,"price":300,"hasIndividualPrice":false,"totalPrice":300,"currencyCode":"MXN","invoiceLabel":null,"contractId":null,"contractLengthType":1,"minimumContractLengthMonths":null,"activeFrom":"2025-05-21T00:00:00-0600","activeTo":null,"contractEndDate":null,"discountType":0,"discountValue":null,"discountInvoiceLabel":"Descuento","discountFrom":null,"discountTo":null,"tax1Id":null,"tax2Id":null,"tax3Id":null,"invoicingStart":"2025-05-21T00:00:00-0600","invoicingPeriodType":1,"invoicingPeriodStartDay":1,"nextInvoicingDayAdjustment":10,"invoicingProratedSeparately":true,"invoicingSeparately":false,"sendEmailsAutomatically":null,"useCreditAutomatically":true,"servicePlanName":"Basico 300","servicePlanPrice":300,"servicePlanPeriod":1,"servicePlanType":"Internet","downloadSpeed":8,"uploadSpeed":8,"hasOutage":false,"unmsClientSiteStatus":null,"fccBlockId":null,"lastInvoicedDate":null,"unmsClientSiteId":"359cb58d-e64f-453a-890e-23d5abb4f116","attributes":[],"addressData":null,"suspensionReasonId":null,"serviceChangeRequestId":null,"setupFeePrice":null,"earlyTerminationFeePrice":null,"downloadSpeedOverride":null,"uploadSpeedOverride":null,"trafficShapingOverrideEnd":null,"trafficShapingOverrideEnabled":false,"servicePlanGroupId":null,"suspensionPeriods":[],"surcharges":[]}}}
|
||||||
|
//obtener el clientID y asginarlo a la variable $clientID
|
||||||
|
$clientID = $jsonData['extraData']['entity']['clientId'];
|
||||||
|
$this->ucrmApi = UcrmApi::create();
|
||||||
|
$customAttributes = $this->ucrmApi->get('custom-attributes/', ['attributeType' => 'client']); //Obtener los atributos del sistema que estén vinculados a la entidad "cliente"
|
||||||
|
//$this->logger->info("result del custom Attributes: " . json_encode($customAttributes) . PHP_EOL);
|
||||||
|
|
||||||
|
$idPasswordAntenaCliente = null;
|
||||||
|
$passwordAntenaValue = null;
|
||||||
|
|
||||||
|
//ejemplo de $customAttributes: [{"id":1,"name":"ip","key":"ip","attributeType":"client","type":"string","clientZoneVisible":false},{"id":2,"name":"ubntpass","key":"ubntpass","attributeType":"client","type":"string","clientZoneVisible":false},{"id":3,"name":"adminpass","key":"adminpass","attributeType":"client","type":"string","clientZoneVisible":true},{"id":4,"name":"ssid","key":"ssid","attributeType":"client","type":"string","clientZoneVisible":true},{"id":5,"name":"clavessid","key":"clavessid","attributeType":"client","type":"string","clientZoneVisible":true},{"id":6,"name":"clave","key":"clave","attributeType":"client","type":"string","clientZoneVisible":true},{"id":11,"name":"latitud","key":"latitud","attributeType":"client","type":"string","clientZoneVisible":true},{"id":12,"name":"longitud","key":"longitud","attributeType":"client","type":"string","clientZoneVisible":true},{"id":16,"name":"instalador","key":"instalador","attributeType":"client","type":"string","clientZoneVisible":true},{"id":17,"name":"creado por","key":"creadoPor","attributeType":"client","type":"string","clientZoneVisible":true},{"id":21,"name":"Chat de CallBell","key":"chatDeCallbell","attributeType":"client","type":"string","clientZoneVisible":false},{"id":22,"name":"uuid","key":"uuid","attributeType":"client","type":"string","clientZoneVisible":false},{"id":23,"name":"zona","key":"zona","attributeType":"client","type":"enum","clientZoneVisible":true},{"id":29,"name":"Stripe Customer ID","key":"stripeCustomerId","attributeType":"client","type":"string","clientZoneVisible":true},{"id":30,"name":"Clabe Interbancaria","key":"clabeInterbancaria","attributeType":"client","type":"string","clientZoneVisible":true},{"id":31,"name":"RUTA DE COBRANZA","key":"rutaDeCobranza","attributeType":"client","type":"enum","clientZoneVisible":true},{"id":35,"name":"Site","key":"site","attributeType":"client","type":"string","clientZoneVisible":true},{"id":36,"name":"Antena/Sectorial","key":"antenaSectorial","attributeType":"client","type":"string","clientZoneVisible":true},{"id":37,"name":"Password Antena Cliente","key":"passwordAntenaCliente","attributeType":"client","type":"string","clientZoneVisible":false}]
|
||||||
|
|
||||||
|
// Verificar si se obtuvieron los atributos
|
||||||
|
if ($customAttributes && is_array($customAttributes)) {
|
||||||
|
foreach ($customAttributes as $attribute) {
|
||||||
|
// Verificar si 'name' contiene la palabra 'passwordAntenaCliente' sin distinguir mayúsculas y minúsculas
|
||||||
|
if (isset($attribute['key']) && stripos($attribute['key'], 'passwordAntenaCliente') !== false) {
|
||||||
|
$this->logger->info("ID correspondiente a 'passwordAntenaCliente': " . $attribute['id'] . PHP_EOL);
|
||||||
|
$idPasswordAntenaCliente = $attribute['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->logger->info("Error al obtener los atributos personalizados." . PHP_EOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
//buscar en los attributes ($jsonData) del cliente el id del atributo personalizado 'passwordAntenaCliente' si no está o si está pero está en blanco se manda llamar la función $this->notifierFacade->getVaultCredentials($clientID);
|
||||||
|
|
||||||
|
foreach ($jsonData['extraData']['entity']['attributes'] as $attribute) {
|
||||||
|
if ($attribute['customAttributeId'] === $idPasswordAntenaCliente) {
|
||||||
|
$this->logger->info("El valor de passwordAntenaValue es: " . $attribute['value'] . PHP_EOL);
|
||||||
|
$passwordAntenaValue = $attribute['value'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//si el value de passwordAntenaValue es igual a null o cadena vacía se manda llamar la función $this->notifierFacade->getVaultCredentials($clientID);
|
||||||
|
if ($passwordAntenaValue === null || $passwordAntenaValue === '') {
|
||||||
|
$password = $this->notifierFacade->getVaultCredentials($clientID);
|
||||||
|
$this->logger->info("El valor de passwordAntenaValue es null o cadena vacía, se manda llamar la función getVaultCredentials" . PHP_EOL);
|
||||||
|
$this->logger->info("El valor de password es: " . $password . PHP_EOL);
|
||||||
|
|
||||||
|
if ($this->notifierFacade->patchClientCustomAttribute($clientID, $idPasswordAntenaCliente, $password)) {
|
||||||
|
$this->logger->info("Se actualizó el atributo personalizado passwordAntenaCliente con el valor: " . $password . PHP_EOL);
|
||||||
|
} else {
|
||||||
|
$this->logger->info("No se pudo actualizar el atributo personalizado passwordAntenaCliente" . PHP_EOL);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->logger->info("Ya existe un valor de passwordAntenaValue: " . $passwordAntenaValue . PHP_EOL);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if ($notification->eventName === 'service.suspend') {
|
||||||
|
$this->logger->debug('Se suspendió el servicio a un cliente' . PHP_EOL);
|
||||||
|
$this->notifierFacade->verifyServiceActionToDo($notification);
|
||||||
|
} else if ($notification->eventName === 'service.suspend_cancel') {
|
||||||
|
$this->logger->debug('Se reactivó el servicio a un cliente' . PHP_EOL);
|
||||||
|
$this->notifierFacade->verifyServiceActionToDo($notification);
|
||||||
|
} else if ($notification->eventName === 'service.postpone') {
|
||||||
|
$this->logger->debug('Se pospuso la suspención del servicio a un cliente' . PHP_EOL);
|
||||||
|
$this->notifierFacade->verifyServiceActionToDo($notification);
|
||||||
|
} else if ($notification->eventName === 'invoice.near_due') {
|
||||||
|
$this->logger->debug('Factura casi por vencer' . PHP_EOL);
|
||||||
|
$this->notifierFacade->notifyOverDue($notification);
|
||||||
|
} else if ($notification->eventName === 'invoice.overdue') {
|
||||||
|
$this->logger->debug('Factura vencida' . PHP_EOL);
|
||||||
|
$result = json_encode($notification);
|
||||||
|
$this->logger->debug('datos del notification para el invoice overdue:' . $result . PHP_EOL);
|
||||||
|
$this->notifierFacade->notifyOverDue($notification);
|
||||||
|
} else if ($notification->eventName === 'invoice.add') {
|
||||||
|
$this->logger->debug('Adición de Factura' . PHP_EOL);
|
||||||
|
$result = json_encode($notification);
|
||||||
|
$this->logger->debug('datos del notification para el invoice add:' . $result . PHP_EOL);
|
||||||
|
|
||||||
|
$accountBalance = $notification->clientData['accountBalance'];
|
||||||
|
//$invoiceAmountPaid = $notification->invoiceData['amountPaid'];
|
||||||
|
$this->logger->debug("Account Balance: " . $accountBalance . PHP_EOL);
|
||||||
|
// $this->logger->debug("Pago hecho con la factura: " . $invoiceAmountPaid . PHP_EOL);
|
||||||
|
$this->notifierFacade->verifyInvoiceActionToDo($notification);
|
||||||
|
} else if ($notification->eventName === 'invoice.edit') {
|
||||||
|
$this->logger->debug('Edición de Factura' . PHP_EOL);
|
||||||
|
$this->notifierFacade->verifyInvoiceActionToDo($notification);
|
||||||
|
} else if ($notification->eventName === 'invoice.add_draft') {
|
||||||
|
$this->logger->debug('Adición de borrador de Factura' . PHP_EOL);
|
||||||
|
$this->notifierFacade->verifyInvoiceActionToDo($notification);
|
||||||
|
} else if ($notification->eventName === 'invoice.draft_approved') {
|
||||||
|
$this->logger->debug('Aprobación de Factura' . PHP_EOL);
|
||||||
|
$this->notifierFacade->verifyInvoiceActionToDo($notification);
|
||||||
|
} else if ($notification->eventName === 'invoice.delete') {
|
||||||
|
$this->logger->debug('Eliminación de Factura' . PHP_EOL);
|
||||||
|
$this->notifierFacade->verifyInvoiceActionToDo($notification);
|
||||||
|
} else if ($notification->eventName === 'job.add') {
|
||||||
|
$this->logger->debug('Se ha agregado un nuevo trabajo' . PHP_EOL);
|
||||||
|
$this->logger->debug('Valor de json_data: ' . json_encode($jsonData));
|
||||||
|
//Ejemplo de json_data: {"uuid":"434b3da0-984a-4358-a1b6-2a4418bacc49","changeType":"insert","entity":"job","entityId":"38","eventName":"job.add","extraData":{"entity":{"id":38,"title":"Servicio","description":"Revisar Router","assignedUserId":null,"clientId":2,"date":null,"duration":60,"status":0,"address":"31 Chiapas, Dolores Hidalgo Cuna de la Independencia Nacional, 37800, Mexico","gpsLat":null,"gpsLon":null,"attachments":[],"tasks":[]},"entityBeforeEdit":null}}
|
||||||
|
//Extraer el valor de title en una variable y concatenarle como prefijo la cadena "[SINENVIONOTIFICACION]" por ejemplo: "[NOTIFICACION-PENDIENTE]Servicio"
|
||||||
|
$title = $jsonData['extraData']['entity']['title'];
|
||||||
|
$title = '[NOTIFICACION-PENDIENTE]' . $title;
|
||||||
|
$this->ucrmApi = UcrmApi::create();
|
||||||
|
$responsePatch = $this->ucrmApi->patch('scheduling/jobs/' . $jsonData['entityId'], [
|
||||||
|
'title' => $title,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->logger->debug('Respuesta de la API al agregar el trabajo: ' . json_encode($responsePatch) . PHP_EOL);
|
||||||
|
|
||||||
|
} else if ($notification->eventName === 'job.edit') {
|
||||||
|
$this->logger->debug('Se actualiza un trabajo' . PHP_EOL);
|
||||||
|
// $this->logger->debug('Valor de json_data: ' . json_encode($jsonData));
|
||||||
|
|
||||||
|
// Validar que 'extraData' existe y contiene las claves necesarias
|
||||||
|
if (
|
||||||
|
isset($jsonData['extraData']['entityBeforeEdit']) &&
|
||||||
|
isset($jsonData['extraData']['entity'])
|
||||||
|
) {
|
||||||
|
$entityBeforeEdit = $jsonData['extraData']['entityBeforeEdit'];
|
||||||
|
$entity = $jsonData['extraData']['entity'];
|
||||||
|
|
||||||
|
$this->logger->debug('Validando claves dentro de entityBeforeEdit y entity');
|
||||||
|
|
||||||
|
// Validar que 'assignedUserId' existe en ambas entidades
|
||||||
|
if (array_key_exists('assignedUserId', $entityBeforeEdit) && array_key_exists('assignedUserId', $entity)) {
|
||||||
|
// $this->logger->debug('Los datos entityBeforeEdit y entity contienen el campo assignedUserId');
|
||||||
|
|
||||||
|
$assignedUserIdBefore = $entityBeforeEdit['assignedUserId'];
|
||||||
|
$assignedUserIdAfter = $entity['assignedUserId'];
|
||||||
|
$dateBefore = $entityBeforeEdit['date'];
|
||||||
|
$dateAfter = $entity['date'];
|
||||||
|
$statusBefore = $entityBeforeEdit['status'];
|
||||||
|
$statusAfter = $entity['status'];
|
||||||
|
$title = $entityBeforeEdit['title'];
|
||||||
|
$pendingPrefix = '[NOTIFICACION-PENDIENTE]'; // Prefijo para trabajos pendientes de notificación
|
||||||
|
$currentTitle = $entity['title'] ?? ''; // Obtener el título actual
|
||||||
|
|
||||||
|
//Valores de status y su significado: 0 = abierto, 1= En curso, 2 = Cerrado
|
||||||
|
|
||||||
|
if ($statusAfter == 1) {
|
||||||
|
// Comprobar si 'assignedUserId' cambió
|
||||||
|
// if (($assignedUserIdBefore === null && $assignedUserIdAfter != null) || ($statusBefore == 0 && $statusAfter == 1)) { //Si el campo "assignedUserId" cambió de null a un valor
|
||||||
|
// $this->logger->debug('El instalador cambió de null a un valor');
|
||||||
|
|
||||||
|
// $this->notifierFacade->verifyJobActionToDo($jsonData); // Se envía notificación de trabajo asignado
|
||||||
|
// }
|
||||||
|
|
||||||
|
//Si el campo status cambió de 0 a 1 y title comienza con el prefijo [NOTIFICACION-PENDIENTE]
|
||||||
|
if (($statusBefore == 0 && $statusAfter == 1) && strpos($currentTitle, $pendingPrefix) !== false) { // Se envía notificación de trabajo asignado
|
||||||
|
$this->logger->debug('El instalador cambió de null a un valor');
|
||||||
|
$this->notifierFacade->verifyJobActionToDo($jsonData, false, false);
|
||||||
|
} else if (($assignedUserIdBefore != null && $assignedUserIdAfter != $assignedUserIdBefore) && ($dateBefore === $dateAfter)) { //Si el campo "assignedUserId" cambió de un valor a otro y la fecha no cambió
|
||||||
|
$this->logger->debug('No hay reprogramación de trabajo pero si hay cambio de instalador');
|
||||||
|
$this->notifierFacade->verifyJobActionToDo($jsonData, false, true); // Se envía notificación de trabajo reasignado
|
||||||
|
} else if (($assignedUserIdBefore != null && $assignedUserIdBefore === $assignedUserIdAfter) && ($dateBefore != $dateAfter)) { //Si el campo "assignedUserId" no cambió y la fecha cambió
|
||||||
|
$this->logger->debug('Se reprogramó el trabajo pero no hubo cambio de instalador');
|
||||||
|
$this->notifierFacade->verifyJobActionToDo($jsonData, true, false); // Se envía notificación de reprogramación de trabajo
|
||||||
|
} else if (($assignedUserIdBefore != null && $assignedUserIdAfter != $assignedUserIdBefore) && ($dateBefore != $dateAfter)) {
|
||||||
|
$this->logger->debug('Se reprogramó el trabajo y hubo cambio de instalador');
|
||||||
|
$this->notifierFacade->verifyJobActionToDo($jsonData, true, true); // Se envía notificación de trabajo reasignado
|
||||||
|
} else if ($assignedUserIdBefore != null && $assignedUserIdAfter === null) { //Si el campo "assignedUserId" cambió de un valor a null
|
||||||
|
$this->logger->debug('El instalador cambió de un valor a null');
|
||||||
|
$this->notifierFacade->verifyJobActionToDo($jsonData, null, true); // Se envía notificación de trabajo desasignado
|
||||||
|
} else {
|
||||||
|
$this->logger->debug('No hubo cambio en el instalador ni en la fecha');
|
||||||
|
//$this->notifierFacade->verifyJobActionToDo($jsonData); // Se envía notificación de trabajo asignado
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$this->logger->warning('El campo assignedUserId no existe en entityBeforeEdit o entity');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->logger->warning('Los datos entityBeforeEdit o entity no están presentes en extraData');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//$this->notifierFacade->update($notification);
|
||||||
|
} catch (TwilioException $exception) {
|
||||||
|
$this->logger->error($exception->getMessage());
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$this->logger->error($ex->getMessage());
|
||||||
|
$this->logger->info($ex->getTraceAsString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
0
composer.json
Normal file → Executable file
0
composer.json
Normal file → Executable file
0
composer.lock
generated
Normal file → Executable file
0
composer.lock
generated
Normal file → Executable file
2
data/config.json
Normal file → Executable file
2
data/config.json
Normal file → Executable file
@ -1 +1 @@
|
|||||||
{"ipserver":"sistema.siip.mx","apitoken":"NftJK4BllFalBa1iCCjAww6T/opqDMhyCVyMoBLkq4CPHHUjLEoIsHyEaPwflMz1","debugMode":true,"logging_level":true,"ipServer":"sistema.siip.mx","apiTokenUcrm":"NftJK4BllFalBa1iCCjAww6T/opqDMhyCVyMoBLkq4CPHHUjLEoIsHyEaPwflMz1","apiTokenStripe":"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"}
|
{"ipServer":"venus.siip.mx","apiTokenUcrm":"35lAikF7l9ua8KxmkXhekByNP0vj8Yc3o65bsfl08oN55VN2bdarTu1y3pP4tAXj","apiTokenStripe":"sk_test_51OkG0REFY1WEUtgRH6UxBK5pu80Aq5Iy8EcdPnf0cOWzuVLQTpyLCd7CbPzqMsWMafZOHElCxhEHF7g8boURjWlJ00tBwE0W1M","debugMode":true,"logging_level":true}
|
||||||
20
data/plugin.log
Normal file → Executable file
20
data/plugin.log
Normal file → Executable file
@ -2,3 +2,23 @@ Create Intent Result: {"success":true,"id":"pi_3Sf48SEFY1WEUtgR0s5i4ole","status
|
|||||||
Create Intent Result: {"success":true,"id":"pi_3Sf4IyEFY1WEUtgR1jQ2r4pM","status":"requires_action","amount":100,"currency":"mxn"}
|
Create Intent Result: {"success":true,"id":"pi_3Sf4IyEFY1WEUtgR1jQ2r4pM","status":"requires_action","amount":100,"currency":"mxn"}
|
||||||
Create Intent Result: {"success":true,"id":"pi_3Sf5DMEFY1WEUtgR06kkTXuo","status":"requires_action","amount":200,"currency":"mxn"}
|
Create Intent Result: {"success":true,"id":"pi_3Sf5DMEFY1WEUtgR06kkTXuo","status":"requires_action","amount":200,"currency":"mxn"}
|
||||||
Create Intent Result: {"success":true,"id":"pi_3Sf5EpEFY1WEUtgR1D1YsgLF","status":"requires_action","amount":150,"currency":"mxn"}
|
Create Intent Result: {"success":true,"id":"pi_3Sf5EpEFY1WEUtgR1D1YsgLF","status":"requires_action","amount":150,"currency":"mxn"}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3SfSt1EFY1WEUtgR1isPFtsV","status":"succeeded","amount":500,"currency":"mxn","next_action":null}
|
||||||
|
Create Intent Result: {"success":false,"error":"No such customer: 'contrase\u00f1a obtenida 2'"}
|
||||||
|
Create Intent Result: {"success":false,"error":"No such customer: 'contrase\u00f1a obtenida 2'"}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3SfTCOEFY1WEUtgR1UdBNVDk","status":"requires_action","amount":600,"currency":"mxn","next_action":{"display_bank_transfer_instructions":{"amount_remaining":60000,"currency":"mxn","financial_addresses":[{"spei":{"account_holder_address":{"city":"Ciudad de M\u00e9xico","country":"MX","line1":"Av Paseo de la Reforma 180 piso 29 col Juarez","line2":null,"postal_code":"06600","state":"Ciudad de M\u00e9xico"},"account_holder_name":"SIIP INTERNET","bank_address":{"city":"Naucalpan","country":"MX","line1":"Blvd. Manuel Avila Camacho 1902","line2":"Planta Baja, Cd. Satelite","postal_code":"C.P. 53100","state":"Estado de Mexico"},"bank_code":"124","bank_name":"CITI","clabe":"124180257395215094"},"supported_networks":["spei"],"type":"spei"}],"hosted_instructions_url":"https:\/\/payments.stripe.com\/bank_transfers\/instructions\/test_YWNjdF8xT2tHMFJFRlkxV0VVdGdSLF9UY2lkNTgzSmNzV01iMWV1WWhnb2k4V3B6dVR5Y1NI0100Vwpk0GNP","reference":"836126","type":"mx_bank_transfer"},"type":"display_bank_transfer_instructions"}}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3SfTEsEFY1WEUtgR0sUbrbKn","status":"requires_action","amount":600,"currency":"mxn","next_action":{"display_bank_transfer_instructions":{"amount_remaining":7000,"currency":"mxn","financial_addresses":[{"spei":{"account_holder_address":{"city":"Ciudad de M\u00e9xico","country":"MX","line1":"Av Paseo de la Reforma 180 piso 29 col Juarez","line2":null,"postal_code":"06600","state":"Ciudad de M\u00e9xico"},"account_holder_name":"SIIP INTERNET","bank_address":{"city":"Naucalpan","country":"MX","line1":"Blvd. Manuel Avila Camacho 1902","line2":"Planta Baja, Cd. Satelite","postal_code":"C.P. 53100","state":"Estado de Mexico"},"bank_code":"124","bank_name":"CITI MEXICO","clabe":"124180464584143838"},"supported_networks":["spei"],"type":"spei"}],"hosted_instructions_url":"https:\/\/payments.stripe.com\/bank_transfers\/instructions\/test_YWNjdF8xT2tHMFJFRlkxV0VVdGdSLF9UY2lnZHBDdzdXaVA0dlk1eGpnTDhXUW90dG43UXJJ01005zNS9IqA","reference":"891006","type":"mx_bank_transfer"},"type":"display_bank_transfer_instructions"}}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3SfTFNEFY1WEUtgR0ARP09wI","status":"requires_action","amount":600,"currency":"mxn","next_action":{"display_bank_transfer_instructions":{"amount_remaining":60000,"currency":"mxn","financial_addresses":[{"spei":{"account_holder_address":{"city":"Ciudad de M\u00e9xico","country":"MX","line1":"Av Paseo de la Reforma 180 piso 29 col Juarez","line2":null,"postal_code":"06600","state":"Ciudad de M\u00e9xico"},"account_holder_name":"SIIP INTERNET","bank_address":{"city":"Naucalpan","country":"MX","line1":"Blvd. Manuel Avila Camacho 1902","line2":"Planta Baja, Cd. Satelite","postal_code":"C.P. 53100","state":"Estado de Mexico"},"bank_code":"124","bank_name":"CITI","clabe":"124180257395215094"},"supported_networks":["spei"],"type":"spei"}],"hosted_instructions_url":"https:\/\/payments.stripe.com\/bank_transfers\/instructions\/test_YWNjdF8xT2tHMFJFRlkxV0VVdGdSLF9UY2lnSUZJYzBqaUM2RlQzUHZNNXhMSDBia0NyQ0RG0100aPJCIE4P","reference":"287441","type":"mx_bank_transfer"},"type":"display_bank_transfer_instructions"}}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3SfnSmEFY1WEUtgR0F4shJOv","status":"requires_action","amount":600,"currency":"mxn","next_action":{"display_bank_transfer_instructions":{"amount_remaining":60000,"currency":"mxn","financial_addresses":[{"spei":{"account_holder_address":{"city":"Ciudad de M\u00e9xico","country":"MX","line1":"Av Paseo de la Reforma 180 piso 29 col Juarez","line2":null,"postal_code":"06600","state":"Ciudad de M\u00e9xico"},"account_holder_name":"SIIP INTERNET","bank_address":{"city":"Naucalpan","country":"MX","line1":"Blvd. Manuel Avila Camacho 1902","line2":"Planta Baja, Cd. Satelite","postal_code":"C.P. 53100","state":"Estado de Mexico"},"bank_code":"124","bank_name":"CITI","clabe":"124180257395215094"},"supported_networks":["spei"],"type":"spei"}],"hosted_instructions_url":"https:\/\/payments.stripe.com\/bank_transfers\/instructions\/test_YWNjdF8xT2tHMFJFRlkxV0VVdGdSLF9UZDNabm04VGE5QjVRV0tCdkNvNnI2R0ZyeW5BY21y0100Cek337H9","reference":"723997","type":"mx_bank_transfer"},"type":"display_bank_transfer_instructions"}}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3SfnwDEFY1WEUtgR1PKgbJlo","status":"succeeded","amount":600,"currency":"mxn","next_action":null}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3Sfo8lEFY1WEUtgR1cTsq4mZ","status":"succeeded","amount":600,"currency":"mxn","next_action":null}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3Sfpe1EFY1WEUtgR0eLGPAYb","status":"succeeded","amount":600,"currency":"mxn","next_action":null}
|
||||||
|
Create Intent Result: {"success":false,"error":"Could not connect to Stripe (https:\/\/api.stripe.com\/v1\/payment_intents). Please check your internet connection and try again. If this problem persists, you should check Stripe's service status at https:\/\/twitter.com\/stripestatus, or let us know at support@stripe.com.\n\n(Network error [errno 28]: Operation timed out after 80001 milliseconds with 0 bytes received)"}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3SfqxqEFY1WEUtgR19zL9aNr","status":"succeeded","amount":600,"currency":"mxn","next_action":null}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3Sfr6AEFY1WEUtgR1dhC2Ffj","status":"succeeded","amount":600,"currency":"mxn","next_action":null}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3SfrAkEFY1WEUtgR01zLxB4v","status":"succeeded","amount":600,"currency":"mxn","next_action":null}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3Sg6SCEFY1WEUtgR1NqBNPcb","status":"succeeded","amount":600,"currency":"mxn","next_action":null}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3Sg7rzEFY1WEUtgR0rGdMrvv","status":"succeeded","amount":600,"currency":"mxn","next_action":null}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3Sg9DQEFY1WEUtgR1Ye5k6G3","status":"succeeded","amount":600,"currency":"mxn","next_action":null}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3Sg9PLEFY1WEUtgR1iAOyHlS","status":"succeeded","amount":600,"currency":"mxn","next_action":null}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3Sg9kHEFY1WEUtgR0UDlXu7T","status":"requires_action","amount":250,"currency":"mxn","next_action":{"display_bank_transfer_instructions":{"amount_remaining":25000,"currency":"mxn","financial_addresses":[{"spei":{"account_holder_address":{"city":"Ciudad de M\u00e9xico","country":"MX","line1":"Av Paseo de la Reforma 180 piso 29 col Juarez","line2":null,"postal_code":"06600","state":"Ciudad de M\u00e9xico"},"account_holder_name":"SIIP INTERNET","bank_address":{"city":"Naucalpan","country":"MX","line1":"Blvd. Manuel Avila Camacho 1902","line2":"Planta Baja, Cd. Satelite","postal_code":"C.P. 53100","state":"Estado de Mexico"},"bank_code":"124","bank_name":"CITI","clabe":"124180257395215094"},"supported_networks":["spei"],"type":"spei"}],"hosted_instructions_url":"https:\/\/payments.stripe.com\/bank_transfers\/instructions\/test_YWNjdF8xT2tHMFJFRlkxV0VVdGdSLF9UZFFiajNxbDd6bE9PNmgxOXNXSXZIRzlaaVAzd1pm0100rOmKqech","reference":"779272","type":"mx_bank_transfer"},"type":"display_bank_transfer_instructions"}}
|
||||||
|
Create Intent Result: {"success":true,"id":"pi_3Shc8dEFY1WEUtgR123bgp1n","status":"succeeded","amount":750,"currency":"mxn","next_action":null}
|
||||||
|
|||||||
0
img/vista-general.png
Normal file → Executable file
0
img/vista-general.png
Normal file → Executable file
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
0
manifest.json
Normal file → Executable file
0
manifest.json
Normal file → Executable file
136
public.php
Normal file → Executable file
136
public.php
Normal file → Executable file
@ -96,6 +96,59 @@ if ($action === 'create_intent') {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 5. Webhook Handler
|
||||||
|
if ($action === 'webhook') {
|
||||||
|
$payload = @file_get_contents('php://input');
|
||||||
|
$event = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$event = \Stripe\Event::constructFrom(
|
||||||
|
json_decode($payload, true)
|
||||||
|
);
|
||||||
|
} catch(\UnexpectedValueException $e) {
|
||||||
|
http_response_code(400);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$log->appendLog("Webhook Received: " . $event->type);
|
||||||
|
|
||||||
|
if ($event->type == 'payment_intent.succeeded') {
|
||||||
|
$paymentIntent = $event->data->object;
|
||||||
|
$clientId = $paymentIntent->metadata->clientId ?? null;
|
||||||
|
$amount = $paymentIntent->amount / 100;
|
||||||
|
$currency = $paymentIntent->currency;
|
||||||
|
|
||||||
|
if ($clientId) {
|
||||||
|
$notes = "Pago procesado via Stripe PaymentIntent: " . $paymentIntent->id;
|
||||||
|
$res = $service->registerPayment($clientId, $amount, $currency, $notes);
|
||||||
|
$log->appendLog("Payment Register UCRM ($clientId): " . ($res ? 'Success' : 'Fail'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif ($event->type == 'customer_cash_balance_transaction.created') {
|
||||||
|
$txn = $event->data->object;
|
||||||
|
// Check if money was applied to a payment object
|
||||||
|
if (isset($txn->applied_to_payment) && isset($txn->applied_to_payment->payment_intent)) {
|
||||||
|
$piId = $txn->applied_to_payment->payment_intent;
|
||||||
|
$paymentIntent = $service->getPaymentIntent($piId);
|
||||||
|
|
||||||
|
if ($paymentIntent) {
|
||||||
|
$clientId = $paymentIntent->metadata->clientId ?? null;
|
||||||
|
$amount = abs($txn->net_amount) / 100;
|
||||||
|
$currency = $txn->currency;
|
||||||
|
|
||||||
|
if ($clientId) {
|
||||||
|
$notes = "Pago via Transferencia (Cash Balance) aplicado a Intent: " . $piId;
|
||||||
|
$res = $service->registerPayment($clientId, $amount, $currency, $notes);
|
||||||
|
$log->appendLog("Cash Balance Payment Register UCRM ($clientId): " . ($res ? 'Success' : 'Fail'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
http_response_code(200);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
// --- VIEW (HTML) ---
|
// --- VIEW (HTML) ---
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
@ -596,6 +649,41 @@ if ($action === 'create_intent') {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Bank Transfer Instructions Modal -->
|
||||||
|
<div id="bankParamsModal" class="modal-overlay">
|
||||||
|
<div class="modal" style="max-width: 500px; text-align: left;">
|
||||||
|
<h3 style="text-align: center; margin-bottom: 0.5rem;">Instrucciones de Pago</h3>
|
||||||
|
<p style="text-align: center; margin-bottom: 1.5rem;">Realiza la transferencia con los siguientes datos:</p>
|
||||||
|
|
||||||
|
<div style="background: var(--bg-body); padding: 1.5rem; border-radius: 12px; margin-bottom: 2rem; border: 1px solid var(--border);">
|
||||||
|
<div style="margin-bottom: 0.75rem; display: flex; justify-content: space-between;">
|
||||||
|
<span style="color: var(--text-muted);">Monto:</span>
|
||||||
|
<strong id="btAmount" style="color: var(--text-main);"></strong>
|
||||||
|
</div>
|
||||||
|
<div style="margin-bottom: 0.75rem; display: flex; justify-content: space-between;">
|
||||||
|
<span style="color: var(--text-muted);">Banco:</span>
|
||||||
|
<strong id="btBank" style="color: var(--text-main);"></strong>
|
||||||
|
</div>
|
||||||
|
<div style="margin-bottom: 0.75rem;">
|
||||||
|
<span style="color: var(--text-muted); display: block; margin-bottom: 4px;">CLABE:</span>
|
||||||
|
<div style="display: flex; gap: 8px;">
|
||||||
|
<strong id="btClabe" style="font-family: monospace; font-size: 1.2rem; color: var(--text-main); letter-spacing: 1px;"></strong>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Not always present but good to have
|
||||||
|
<div>
|
||||||
|
<span style="color: var(--text-muted);">Referencia:</span>
|
||||||
|
<strong id="btRef"></strong>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="modal-actions" style="justify-content: center;">
|
||||||
|
<button id="btnCloseBank" class="btn">Cerrar</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
const searchInput = document.getElementById('clientSearch');
|
const searchInput = document.getElementById('clientSearch');
|
||||||
const predictionsDiv = document.getElementById('predictions');
|
const predictionsDiv = document.getElementById('predictions');
|
||||||
@ -761,12 +849,58 @@ if ($action === 'create_intent') {
|
|||||||
btnGenerate.disabled = false;
|
btnGenerate.disabled = false;
|
||||||
|
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
showAlert('success', 'Intención de pago creada correctamente. ID: ' + data.id);
|
// Check if requires_action (Bank Transfer needed)
|
||||||
|
if (data.status === 'requires_action' && data.next_action) {
|
||||||
|
const instructions = data.next_action.display_bank_transfer_instructions;
|
||||||
|
if (instructions) {
|
||||||
|
document.getElementById('btAmount').textContent = '$' + data.amount.toFixed(2) + ' ' + data.currency.toUpperCase();
|
||||||
|
|
||||||
|
const financialAddress = instructions.financial_addresses && instructions.financial_addresses[0];
|
||||||
|
|
||||||
|
let clabe = 'N/A';
|
||||||
|
let bankName = 'STP (Sistema de Transferencias y Pagos)';
|
||||||
|
|
||||||
|
// Priority: Custom Attribute from UCRM > Stripe Response
|
||||||
|
if (selectedClient && selectedClient.clabeInterbancaria) {
|
||||||
|
clabe = selectedClient.clabeInterbancaria;
|
||||||
|
} else if (financialAddress) {
|
||||||
|
if (financialAddress.spei) {
|
||||||
|
clabe = financialAddress.spei.clabe;
|
||||||
|
bankName = financialAddress.spei.bank_name || bankName;
|
||||||
|
} else if (financialAddress.bank_transfer) {
|
||||||
|
clabe = financialAddress.bank_transfer.clabe || financialAddress.bank_transfer.iban || 'N/A';
|
||||||
|
bankName = financialAddress.bank_transfer.bank_name || bankName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById('btBank').textContent = bankName;
|
||||||
|
document.getElementById('btClabe').textContent = clabe;
|
||||||
|
|
||||||
|
const bankModal = document.getElementById('bankParamsModal');
|
||||||
|
bankModal.classList.add('active');
|
||||||
|
|
||||||
|
// Close Handler
|
||||||
|
document.getElementById('btnCloseBank').onclick = () => {
|
||||||
|
bankModal.classList.remove('active');
|
||||||
|
// Now reset form
|
||||||
|
detailsDiv.style.display = 'none';
|
||||||
|
searchInput.value = '';
|
||||||
|
amountInput.value = '';
|
||||||
|
selectedClient = null;
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
// Fallback if no instructions found but requires action
|
||||||
|
showAlert('success', 'Intención creada (requires_action). ID: ' + data.id);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Succeeded immediatley or other status
|
||||||
|
showAlert('success', 'Intención de pago creada correctamente. ID: ' + data.id + ' (Estado: ' + data.status + ')');
|
||||||
// Reset form
|
// Reset form
|
||||||
detailsDiv.style.display = 'none';
|
detailsDiv.style.display = 'none';
|
||||||
searchInput.value = '';
|
searchInput.value = '';
|
||||||
amountInput.value = '';
|
amountInput.value = '';
|
||||||
selectedClient = null;
|
selectedClient = null;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
showAlert('error', 'Error al crear intención: ' + (data.error || 'Desconocido'));
|
showAlert('error', 'Error al crear intención: ' + (data.error || 'Desconocido'));
|
||||||
}
|
}
|
||||||
|
|||||||
73
src/PaymentIntentService.php
Normal file → Executable file
73
src/PaymentIntentService.php
Normal file → Executable file
@ -69,11 +69,14 @@ class PaymentIntentService
|
|||||||
$client = json_decode($response->getBody(), true);
|
$client = json_decode($response->getBody(), true);
|
||||||
|
|
||||||
$stripeCustomerId = null;
|
$stripeCustomerId = null;
|
||||||
|
$clabeInterbancaria = null;
|
||||||
if (isset($client['attributes'])) {
|
if (isset($client['attributes'])) {
|
||||||
foreach ($client['attributes'] as $attribute) {
|
foreach ($client['attributes'] as $attribute) {
|
||||||
if ($attribute['key'] === 'stripeCustomerId' || $attribute['name'] === 'Stripe Customer ID') {
|
if ($attribute['key'] === 'stripeCustomerId' || $attribute['name'] === 'Stripe Customer ID') {
|
||||||
$stripeCustomerId = $attribute['value'];
|
$stripeCustomerId = $attribute['value'];
|
||||||
break;
|
}
|
||||||
|
if ($attribute['key'] === 'clabeInterbancaria' || $attribute['name'] === 'Clabe Interbancaria') {
|
||||||
|
$clabeInterbancaria = $attribute['value'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -84,6 +87,7 @@ class PaymentIntentService
|
|||||||
? $client['firstName'] . ' ' . $client['lastName']
|
? $client['firstName'] . ' ' . $client['lastName']
|
||||||
: $client['companyName'],
|
: $client['companyName'],
|
||||||
'stripeCustomerId' => $stripeCustomerId,
|
'stripeCustomerId' => $stripeCustomerId,
|
||||||
|
'clabeInterbancaria' => $clabeInterbancaria,
|
||||||
'email' => $this->getClientEmail($client),
|
'email' => $this->getClientEmail($client),
|
||||||
'accountOutstanding' => $client['accountOutstanding'] ?? 0
|
'accountOutstanding' => $client['accountOutstanding'] ?? 0
|
||||||
];
|
];
|
||||||
@ -114,6 +118,18 @@ class PaymentIntentService
|
|||||||
try {
|
try {
|
||||||
$amountCentavos = intval($amount * 100);
|
$amountCentavos = intval($amount * 100);
|
||||||
|
|
||||||
|
// DEBUG: Check Customer Balance
|
||||||
|
try {
|
||||||
|
$balanceObj = $this->stripeClient->customers->retrieveCashBalance(
|
||||||
|
$stripeCustomerId,
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
$availableBalance = $balanceObj->available['mxn'] ?? 0;
|
||||||
|
error_log("DEBUG PLUGIN: Customer $stripeCustomerId Balance: " . json_encode($balanceObj));
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
error_log("DEBUG PLUGIN: Could not fetch balance: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
$paymentIntent = $this->stripeClient->paymentIntents->create([
|
$paymentIntent = $this->stripeClient->paymentIntents->create([
|
||||||
'amount' => $amountCentavos,
|
'amount' => $amountCentavos,
|
||||||
'currency' => 'mxn',
|
'currency' => 'mxn',
|
||||||
@ -141,7 +157,8 @@ class PaymentIntentService
|
|||||||
'id' => $paymentIntent->id,
|
'id' => $paymentIntent->id,
|
||||||
'status' => $paymentIntent->status,
|
'status' => $paymentIntent->status,
|
||||||
'amount' => $paymentIntent->amount / 100,
|
'amount' => $paymentIntent->amount / 100,
|
||||||
'currency' => $paymentIntent->currency
|
'currency' => $paymentIntent->currency,
|
||||||
|
'next_action' => $paymentIntent->next_action
|
||||||
];
|
];
|
||||||
|
|
||||||
} catch (ApiErrorException $e) {
|
} catch (ApiErrorException $e) {
|
||||||
@ -150,4 +167,56 @@ class PaymentIntentService
|
|||||||
return ['success' => false, 'error' => $e->getMessage()];
|
return ['success' => false, 'error' => $e->getMessage()];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getPaymentIntent($pk)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
return $this->stripeClient->paymentIntents->retrieve($pk);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function registerPayment($clientId, $amount, $currency, $notes = '')
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$methodId = $this->getPaymentMethodIdByName('Transferencia bancaria');
|
||||||
|
if (!$methodId) {
|
||||||
|
error_log("Payment Registration Error: Could not find payment method 'Transferencia bancaria'");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->httpClient->post('payments', [
|
||||||
|
'json' => [
|
||||||
|
'clientId' => (int)$clientId,
|
||||||
|
'amount' => $amount,
|
||||||
|
'currencyCode' => strtoupper($currency),
|
||||||
|
'methodId' => $methodId,
|
||||||
|
'note' => $notes,
|
||||||
|
'createdDate' => date('c'),
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
return true;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
error_log("Payment Registration Error: " . $e->getMessage());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getPaymentMethodIdByName($name)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$response = $this->httpClient->get('payment-methods');
|
||||||
|
$methods = json_decode($response->getBody(), true);
|
||||||
|
foreach ($methods as $method) {
|
||||||
|
if ($method['name'] === $name) {
|
||||||
|
return $method['id'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
error_log("Error fetching payment methods: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
0
vendor/.DS_Store
vendored
Normal file → Executable file
0
vendor/.DS_Store
vendored
Normal file → Executable file
0
vendor/autoload.php
vendored
Normal file → Executable file
0
vendor/autoload.php
vendored
Normal file → Executable file
0
vendor/bin/pack-plugin
vendored
Normal file → Executable file
0
vendor/bin/pack-plugin
vendored
Normal file → Executable file
0
vendor/composer/ClassLoader.php
vendored
Normal file → Executable file
0
vendor/composer/ClassLoader.php
vendored
Normal file → Executable file
0
vendor/composer/InstalledVersions.php
vendored
Normal file → Executable file
0
vendor/composer/InstalledVersions.php
vendored
Normal file → Executable file
0
vendor/composer/LICENSE
vendored
Normal file → Executable file
0
vendor/composer/LICENSE
vendored
Normal file → Executable file
467
vendor/composer/autoload_classmap.php
vendored
Normal file → Executable file
467
vendor/composer/autoload_classmap.php
vendored
Normal file → Executable file
@ -7,4 +7,471 @@ $baseDir = dirname($vendorDir);
|
|||||||
|
|
||||||
return array(
|
return array(
|
||||||
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
|
||||||
|
'GuzzleHttp\\BodySummarizer' => $vendorDir . '/guzzlehttp/guzzle/src/BodySummarizer.php',
|
||||||
|
'GuzzleHttp\\BodySummarizerInterface' => $vendorDir . '/guzzlehttp/guzzle/src/BodySummarizerInterface.php',
|
||||||
|
'GuzzleHttp\\Client' => $vendorDir . '/guzzlehttp/guzzle/src/Client.php',
|
||||||
|
'GuzzleHttp\\ClientInterface' => $vendorDir . '/guzzlehttp/guzzle/src/ClientInterface.php',
|
||||||
|
'GuzzleHttp\\ClientTrait' => $vendorDir . '/guzzlehttp/guzzle/src/ClientTrait.php',
|
||||||
|
'GuzzleHttp\\Cookie\\CookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php',
|
||||||
|
'GuzzleHttp\\Cookie\\CookieJarInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php',
|
||||||
|
'GuzzleHttp\\Cookie\\FileCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php',
|
||||||
|
'GuzzleHttp\\Cookie\\SessionCookieJar' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php',
|
||||||
|
'GuzzleHttp\\Cookie\\SetCookie' => $vendorDir . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php',
|
||||||
|
'GuzzleHttp\\Exception\\BadResponseException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php',
|
||||||
|
'GuzzleHttp\\Exception\\ClientException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ClientException.php',
|
||||||
|
'GuzzleHttp\\Exception\\ConnectException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ConnectException.php',
|
||||||
|
'GuzzleHttp\\Exception\\GuzzleException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php',
|
||||||
|
'GuzzleHttp\\Exception\\InvalidArgumentException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php',
|
||||||
|
'GuzzleHttp\\Exception\\RequestException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/RequestException.php',
|
||||||
|
'GuzzleHttp\\Exception\\ServerException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/ServerException.php',
|
||||||
|
'GuzzleHttp\\Exception\\TooManyRedirectsException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php',
|
||||||
|
'GuzzleHttp\\Exception\\TransferException' => $vendorDir . '/guzzlehttp/guzzle/src/Exception/TransferException.php',
|
||||||
|
'GuzzleHttp\\HandlerStack' => $vendorDir . '/guzzlehttp/guzzle/src/HandlerStack.php',
|
||||||
|
'GuzzleHttp\\Handler\\CurlFactory' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php',
|
||||||
|
'GuzzleHttp\\Handler\\CurlFactoryInterface' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php',
|
||||||
|
'GuzzleHttp\\Handler\\CurlHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php',
|
||||||
|
'GuzzleHttp\\Handler\\CurlMultiHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php',
|
||||||
|
'GuzzleHttp\\Handler\\EasyHandle' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php',
|
||||||
|
'GuzzleHttp\\Handler\\HeaderProcessor' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php',
|
||||||
|
'GuzzleHttp\\Handler\\MockHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/MockHandler.php',
|
||||||
|
'GuzzleHttp\\Handler\\Proxy' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/Proxy.php',
|
||||||
|
'GuzzleHttp\\Handler\\StreamHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php',
|
||||||
|
'GuzzleHttp\\MessageFormatter' => $vendorDir . '/guzzlehttp/guzzle/src/MessageFormatter.php',
|
||||||
|
'GuzzleHttp\\MessageFormatterInterface' => $vendorDir . '/guzzlehttp/guzzle/src/MessageFormatterInterface.php',
|
||||||
|
'GuzzleHttp\\Middleware' => $vendorDir . '/guzzlehttp/guzzle/src/Middleware.php',
|
||||||
|
'GuzzleHttp\\Pool' => $vendorDir . '/guzzlehttp/guzzle/src/Pool.php',
|
||||||
|
'GuzzleHttp\\PrepareBodyMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php',
|
||||||
|
'GuzzleHttp\\Promise\\AggregateException' => $vendorDir . '/guzzlehttp/promises/src/AggregateException.php',
|
||||||
|
'GuzzleHttp\\Promise\\CancellationException' => $vendorDir . '/guzzlehttp/promises/src/CancellationException.php',
|
||||||
|
'GuzzleHttp\\Promise\\Coroutine' => $vendorDir . '/guzzlehttp/promises/src/Coroutine.php',
|
||||||
|
'GuzzleHttp\\Promise\\Create' => $vendorDir . '/guzzlehttp/promises/src/Create.php',
|
||||||
|
'GuzzleHttp\\Promise\\Each' => $vendorDir . '/guzzlehttp/promises/src/Each.php',
|
||||||
|
'GuzzleHttp\\Promise\\EachPromise' => $vendorDir . '/guzzlehttp/promises/src/EachPromise.php',
|
||||||
|
'GuzzleHttp\\Promise\\FulfilledPromise' => $vendorDir . '/guzzlehttp/promises/src/FulfilledPromise.php',
|
||||||
|
'GuzzleHttp\\Promise\\Is' => $vendorDir . '/guzzlehttp/promises/src/Is.php',
|
||||||
|
'GuzzleHttp\\Promise\\Promise' => $vendorDir . '/guzzlehttp/promises/src/Promise.php',
|
||||||
|
'GuzzleHttp\\Promise\\PromiseInterface' => $vendorDir . '/guzzlehttp/promises/src/PromiseInterface.php',
|
||||||
|
'GuzzleHttp\\Promise\\PromisorInterface' => $vendorDir . '/guzzlehttp/promises/src/PromisorInterface.php',
|
||||||
|
'GuzzleHttp\\Promise\\RejectedPromise' => $vendorDir . '/guzzlehttp/promises/src/RejectedPromise.php',
|
||||||
|
'GuzzleHttp\\Promise\\RejectionException' => $vendorDir . '/guzzlehttp/promises/src/RejectionException.php',
|
||||||
|
'GuzzleHttp\\Promise\\TaskQueue' => $vendorDir . '/guzzlehttp/promises/src/TaskQueue.php',
|
||||||
|
'GuzzleHttp\\Promise\\TaskQueueInterface' => $vendorDir . '/guzzlehttp/promises/src/TaskQueueInterface.php',
|
||||||
|
'GuzzleHttp\\Promise\\Utils' => $vendorDir . '/guzzlehttp/promises/src/Utils.php',
|
||||||
|
'GuzzleHttp\\Psr7\\AppendStream' => $vendorDir . '/guzzlehttp/psr7/src/AppendStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\BufferStream' => $vendorDir . '/guzzlehttp/psr7/src/BufferStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\CachingStream' => $vendorDir . '/guzzlehttp/psr7/src/CachingStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\DroppingStream' => $vendorDir . '/guzzlehttp/psr7/src/DroppingStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Exception\\MalformedUriException' => $vendorDir . '/guzzlehttp/psr7/src/Exception/MalformedUriException.php',
|
||||||
|
'GuzzleHttp\\Psr7\\FnStream' => $vendorDir . '/guzzlehttp/psr7/src/FnStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Header' => $vendorDir . '/guzzlehttp/psr7/src/Header.php',
|
||||||
|
'GuzzleHttp\\Psr7\\HttpFactory' => $vendorDir . '/guzzlehttp/psr7/src/HttpFactory.php',
|
||||||
|
'GuzzleHttp\\Psr7\\InflateStream' => $vendorDir . '/guzzlehttp/psr7/src/InflateStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\LazyOpenStream' => $vendorDir . '/guzzlehttp/psr7/src/LazyOpenStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\LimitStream' => $vendorDir . '/guzzlehttp/psr7/src/LimitStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Message' => $vendorDir . '/guzzlehttp/psr7/src/Message.php',
|
||||||
|
'GuzzleHttp\\Psr7\\MessageTrait' => $vendorDir . '/guzzlehttp/psr7/src/MessageTrait.php',
|
||||||
|
'GuzzleHttp\\Psr7\\MimeType' => $vendorDir . '/guzzlehttp/psr7/src/MimeType.php',
|
||||||
|
'GuzzleHttp\\Psr7\\MultipartStream' => $vendorDir . '/guzzlehttp/psr7/src/MultipartStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\NoSeekStream' => $vendorDir . '/guzzlehttp/psr7/src/NoSeekStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\PumpStream' => $vendorDir . '/guzzlehttp/psr7/src/PumpStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Query' => $vendorDir . '/guzzlehttp/psr7/src/Query.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Request' => $vendorDir . '/guzzlehttp/psr7/src/Request.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Response' => $vendorDir . '/guzzlehttp/psr7/src/Response.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Rfc7230' => $vendorDir . '/guzzlehttp/psr7/src/Rfc7230.php',
|
||||||
|
'GuzzleHttp\\Psr7\\ServerRequest' => $vendorDir . '/guzzlehttp/psr7/src/ServerRequest.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Stream' => $vendorDir . '/guzzlehttp/psr7/src/Stream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\StreamDecoratorTrait' => $vendorDir . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php',
|
||||||
|
'GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php',
|
||||||
|
'GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php',
|
||||||
|
'GuzzleHttp\\Psr7\\UriComparator' => $vendorDir . '/guzzlehttp/psr7/src/UriComparator.php',
|
||||||
|
'GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php',
|
||||||
|
'GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Utils' => $vendorDir . '/guzzlehttp/psr7/src/Utils.php',
|
||||||
|
'GuzzleHttp\\RedirectMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RedirectMiddleware.php',
|
||||||
|
'GuzzleHttp\\RequestOptions' => $vendorDir . '/guzzlehttp/guzzle/src/RequestOptions.php',
|
||||||
|
'GuzzleHttp\\RetryMiddleware' => $vendorDir . '/guzzlehttp/guzzle/src/RetryMiddleware.php',
|
||||||
|
'GuzzleHttp\\TransferStats' => $vendorDir . '/guzzlehttp/guzzle/src/TransferStats.php',
|
||||||
|
'GuzzleHttp\\Utils' => $vendorDir . '/guzzlehttp/guzzle/src/Utils.php',
|
||||||
|
'Psr\\Http\\Client\\ClientExceptionInterface' => $vendorDir . '/psr/http-client/src/ClientExceptionInterface.php',
|
||||||
|
'Psr\\Http\\Client\\ClientInterface' => $vendorDir . '/psr/http-client/src/ClientInterface.php',
|
||||||
|
'Psr\\Http\\Client\\NetworkExceptionInterface' => $vendorDir . '/psr/http-client/src/NetworkExceptionInterface.php',
|
||||||
|
'Psr\\Http\\Client\\RequestExceptionInterface' => $vendorDir . '/psr/http-client/src/RequestExceptionInterface.php',
|
||||||
|
'Psr\\Http\\Message\\MessageInterface' => $vendorDir . '/psr/http-message/src/MessageInterface.php',
|
||||||
|
'Psr\\Http\\Message\\RequestFactoryInterface' => $vendorDir . '/psr/http-factory/src/RequestFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\RequestInterface' => $vendorDir . '/psr/http-message/src/RequestInterface.php',
|
||||||
|
'Psr\\Http\\Message\\ResponseFactoryInterface' => $vendorDir . '/psr/http-factory/src/ResponseFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\ResponseInterface' => $vendorDir . '/psr/http-message/src/ResponseInterface.php',
|
||||||
|
'Psr\\Http\\Message\\ServerRequestFactoryInterface' => $vendorDir . '/psr/http-factory/src/ServerRequestFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\ServerRequestInterface' => $vendorDir . '/psr/http-message/src/ServerRequestInterface.php',
|
||||||
|
'Psr\\Http\\Message\\StreamFactoryInterface' => $vendorDir . '/psr/http-factory/src/StreamFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\StreamInterface' => $vendorDir . '/psr/http-message/src/StreamInterface.php',
|
||||||
|
'Psr\\Http\\Message\\UploadedFileFactoryInterface' => $vendorDir . '/psr/http-factory/src/UploadedFileFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\UploadedFileInterface' => $vendorDir . '/psr/http-message/src/UploadedFileInterface.php',
|
||||||
|
'Psr\\Http\\Message\\UriFactoryInterface' => $vendorDir . '/psr/http-factory/src/UriFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\UriInterface' => $vendorDir . '/psr/http-message/src/UriInterface.php',
|
||||||
|
'Stripe\\Account' => $vendorDir . '/stripe/stripe-php/lib/Account.php',
|
||||||
|
'Stripe\\AccountLink' => $vendorDir . '/stripe/stripe-php/lib/AccountLink.php',
|
||||||
|
'Stripe\\AccountSession' => $vendorDir . '/stripe/stripe-php/lib/AccountSession.php',
|
||||||
|
'Stripe\\ApiOperations\\All' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/All.php',
|
||||||
|
'Stripe\\ApiOperations\\Create' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Create.php',
|
||||||
|
'Stripe\\ApiOperations\\Delete' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Delete.php',
|
||||||
|
'Stripe\\ApiOperations\\NestedResource' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/NestedResource.php',
|
||||||
|
'Stripe\\ApiOperations\\Request' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Request.php',
|
||||||
|
'Stripe\\ApiOperations\\Retrieve' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Retrieve.php',
|
||||||
|
'Stripe\\ApiOperations\\Search' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Search.php',
|
||||||
|
'Stripe\\ApiOperations\\SingletonRetrieve' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/SingletonRetrieve.php',
|
||||||
|
'Stripe\\ApiOperations\\Update' => $vendorDir . '/stripe/stripe-php/lib/ApiOperations/Update.php',
|
||||||
|
'Stripe\\ApiRequestor' => $vendorDir . '/stripe/stripe-php/lib/ApiRequestor.php',
|
||||||
|
'Stripe\\ApiResource' => $vendorDir . '/stripe/stripe-php/lib/ApiResource.php',
|
||||||
|
'Stripe\\ApiResponse' => $vendorDir . '/stripe/stripe-php/lib/ApiResponse.php',
|
||||||
|
'Stripe\\ApplePayDomain' => $vendorDir . '/stripe/stripe-php/lib/ApplePayDomain.php',
|
||||||
|
'Stripe\\Application' => $vendorDir . '/stripe/stripe-php/lib/Application.php',
|
||||||
|
'Stripe\\ApplicationFee' => $vendorDir . '/stripe/stripe-php/lib/ApplicationFee.php',
|
||||||
|
'Stripe\\ApplicationFeeRefund' => $vendorDir . '/stripe/stripe-php/lib/ApplicationFeeRefund.php',
|
||||||
|
'Stripe\\Apps\\Secret' => $vendorDir . '/stripe/stripe-php/lib/Apps/Secret.php',
|
||||||
|
'Stripe\\Balance' => $vendorDir . '/stripe/stripe-php/lib/Balance.php',
|
||||||
|
'Stripe\\BalanceTransaction' => $vendorDir . '/stripe/stripe-php/lib/BalanceTransaction.php',
|
||||||
|
'Stripe\\BankAccount' => $vendorDir . '/stripe/stripe-php/lib/BankAccount.php',
|
||||||
|
'Stripe\\BaseStripeClient' => $vendorDir . '/stripe/stripe-php/lib/BaseStripeClient.php',
|
||||||
|
'Stripe\\BaseStripeClientInterface' => $vendorDir . '/stripe/stripe-php/lib/BaseStripeClientInterface.php',
|
||||||
|
'Stripe\\BillingPortal\\Configuration' => $vendorDir . '/stripe/stripe-php/lib/BillingPortal/Configuration.php',
|
||||||
|
'Stripe\\BillingPortal\\Session' => $vendorDir . '/stripe/stripe-php/lib/BillingPortal/Session.php',
|
||||||
|
'Stripe\\Billing\\Meter' => $vendorDir . '/stripe/stripe-php/lib/Billing/Meter.php',
|
||||||
|
'Stripe\\Billing\\MeterEvent' => $vendorDir . '/stripe/stripe-php/lib/Billing/MeterEvent.php',
|
||||||
|
'Stripe\\Billing\\MeterEventAdjustment' => $vendorDir . '/stripe/stripe-php/lib/Billing/MeterEventAdjustment.php',
|
||||||
|
'Stripe\\Billing\\MeterEventSummary' => $vendorDir . '/stripe/stripe-php/lib/Billing/MeterEventSummary.php',
|
||||||
|
'Stripe\\Capability' => $vendorDir . '/stripe/stripe-php/lib/Capability.php',
|
||||||
|
'Stripe\\Card' => $vendorDir . '/stripe/stripe-php/lib/Card.php',
|
||||||
|
'Stripe\\CashBalance' => $vendorDir . '/stripe/stripe-php/lib/CashBalance.php',
|
||||||
|
'Stripe\\Charge' => $vendorDir . '/stripe/stripe-php/lib/Charge.php',
|
||||||
|
'Stripe\\Checkout\\Session' => $vendorDir . '/stripe/stripe-php/lib/Checkout/Session.php',
|
||||||
|
'Stripe\\Climate\\Order' => $vendorDir . '/stripe/stripe-php/lib/Climate/Order.php',
|
||||||
|
'Stripe\\Climate\\Product' => $vendorDir . '/stripe/stripe-php/lib/Climate/Product.php',
|
||||||
|
'Stripe\\Climate\\Supplier' => $vendorDir . '/stripe/stripe-php/lib/Climate/Supplier.php',
|
||||||
|
'Stripe\\Collection' => $vendorDir . '/stripe/stripe-php/lib/Collection.php',
|
||||||
|
'Stripe\\ConfirmationToken' => $vendorDir . '/stripe/stripe-php/lib/ConfirmationToken.php',
|
||||||
|
'Stripe\\ConnectCollectionTransfer' => $vendorDir . '/stripe/stripe-php/lib/ConnectCollectionTransfer.php',
|
||||||
|
'Stripe\\CountrySpec' => $vendorDir . '/stripe/stripe-php/lib/CountrySpec.php',
|
||||||
|
'Stripe\\Coupon' => $vendorDir . '/stripe/stripe-php/lib/Coupon.php',
|
||||||
|
'Stripe\\CreditNote' => $vendorDir . '/stripe/stripe-php/lib/CreditNote.php',
|
||||||
|
'Stripe\\CreditNoteLineItem' => $vendorDir . '/stripe/stripe-php/lib/CreditNoteLineItem.php',
|
||||||
|
'Stripe\\Customer' => $vendorDir . '/stripe/stripe-php/lib/Customer.php',
|
||||||
|
'Stripe\\CustomerBalanceTransaction' => $vendorDir . '/stripe/stripe-php/lib/CustomerBalanceTransaction.php',
|
||||||
|
'Stripe\\CustomerCashBalanceTransaction' => $vendorDir . '/stripe/stripe-php/lib/CustomerCashBalanceTransaction.php',
|
||||||
|
'Stripe\\CustomerSession' => $vendorDir . '/stripe/stripe-php/lib/CustomerSession.php',
|
||||||
|
'Stripe\\Discount' => $vendorDir . '/stripe/stripe-php/lib/Discount.php',
|
||||||
|
'Stripe\\Dispute' => $vendorDir . '/stripe/stripe-php/lib/Dispute.php',
|
||||||
|
'Stripe\\Entitlements\\ActiveEntitlement' => $vendorDir . '/stripe/stripe-php/lib/Entitlements/ActiveEntitlement.php',
|
||||||
|
'Stripe\\Entitlements\\Feature' => $vendorDir . '/stripe/stripe-php/lib/Entitlements/Feature.php',
|
||||||
|
'Stripe\\EphemeralKey' => $vendorDir . '/stripe/stripe-php/lib/EphemeralKey.php',
|
||||||
|
'Stripe\\ErrorObject' => $vendorDir . '/stripe/stripe-php/lib/ErrorObject.php',
|
||||||
|
'Stripe\\Event' => $vendorDir . '/stripe/stripe-php/lib/Event.php',
|
||||||
|
'Stripe\\Exception\\ApiConnectionException' => $vendorDir . '/stripe/stripe-php/lib/Exception/ApiConnectionException.php',
|
||||||
|
'Stripe\\Exception\\ApiErrorException' => $vendorDir . '/stripe/stripe-php/lib/Exception/ApiErrorException.php',
|
||||||
|
'Stripe\\Exception\\AuthenticationException' => $vendorDir . '/stripe/stripe-php/lib/Exception/AuthenticationException.php',
|
||||||
|
'Stripe\\Exception\\BadMethodCallException' => $vendorDir . '/stripe/stripe-php/lib/Exception/BadMethodCallException.php',
|
||||||
|
'Stripe\\Exception\\CardException' => $vendorDir . '/stripe/stripe-php/lib/Exception/CardException.php',
|
||||||
|
'Stripe\\Exception\\ExceptionInterface' => $vendorDir . '/stripe/stripe-php/lib/Exception/ExceptionInterface.php',
|
||||||
|
'Stripe\\Exception\\IdempotencyException' => $vendorDir . '/stripe/stripe-php/lib/Exception/IdempotencyException.php',
|
||||||
|
'Stripe\\Exception\\InvalidArgumentException' => $vendorDir . '/stripe/stripe-php/lib/Exception/InvalidArgumentException.php',
|
||||||
|
'Stripe\\Exception\\InvalidRequestException' => $vendorDir . '/stripe/stripe-php/lib/Exception/InvalidRequestException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\ExceptionInterface' => $vendorDir . '/stripe/stripe-php/lib/Exception/OAuth/ExceptionInterface.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\InvalidClientException' => $vendorDir . '/stripe/stripe-php/lib/Exception/OAuth/InvalidClientException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\InvalidGrantException' => $vendorDir . '/stripe/stripe-php/lib/Exception/OAuth/InvalidGrantException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\InvalidRequestException' => $vendorDir . '/stripe/stripe-php/lib/Exception/OAuth/InvalidRequestException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\InvalidScopeException' => $vendorDir . '/stripe/stripe-php/lib/Exception/OAuth/InvalidScopeException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\OAuthErrorException' => $vendorDir . '/stripe/stripe-php/lib/Exception/OAuth/OAuthErrorException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\UnknownOAuthErrorException' => $vendorDir . '/stripe/stripe-php/lib/Exception/OAuth/UnknownOAuthErrorException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\UnsupportedGrantTypeException' => $vendorDir . '/stripe/stripe-php/lib/Exception/OAuth/UnsupportedGrantTypeException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\UnsupportedResponseTypeException' => $vendorDir . '/stripe/stripe-php/lib/Exception/OAuth/UnsupportedResponseTypeException.php',
|
||||||
|
'Stripe\\Exception\\PermissionException' => $vendorDir . '/stripe/stripe-php/lib/Exception/PermissionException.php',
|
||||||
|
'Stripe\\Exception\\RateLimitException' => $vendorDir . '/stripe/stripe-php/lib/Exception/RateLimitException.php',
|
||||||
|
'Stripe\\Exception\\SignatureVerificationException' => $vendorDir . '/stripe/stripe-php/lib/Exception/SignatureVerificationException.php',
|
||||||
|
'Stripe\\Exception\\UnexpectedValueException' => $vendorDir . '/stripe/stripe-php/lib/Exception/UnexpectedValueException.php',
|
||||||
|
'Stripe\\Exception\\UnknownApiErrorException' => $vendorDir . '/stripe/stripe-php/lib/Exception/UnknownApiErrorException.php',
|
||||||
|
'Stripe\\ExchangeRate' => $vendorDir . '/stripe/stripe-php/lib/ExchangeRate.php',
|
||||||
|
'Stripe\\File' => $vendorDir . '/stripe/stripe-php/lib/File.php',
|
||||||
|
'Stripe\\FileLink' => $vendorDir . '/stripe/stripe-php/lib/FileLink.php',
|
||||||
|
'Stripe\\FinancialConnections\\Account' => $vendorDir . '/stripe/stripe-php/lib/FinancialConnections/Account.php',
|
||||||
|
'Stripe\\FinancialConnections\\AccountOwner' => $vendorDir . '/stripe/stripe-php/lib/FinancialConnections/AccountOwner.php',
|
||||||
|
'Stripe\\FinancialConnections\\AccountOwnership' => $vendorDir . '/stripe/stripe-php/lib/FinancialConnections/AccountOwnership.php',
|
||||||
|
'Stripe\\FinancialConnections\\Session' => $vendorDir . '/stripe/stripe-php/lib/FinancialConnections/Session.php',
|
||||||
|
'Stripe\\FinancialConnections\\Transaction' => $vendorDir . '/stripe/stripe-php/lib/FinancialConnections/Transaction.php',
|
||||||
|
'Stripe\\Forwarding\\Request' => $vendorDir . '/stripe/stripe-php/lib/Forwarding/Request.php',
|
||||||
|
'Stripe\\FundingInstructions' => $vendorDir . '/stripe/stripe-php/lib/FundingInstructions.php',
|
||||||
|
'Stripe\\HttpClient\\ClientInterface' => $vendorDir . '/stripe/stripe-php/lib/HttpClient/ClientInterface.php',
|
||||||
|
'Stripe\\HttpClient\\CurlClient' => $vendorDir . '/stripe/stripe-php/lib/HttpClient/CurlClient.php',
|
||||||
|
'Stripe\\HttpClient\\StreamingClientInterface' => $vendorDir . '/stripe/stripe-php/lib/HttpClient/StreamingClientInterface.php',
|
||||||
|
'Stripe\\Identity\\VerificationReport' => $vendorDir . '/stripe/stripe-php/lib/Identity/VerificationReport.php',
|
||||||
|
'Stripe\\Identity\\VerificationSession' => $vendorDir . '/stripe/stripe-php/lib/Identity/VerificationSession.php',
|
||||||
|
'Stripe\\Invoice' => $vendorDir . '/stripe/stripe-php/lib/Invoice.php',
|
||||||
|
'Stripe\\InvoiceItem' => $vendorDir . '/stripe/stripe-php/lib/InvoiceItem.php',
|
||||||
|
'Stripe\\InvoiceLineItem' => $vendorDir . '/stripe/stripe-php/lib/InvoiceLineItem.php',
|
||||||
|
'Stripe\\Issuing\\Authorization' => $vendorDir . '/stripe/stripe-php/lib/Issuing/Authorization.php',
|
||||||
|
'Stripe\\Issuing\\Card' => $vendorDir . '/stripe/stripe-php/lib/Issuing/Card.php',
|
||||||
|
'Stripe\\Issuing\\CardDetails' => $vendorDir . '/stripe/stripe-php/lib/Issuing/CardDetails.php',
|
||||||
|
'Stripe\\Issuing\\Cardholder' => $vendorDir . '/stripe/stripe-php/lib/Issuing/Cardholder.php',
|
||||||
|
'Stripe\\Issuing\\Dispute' => $vendorDir . '/stripe/stripe-php/lib/Issuing/Dispute.php',
|
||||||
|
'Stripe\\Issuing\\PersonalizationDesign' => $vendorDir . '/stripe/stripe-php/lib/Issuing/PersonalizationDesign.php',
|
||||||
|
'Stripe\\Issuing\\PhysicalBundle' => $vendorDir . '/stripe/stripe-php/lib/Issuing/PhysicalBundle.php',
|
||||||
|
'Stripe\\Issuing\\Token' => $vendorDir . '/stripe/stripe-php/lib/Issuing/Token.php',
|
||||||
|
'Stripe\\Issuing\\Transaction' => $vendorDir . '/stripe/stripe-php/lib/Issuing/Transaction.php',
|
||||||
|
'Stripe\\LineItem' => $vendorDir . '/stripe/stripe-php/lib/LineItem.php',
|
||||||
|
'Stripe\\LoginLink' => $vendorDir . '/stripe/stripe-php/lib/LoginLink.php',
|
||||||
|
'Stripe\\Mandate' => $vendorDir . '/stripe/stripe-php/lib/Mandate.php',
|
||||||
|
'Stripe\\OAuth' => $vendorDir . '/stripe/stripe-php/lib/OAuth.php',
|
||||||
|
'Stripe\\OAuthErrorObject' => $vendorDir . '/stripe/stripe-php/lib/OAuthErrorObject.php',
|
||||||
|
'Stripe\\PaymentIntent' => $vendorDir . '/stripe/stripe-php/lib/PaymentIntent.php',
|
||||||
|
'Stripe\\PaymentLink' => $vendorDir . '/stripe/stripe-php/lib/PaymentLink.php',
|
||||||
|
'Stripe\\PaymentMethod' => $vendorDir . '/stripe/stripe-php/lib/PaymentMethod.php',
|
||||||
|
'Stripe\\PaymentMethodConfiguration' => $vendorDir . '/stripe/stripe-php/lib/PaymentMethodConfiguration.php',
|
||||||
|
'Stripe\\PaymentMethodDomain' => $vendorDir . '/stripe/stripe-php/lib/PaymentMethodDomain.php',
|
||||||
|
'Stripe\\Payout' => $vendorDir . '/stripe/stripe-php/lib/Payout.php',
|
||||||
|
'Stripe\\Person' => $vendorDir . '/stripe/stripe-php/lib/Person.php',
|
||||||
|
'Stripe\\Plan' => $vendorDir . '/stripe/stripe-php/lib/Plan.php',
|
||||||
|
'Stripe\\PlatformTaxFee' => $vendorDir . '/stripe/stripe-php/lib/PlatformTaxFee.php',
|
||||||
|
'Stripe\\Price' => $vendorDir . '/stripe/stripe-php/lib/Price.php',
|
||||||
|
'Stripe\\Product' => $vendorDir . '/stripe/stripe-php/lib/Product.php',
|
||||||
|
'Stripe\\ProductFeature' => $vendorDir . '/stripe/stripe-php/lib/ProductFeature.php',
|
||||||
|
'Stripe\\PromotionCode' => $vendorDir . '/stripe/stripe-php/lib/PromotionCode.php',
|
||||||
|
'Stripe\\Quote' => $vendorDir . '/stripe/stripe-php/lib/Quote.php',
|
||||||
|
'Stripe\\Radar\\EarlyFraudWarning' => $vendorDir . '/stripe/stripe-php/lib/Radar/EarlyFraudWarning.php',
|
||||||
|
'Stripe\\Radar\\ValueList' => $vendorDir . '/stripe/stripe-php/lib/Radar/ValueList.php',
|
||||||
|
'Stripe\\Radar\\ValueListItem' => $vendorDir . '/stripe/stripe-php/lib/Radar/ValueListItem.php',
|
||||||
|
'Stripe\\RecipientTransfer' => $vendorDir . '/stripe/stripe-php/lib/RecipientTransfer.php',
|
||||||
|
'Stripe\\Refund' => $vendorDir . '/stripe/stripe-php/lib/Refund.php',
|
||||||
|
'Stripe\\Reporting\\ReportRun' => $vendorDir . '/stripe/stripe-php/lib/Reporting/ReportRun.php',
|
||||||
|
'Stripe\\Reporting\\ReportType' => $vendorDir . '/stripe/stripe-php/lib/Reporting/ReportType.php',
|
||||||
|
'Stripe\\RequestTelemetry' => $vendorDir . '/stripe/stripe-php/lib/RequestTelemetry.php',
|
||||||
|
'Stripe\\ReserveTransaction' => $vendorDir . '/stripe/stripe-php/lib/ReserveTransaction.php',
|
||||||
|
'Stripe\\Review' => $vendorDir . '/stripe/stripe-php/lib/Review.php',
|
||||||
|
'Stripe\\SearchResult' => $vendorDir . '/stripe/stripe-php/lib/SearchResult.php',
|
||||||
|
'Stripe\\Service\\AbstractService' => $vendorDir . '/stripe/stripe-php/lib/Service/AbstractService.php',
|
||||||
|
'Stripe\\Service\\AbstractServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/AbstractServiceFactory.php',
|
||||||
|
'Stripe\\Service\\AccountLinkService' => $vendorDir . '/stripe/stripe-php/lib/Service/AccountLinkService.php',
|
||||||
|
'Stripe\\Service\\AccountService' => $vendorDir . '/stripe/stripe-php/lib/Service/AccountService.php',
|
||||||
|
'Stripe\\Service\\AccountSessionService' => $vendorDir . '/stripe/stripe-php/lib/Service/AccountSessionService.php',
|
||||||
|
'Stripe\\Service\\ApplePayDomainService' => $vendorDir . '/stripe/stripe-php/lib/Service/ApplePayDomainService.php',
|
||||||
|
'Stripe\\Service\\ApplicationFeeService' => $vendorDir . '/stripe/stripe-php/lib/Service/ApplicationFeeService.php',
|
||||||
|
'Stripe\\Service\\Apps\\AppsServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Apps/AppsServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Apps\\SecretService' => $vendorDir . '/stripe/stripe-php/lib/Service/Apps/SecretService.php',
|
||||||
|
'Stripe\\Service\\BalanceService' => $vendorDir . '/stripe/stripe-php/lib/Service/BalanceService.php',
|
||||||
|
'Stripe\\Service\\BalanceTransactionService' => $vendorDir . '/stripe/stripe-php/lib/Service/BalanceTransactionService.php',
|
||||||
|
'Stripe\\Service\\BillingPortal\\BillingPortalServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/BillingPortal/BillingPortalServiceFactory.php',
|
||||||
|
'Stripe\\Service\\BillingPortal\\ConfigurationService' => $vendorDir . '/stripe/stripe-php/lib/Service/BillingPortal/ConfigurationService.php',
|
||||||
|
'Stripe\\Service\\BillingPortal\\SessionService' => $vendorDir . '/stripe/stripe-php/lib/Service/BillingPortal/SessionService.php',
|
||||||
|
'Stripe\\Service\\Billing\\BillingServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Billing/BillingServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Billing\\MeterEventAdjustmentService' => $vendorDir . '/stripe/stripe-php/lib/Service/Billing/MeterEventAdjustmentService.php',
|
||||||
|
'Stripe\\Service\\Billing\\MeterEventService' => $vendorDir . '/stripe/stripe-php/lib/Service/Billing/MeterEventService.php',
|
||||||
|
'Stripe\\Service\\Billing\\MeterService' => $vendorDir . '/stripe/stripe-php/lib/Service/Billing/MeterService.php',
|
||||||
|
'Stripe\\Service\\ChargeService' => $vendorDir . '/stripe/stripe-php/lib/Service/ChargeService.php',
|
||||||
|
'Stripe\\Service\\Checkout\\CheckoutServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Checkout/CheckoutServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Checkout\\SessionService' => $vendorDir . '/stripe/stripe-php/lib/Service/Checkout/SessionService.php',
|
||||||
|
'Stripe\\Service\\Climate\\ClimateServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Climate/ClimateServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Climate\\OrderService' => $vendorDir . '/stripe/stripe-php/lib/Service/Climate/OrderService.php',
|
||||||
|
'Stripe\\Service\\Climate\\ProductService' => $vendorDir . '/stripe/stripe-php/lib/Service/Climate/ProductService.php',
|
||||||
|
'Stripe\\Service\\Climate\\SupplierService' => $vendorDir . '/stripe/stripe-php/lib/Service/Climate/SupplierService.php',
|
||||||
|
'Stripe\\Service\\ConfirmationTokenService' => $vendorDir . '/stripe/stripe-php/lib/Service/ConfirmationTokenService.php',
|
||||||
|
'Stripe\\Service\\CoreServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/CoreServiceFactory.php',
|
||||||
|
'Stripe\\Service\\CountrySpecService' => $vendorDir . '/stripe/stripe-php/lib/Service/CountrySpecService.php',
|
||||||
|
'Stripe\\Service\\CouponService' => $vendorDir . '/stripe/stripe-php/lib/Service/CouponService.php',
|
||||||
|
'Stripe\\Service\\CreditNoteService' => $vendorDir . '/stripe/stripe-php/lib/Service/CreditNoteService.php',
|
||||||
|
'Stripe\\Service\\CustomerService' => $vendorDir . '/stripe/stripe-php/lib/Service/CustomerService.php',
|
||||||
|
'Stripe\\Service\\CustomerSessionService' => $vendorDir . '/stripe/stripe-php/lib/Service/CustomerSessionService.php',
|
||||||
|
'Stripe\\Service\\DisputeService' => $vendorDir . '/stripe/stripe-php/lib/Service/DisputeService.php',
|
||||||
|
'Stripe\\Service\\Entitlements\\ActiveEntitlementService' => $vendorDir . '/stripe/stripe-php/lib/Service/Entitlements/ActiveEntitlementService.php',
|
||||||
|
'Stripe\\Service\\Entitlements\\EntitlementsServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Entitlements/EntitlementsServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Entitlements\\FeatureService' => $vendorDir . '/stripe/stripe-php/lib/Service/Entitlements/FeatureService.php',
|
||||||
|
'Stripe\\Service\\EphemeralKeyService' => $vendorDir . '/stripe/stripe-php/lib/Service/EphemeralKeyService.php',
|
||||||
|
'Stripe\\Service\\EventService' => $vendorDir . '/stripe/stripe-php/lib/Service/EventService.php',
|
||||||
|
'Stripe\\Service\\ExchangeRateService' => $vendorDir . '/stripe/stripe-php/lib/Service/ExchangeRateService.php',
|
||||||
|
'Stripe\\Service\\FileLinkService' => $vendorDir . '/stripe/stripe-php/lib/Service/FileLinkService.php',
|
||||||
|
'Stripe\\Service\\FileService' => $vendorDir . '/stripe/stripe-php/lib/Service/FileService.php',
|
||||||
|
'Stripe\\Service\\FinancialConnections\\AccountService' => $vendorDir . '/stripe/stripe-php/lib/Service/FinancialConnections/AccountService.php',
|
||||||
|
'Stripe\\Service\\FinancialConnections\\FinancialConnectionsServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/FinancialConnections/FinancialConnectionsServiceFactory.php',
|
||||||
|
'Stripe\\Service\\FinancialConnections\\SessionService' => $vendorDir . '/stripe/stripe-php/lib/Service/FinancialConnections/SessionService.php',
|
||||||
|
'Stripe\\Service\\FinancialConnections\\TransactionService' => $vendorDir . '/stripe/stripe-php/lib/Service/FinancialConnections/TransactionService.php',
|
||||||
|
'Stripe\\Service\\Forwarding\\ForwardingServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Forwarding/ForwardingServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Forwarding\\RequestService' => $vendorDir . '/stripe/stripe-php/lib/Service/Forwarding/RequestService.php',
|
||||||
|
'Stripe\\Service\\Identity\\IdentityServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Identity/IdentityServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Identity\\VerificationReportService' => $vendorDir . '/stripe/stripe-php/lib/Service/Identity/VerificationReportService.php',
|
||||||
|
'Stripe\\Service\\Identity\\VerificationSessionService' => $vendorDir . '/stripe/stripe-php/lib/Service/Identity/VerificationSessionService.php',
|
||||||
|
'Stripe\\Service\\InvoiceItemService' => $vendorDir . '/stripe/stripe-php/lib/Service/InvoiceItemService.php',
|
||||||
|
'Stripe\\Service\\InvoiceService' => $vendorDir . '/stripe/stripe-php/lib/Service/InvoiceService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\AuthorizationService' => $vendorDir . '/stripe/stripe-php/lib/Service/Issuing/AuthorizationService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\CardService' => $vendorDir . '/stripe/stripe-php/lib/Service/Issuing/CardService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\CardholderService' => $vendorDir . '/stripe/stripe-php/lib/Service/Issuing/CardholderService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\DisputeService' => $vendorDir . '/stripe/stripe-php/lib/Service/Issuing/DisputeService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\IssuingServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Issuing/IssuingServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Issuing\\PersonalizationDesignService' => $vendorDir . '/stripe/stripe-php/lib/Service/Issuing/PersonalizationDesignService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\PhysicalBundleService' => $vendorDir . '/stripe/stripe-php/lib/Service/Issuing/PhysicalBundleService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\TokenService' => $vendorDir . '/stripe/stripe-php/lib/Service/Issuing/TokenService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\TransactionService' => $vendorDir . '/stripe/stripe-php/lib/Service/Issuing/TransactionService.php',
|
||||||
|
'Stripe\\Service\\MandateService' => $vendorDir . '/stripe/stripe-php/lib/Service/MandateService.php',
|
||||||
|
'Stripe\\Service\\OAuthService' => $vendorDir . '/stripe/stripe-php/lib/Service/OAuthService.php',
|
||||||
|
'Stripe\\Service\\PaymentIntentService' => $vendorDir . '/stripe/stripe-php/lib/Service/PaymentIntentService.php',
|
||||||
|
'Stripe\\Service\\PaymentLinkService' => $vendorDir . '/stripe/stripe-php/lib/Service/PaymentLinkService.php',
|
||||||
|
'Stripe\\Service\\PaymentMethodConfigurationService' => $vendorDir . '/stripe/stripe-php/lib/Service/PaymentMethodConfigurationService.php',
|
||||||
|
'Stripe\\Service\\PaymentMethodDomainService' => $vendorDir . '/stripe/stripe-php/lib/Service/PaymentMethodDomainService.php',
|
||||||
|
'Stripe\\Service\\PaymentMethodService' => $vendorDir . '/stripe/stripe-php/lib/Service/PaymentMethodService.php',
|
||||||
|
'Stripe\\Service\\PayoutService' => $vendorDir . '/stripe/stripe-php/lib/Service/PayoutService.php',
|
||||||
|
'Stripe\\Service\\PlanService' => $vendorDir . '/stripe/stripe-php/lib/Service/PlanService.php',
|
||||||
|
'Stripe\\Service\\PriceService' => $vendorDir . '/stripe/stripe-php/lib/Service/PriceService.php',
|
||||||
|
'Stripe\\Service\\ProductService' => $vendorDir . '/stripe/stripe-php/lib/Service/ProductService.php',
|
||||||
|
'Stripe\\Service\\PromotionCodeService' => $vendorDir . '/stripe/stripe-php/lib/Service/PromotionCodeService.php',
|
||||||
|
'Stripe\\Service\\QuoteService' => $vendorDir . '/stripe/stripe-php/lib/Service/QuoteService.php',
|
||||||
|
'Stripe\\Service\\Radar\\EarlyFraudWarningService' => $vendorDir . '/stripe/stripe-php/lib/Service/Radar/EarlyFraudWarningService.php',
|
||||||
|
'Stripe\\Service\\Radar\\RadarServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Radar/RadarServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Radar\\ValueListItemService' => $vendorDir . '/stripe/stripe-php/lib/Service/Radar/ValueListItemService.php',
|
||||||
|
'Stripe\\Service\\Radar\\ValueListService' => $vendorDir . '/stripe/stripe-php/lib/Service/Radar/ValueListService.php',
|
||||||
|
'Stripe\\Service\\RefundService' => $vendorDir . '/stripe/stripe-php/lib/Service/RefundService.php',
|
||||||
|
'Stripe\\Service\\Reporting\\ReportRunService' => $vendorDir . '/stripe/stripe-php/lib/Service/Reporting/ReportRunService.php',
|
||||||
|
'Stripe\\Service\\Reporting\\ReportTypeService' => $vendorDir . '/stripe/stripe-php/lib/Service/Reporting/ReportTypeService.php',
|
||||||
|
'Stripe\\Service\\Reporting\\ReportingServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Reporting/ReportingServiceFactory.php',
|
||||||
|
'Stripe\\Service\\ReviewService' => $vendorDir . '/stripe/stripe-php/lib/Service/ReviewService.php',
|
||||||
|
'Stripe\\Service\\SetupAttemptService' => $vendorDir . '/stripe/stripe-php/lib/Service/SetupAttemptService.php',
|
||||||
|
'Stripe\\Service\\SetupIntentService' => $vendorDir . '/stripe/stripe-php/lib/Service/SetupIntentService.php',
|
||||||
|
'Stripe\\Service\\ShippingRateService' => $vendorDir . '/stripe/stripe-php/lib/Service/ShippingRateService.php',
|
||||||
|
'Stripe\\Service\\Sigma\\ScheduledQueryRunService' => $vendorDir . '/stripe/stripe-php/lib/Service/Sigma/ScheduledQueryRunService.php',
|
||||||
|
'Stripe\\Service\\Sigma\\SigmaServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Sigma/SigmaServiceFactory.php',
|
||||||
|
'Stripe\\Service\\SourceService' => $vendorDir . '/stripe/stripe-php/lib/Service/SourceService.php',
|
||||||
|
'Stripe\\Service\\SubscriptionItemService' => $vendorDir . '/stripe/stripe-php/lib/Service/SubscriptionItemService.php',
|
||||||
|
'Stripe\\Service\\SubscriptionScheduleService' => $vendorDir . '/stripe/stripe-php/lib/Service/SubscriptionScheduleService.php',
|
||||||
|
'Stripe\\Service\\SubscriptionService' => $vendorDir . '/stripe/stripe-php/lib/Service/SubscriptionService.php',
|
||||||
|
'Stripe\\Service\\TaxCodeService' => $vendorDir . '/stripe/stripe-php/lib/Service/TaxCodeService.php',
|
||||||
|
'Stripe\\Service\\TaxIdService' => $vendorDir . '/stripe/stripe-php/lib/Service/TaxIdService.php',
|
||||||
|
'Stripe\\Service\\TaxRateService' => $vendorDir . '/stripe/stripe-php/lib/Service/TaxRateService.php',
|
||||||
|
'Stripe\\Service\\Tax\\CalculationService' => $vendorDir . '/stripe/stripe-php/lib/Service/Tax/CalculationService.php',
|
||||||
|
'Stripe\\Service\\Tax\\RegistrationService' => $vendorDir . '/stripe/stripe-php/lib/Service/Tax/RegistrationService.php',
|
||||||
|
'Stripe\\Service\\Tax\\SettingsService' => $vendorDir . '/stripe/stripe-php/lib/Service/Tax/SettingsService.php',
|
||||||
|
'Stripe\\Service\\Tax\\TaxServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Tax/TaxServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Tax\\TransactionService' => $vendorDir . '/stripe/stripe-php/lib/Service/Tax/TransactionService.php',
|
||||||
|
'Stripe\\Service\\Terminal\\ConfigurationService' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/ConfigurationService.php',
|
||||||
|
'Stripe\\Service\\Terminal\\ConnectionTokenService' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/ConnectionTokenService.php',
|
||||||
|
'Stripe\\Service\\Terminal\\LocationService' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/LocationService.php',
|
||||||
|
'Stripe\\Service\\Terminal\\ReaderService' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/ReaderService.php',
|
||||||
|
'Stripe\\Service\\Terminal\\TerminalServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Terminal/TerminalServiceFactory.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\ConfirmationTokenService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/ConfirmationTokenService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\CustomerService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/CustomerService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Issuing\\AuthorizationService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Issuing/AuthorizationService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Issuing\\CardService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Issuing/CardService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Issuing\\IssuingServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Issuing/IssuingServiceFactory.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Issuing\\PersonalizationDesignService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Issuing/PersonalizationDesignService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Issuing\\TransactionService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Issuing/TransactionService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\RefundService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/RefundService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Terminal\\ReaderService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Terminal/ReaderService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Terminal\\TerminalServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Terminal/TerminalServiceFactory.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\TestClockService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/TestClockService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\TestHelpersServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/TestHelpersServiceFactory.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\InboundTransferService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/InboundTransferService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\OutboundPaymentService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/OutboundPaymentService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\OutboundTransferService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/OutboundTransferService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\ReceivedCreditService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/ReceivedCreditService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\ReceivedDebitService' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/ReceivedDebitService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\TreasuryServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/TreasuryServiceFactory.php',
|
||||||
|
'Stripe\\Service\\TokenService' => $vendorDir . '/stripe/stripe-php/lib/Service/TokenService.php',
|
||||||
|
'Stripe\\Service\\TopupService' => $vendorDir . '/stripe/stripe-php/lib/Service/TopupService.php',
|
||||||
|
'Stripe\\Service\\TransferService' => $vendorDir . '/stripe/stripe-php/lib/Service/TransferService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\CreditReversalService' => $vendorDir . '/stripe/stripe-php/lib/Service/Treasury/CreditReversalService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\DebitReversalService' => $vendorDir . '/stripe/stripe-php/lib/Service/Treasury/DebitReversalService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\FinancialAccountService' => $vendorDir . '/stripe/stripe-php/lib/Service/Treasury/FinancialAccountService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\InboundTransferService' => $vendorDir . '/stripe/stripe-php/lib/Service/Treasury/InboundTransferService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\OutboundPaymentService' => $vendorDir . '/stripe/stripe-php/lib/Service/Treasury/OutboundPaymentService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\OutboundTransferService' => $vendorDir . '/stripe/stripe-php/lib/Service/Treasury/OutboundTransferService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\ReceivedCreditService' => $vendorDir . '/stripe/stripe-php/lib/Service/Treasury/ReceivedCreditService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\ReceivedDebitService' => $vendorDir . '/stripe/stripe-php/lib/Service/Treasury/ReceivedDebitService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\TransactionEntryService' => $vendorDir . '/stripe/stripe-php/lib/Service/Treasury/TransactionEntryService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\TransactionService' => $vendorDir . '/stripe/stripe-php/lib/Service/Treasury/TransactionService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\TreasuryServiceFactory' => $vendorDir . '/stripe/stripe-php/lib/Service/Treasury/TreasuryServiceFactory.php',
|
||||||
|
'Stripe\\Service\\WebhookEndpointService' => $vendorDir . '/stripe/stripe-php/lib/Service/WebhookEndpointService.php',
|
||||||
|
'Stripe\\SetupAttempt' => $vendorDir . '/stripe/stripe-php/lib/SetupAttempt.php',
|
||||||
|
'Stripe\\SetupIntent' => $vendorDir . '/stripe/stripe-php/lib/SetupIntent.php',
|
||||||
|
'Stripe\\ShippingRate' => $vendorDir . '/stripe/stripe-php/lib/ShippingRate.php',
|
||||||
|
'Stripe\\Sigma\\ScheduledQueryRun' => $vendorDir . '/stripe/stripe-php/lib/Sigma/ScheduledQueryRun.php',
|
||||||
|
'Stripe\\SingletonApiResource' => $vendorDir . '/stripe/stripe-php/lib/SingletonApiResource.php',
|
||||||
|
'Stripe\\Source' => $vendorDir . '/stripe/stripe-php/lib/Source.php',
|
||||||
|
'Stripe\\SourceMandateNotification' => $vendorDir . '/stripe/stripe-php/lib/SourceMandateNotification.php',
|
||||||
|
'Stripe\\SourceTransaction' => $vendorDir . '/stripe/stripe-php/lib/SourceTransaction.php',
|
||||||
|
'Stripe\\Stripe' => $vendorDir . '/stripe/stripe-php/lib/Stripe.php',
|
||||||
|
'Stripe\\StripeClient' => $vendorDir . '/stripe/stripe-php/lib/StripeClient.php',
|
||||||
|
'Stripe\\StripeClientInterface' => $vendorDir . '/stripe/stripe-php/lib/StripeClientInterface.php',
|
||||||
|
'Stripe\\StripeObject' => $vendorDir . '/stripe/stripe-php/lib/StripeObject.php',
|
||||||
|
'Stripe\\StripeStreamingClientInterface' => $vendorDir . '/stripe/stripe-php/lib/StripeStreamingClientInterface.php',
|
||||||
|
'Stripe\\Subscription' => $vendorDir . '/stripe/stripe-php/lib/Subscription.php',
|
||||||
|
'Stripe\\SubscriptionItem' => $vendorDir . '/stripe/stripe-php/lib/SubscriptionItem.php',
|
||||||
|
'Stripe\\SubscriptionSchedule' => $vendorDir . '/stripe/stripe-php/lib/SubscriptionSchedule.php',
|
||||||
|
'Stripe\\TaxCode' => $vendorDir . '/stripe/stripe-php/lib/TaxCode.php',
|
||||||
|
'Stripe\\TaxDeductedAtSource' => $vendorDir . '/stripe/stripe-php/lib/TaxDeductedAtSource.php',
|
||||||
|
'Stripe\\TaxId' => $vendorDir . '/stripe/stripe-php/lib/TaxId.php',
|
||||||
|
'Stripe\\TaxRate' => $vendorDir . '/stripe/stripe-php/lib/TaxRate.php',
|
||||||
|
'Stripe\\Tax\\Calculation' => $vendorDir . '/stripe/stripe-php/lib/Tax/Calculation.php',
|
||||||
|
'Stripe\\Tax\\CalculationLineItem' => $vendorDir . '/stripe/stripe-php/lib/Tax/CalculationLineItem.php',
|
||||||
|
'Stripe\\Tax\\Registration' => $vendorDir . '/stripe/stripe-php/lib/Tax/Registration.php',
|
||||||
|
'Stripe\\Tax\\Settings' => $vendorDir . '/stripe/stripe-php/lib/Tax/Settings.php',
|
||||||
|
'Stripe\\Tax\\Transaction' => $vendorDir . '/stripe/stripe-php/lib/Tax/Transaction.php',
|
||||||
|
'Stripe\\Tax\\TransactionLineItem' => $vendorDir . '/stripe/stripe-php/lib/Tax/TransactionLineItem.php',
|
||||||
|
'Stripe\\Terminal\\Configuration' => $vendorDir . '/stripe/stripe-php/lib/Terminal/Configuration.php',
|
||||||
|
'Stripe\\Terminal\\ConnectionToken' => $vendorDir . '/stripe/stripe-php/lib/Terminal/ConnectionToken.php',
|
||||||
|
'Stripe\\Terminal\\Location' => $vendorDir . '/stripe/stripe-php/lib/Terminal/Location.php',
|
||||||
|
'Stripe\\Terminal\\Reader' => $vendorDir . '/stripe/stripe-php/lib/Terminal/Reader.php',
|
||||||
|
'Stripe\\TestHelpers\\TestClock' => $vendorDir . '/stripe/stripe-php/lib/TestHelpers/TestClock.php',
|
||||||
|
'Stripe\\Token' => $vendorDir . '/stripe/stripe-php/lib/Token.php',
|
||||||
|
'Stripe\\Topup' => $vendorDir . '/stripe/stripe-php/lib/Topup.php',
|
||||||
|
'Stripe\\Transfer' => $vendorDir . '/stripe/stripe-php/lib/Transfer.php',
|
||||||
|
'Stripe\\TransferReversal' => $vendorDir . '/stripe/stripe-php/lib/TransferReversal.php',
|
||||||
|
'Stripe\\Treasury\\CreditReversal' => $vendorDir . '/stripe/stripe-php/lib/Treasury/CreditReversal.php',
|
||||||
|
'Stripe\\Treasury\\DebitReversal' => $vendorDir . '/stripe/stripe-php/lib/Treasury/DebitReversal.php',
|
||||||
|
'Stripe\\Treasury\\FinancialAccount' => $vendorDir . '/stripe/stripe-php/lib/Treasury/FinancialAccount.php',
|
||||||
|
'Stripe\\Treasury\\FinancialAccountFeatures' => $vendorDir . '/stripe/stripe-php/lib/Treasury/FinancialAccountFeatures.php',
|
||||||
|
'Stripe\\Treasury\\InboundTransfer' => $vendorDir . '/stripe/stripe-php/lib/Treasury/InboundTransfer.php',
|
||||||
|
'Stripe\\Treasury\\OutboundPayment' => $vendorDir . '/stripe/stripe-php/lib/Treasury/OutboundPayment.php',
|
||||||
|
'Stripe\\Treasury\\OutboundTransfer' => $vendorDir . '/stripe/stripe-php/lib/Treasury/OutboundTransfer.php',
|
||||||
|
'Stripe\\Treasury\\ReceivedCredit' => $vendorDir . '/stripe/stripe-php/lib/Treasury/ReceivedCredit.php',
|
||||||
|
'Stripe\\Treasury\\ReceivedDebit' => $vendorDir . '/stripe/stripe-php/lib/Treasury/ReceivedDebit.php',
|
||||||
|
'Stripe\\Treasury\\Transaction' => $vendorDir . '/stripe/stripe-php/lib/Treasury/Transaction.php',
|
||||||
|
'Stripe\\Treasury\\TransactionEntry' => $vendorDir . '/stripe/stripe-php/lib/Treasury/TransactionEntry.php',
|
||||||
|
'Stripe\\UsageRecord' => $vendorDir . '/stripe/stripe-php/lib/UsageRecord.php',
|
||||||
|
'Stripe\\UsageRecordSummary' => $vendorDir . '/stripe/stripe-php/lib/UsageRecordSummary.php',
|
||||||
|
'Stripe\\Util\\ApiVersion' => $vendorDir . '/stripe/stripe-php/lib/Util/ApiVersion.php',
|
||||||
|
'Stripe\\Util\\CaseInsensitiveArray' => $vendorDir . '/stripe/stripe-php/lib/Util/CaseInsensitiveArray.php',
|
||||||
|
'Stripe\\Util\\DefaultLogger' => $vendorDir . '/stripe/stripe-php/lib/Util/DefaultLogger.php',
|
||||||
|
'Stripe\\Util\\LoggerInterface' => $vendorDir . '/stripe/stripe-php/lib/Util/LoggerInterface.php',
|
||||||
|
'Stripe\\Util\\ObjectTypes' => $vendorDir . '/stripe/stripe-php/lib/Util/ObjectTypes.php',
|
||||||
|
'Stripe\\Util\\RandomGenerator' => $vendorDir . '/stripe/stripe-php/lib/Util/RandomGenerator.php',
|
||||||
|
'Stripe\\Util\\RequestOptions' => $vendorDir . '/stripe/stripe-php/lib/Util/RequestOptions.php',
|
||||||
|
'Stripe\\Util\\Set' => $vendorDir . '/stripe/stripe-php/lib/Util/Set.php',
|
||||||
|
'Stripe\\Util\\Util' => $vendorDir . '/stripe/stripe-php/lib/Util/Util.php',
|
||||||
|
'Stripe\\Webhook' => $vendorDir . '/stripe/stripe-php/lib/Webhook.php',
|
||||||
|
'Stripe\\WebhookEndpoint' => $vendorDir . '/stripe/stripe-php/lib/WebhookEndpoint.php',
|
||||||
|
'Stripe\\WebhookSignature' => $vendorDir . '/stripe/stripe-php/lib/WebhookSignature.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/ExceptionInterface.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => $vendorDir . '/symfony/filesystem/Exception/FileNotFoundException.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\IOException' => $vendorDir . '/symfony/filesystem/Exception/IOException.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => $vendorDir . '/symfony/filesystem/Exception/IOExceptionInterface.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/filesystem/Exception/InvalidArgumentException.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => $vendorDir . '/symfony/filesystem/Exception/RuntimeException.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Filesystem' => $vendorDir . '/symfony/filesystem/Filesystem.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Path' => $vendorDir . '/symfony/filesystem/Path.php',
|
||||||
|
'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php',
|
||||||
|
'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Data\\UcrmOptions' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Data/UcrmOptions.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Data\\UcrmUser' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Data/UcrmUser.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Exception\\ConfigurationException' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Exception/ConfigurationException.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Exception\\InvalidPluginRootPathException' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Exception/InvalidPluginRootPathException.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Exception\\JsonException' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Exception/JsonException.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Exception\\UcrmPluginSdkException' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Exception/UcrmPluginSdkException.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Security\\Permission' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Security/Permission.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Security\\PermissionNames' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Security/PermissionNames.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Security\\SpecialPermission' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Security/SpecialPermission.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Security\\SpecialPermissionNames' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Security/SpecialPermissionNames.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\AbstractOptionsManager' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/AbstractOptionsManager.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\PluginConfigManager' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/PluginConfigManager.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\PluginLogManager' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/PluginLogManager.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\UcrmApi' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/UcrmApi.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\UcrmOptionsManager' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/UcrmOptionsManager.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\UcrmSecurity' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/UcrmSecurity.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\UnmsApi' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/UnmsApi.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Util\\Helpers' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Util/Helpers.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Util\\Json' => $vendorDir . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Util/Json.php',
|
||||||
);
|
);
|
||||||
|
|||||||
0
vendor/composer/autoload_files.php
vendored
Normal file → Executable file
0
vendor/composer/autoload_files.php
vendored
Normal file → Executable file
0
vendor/composer/autoload_namespaces.php
vendored
Normal file → Executable file
0
vendor/composer/autoload_namespaces.php
vendored
Normal file → Executable file
0
vendor/composer/autoload_psr4.php
vendored
Normal file → Executable file
0
vendor/composer/autoload_psr4.php
vendored
Normal file → Executable file
11
vendor/composer/autoload_real.php
vendored
Normal file → Executable file
11
vendor/composer/autoload_real.php
vendored
Normal file → Executable file
@ -34,22 +34,13 @@ class ComposerAutoloaderInita8750288fc198a75aec345f4f4b7fd12
|
|||||||
|
|
||||||
call_user_func(\Composer\Autoload\ComposerStaticInita8750288fc198a75aec345f4f4b7fd12::getInitializer($loader));
|
call_user_func(\Composer\Autoload\ComposerStaticInita8750288fc198a75aec345f4f4b7fd12::getInitializer($loader));
|
||||||
} else {
|
} else {
|
||||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
|
||||||
foreach ($map as $namespace => $path) {
|
|
||||||
$loader->set($namespace, $path);
|
|
||||||
}
|
|
||||||
|
|
||||||
$map = require __DIR__ . '/autoload_psr4.php';
|
|
||||||
foreach ($map as $namespace => $path) {
|
|
||||||
$loader->setPsr4($namespace, $path);
|
|
||||||
}
|
|
||||||
|
|
||||||
$classMap = require __DIR__ . '/autoload_classmap.php';
|
$classMap = require __DIR__ . '/autoload_classmap.php';
|
||||||
if ($classMap) {
|
if ($classMap) {
|
||||||
$loader->addClassMap($classMap);
|
$loader->addClassMap($classMap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$loader->setClassMapAuthoritative(true);
|
||||||
$loader->register(true);
|
$loader->register(true);
|
||||||
|
|
||||||
if ($useStaticLoader) {
|
if ($useStaticLoader) {
|
||||||
|
|||||||
467
vendor/composer/autoload_static.php
vendored
Normal file → Executable file
467
vendor/composer/autoload_static.php
vendored
Normal file → Executable file
@ -85,6 +85,473 @@ class ComposerStaticInita8750288fc198a75aec345f4f4b7fd12
|
|||||||
|
|
||||||
public static $classMap = array (
|
public static $classMap = array (
|
||||||
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
|
||||||
|
'GuzzleHttp\\BodySummarizer' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/BodySummarizer.php',
|
||||||
|
'GuzzleHttp\\BodySummarizerInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/BodySummarizerInterface.php',
|
||||||
|
'GuzzleHttp\\Client' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Client.php',
|
||||||
|
'GuzzleHttp\\ClientInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientInterface.php',
|
||||||
|
'GuzzleHttp\\ClientTrait' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/ClientTrait.php',
|
||||||
|
'GuzzleHttp\\Cookie\\CookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJar.php',
|
||||||
|
'GuzzleHttp\\Cookie\\CookieJarInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php',
|
||||||
|
'GuzzleHttp\\Cookie\\FileCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php',
|
||||||
|
'GuzzleHttp\\Cookie\\SessionCookieJar' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php',
|
||||||
|
'GuzzleHttp\\Cookie\\SetCookie' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Cookie/SetCookie.php',
|
||||||
|
'GuzzleHttp\\Exception\\BadResponseException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/BadResponseException.php',
|
||||||
|
'GuzzleHttp\\Exception\\ClientException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ClientException.php',
|
||||||
|
'GuzzleHttp\\Exception\\ConnectException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ConnectException.php',
|
||||||
|
'GuzzleHttp\\Exception\\GuzzleException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/GuzzleException.php',
|
||||||
|
'GuzzleHttp\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php',
|
||||||
|
'GuzzleHttp\\Exception\\RequestException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/RequestException.php',
|
||||||
|
'GuzzleHttp\\Exception\\ServerException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/ServerException.php',
|
||||||
|
'GuzzleHttp\\Exception\\TooManyRedirectsException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php',
|
||||||
|
'GuzzleHttp\\Exception\\TransferException' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Exception/TransferException.php',
|
||||||
|
'GuzzleHttp\\HandlerStack' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/HandlerStack.php',
|
||||||
|
'GuzzleHttp\\Handler\\CurlFactory' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactory.php',
|
||||||
|
'GuzzleHttp\\Handler\\CurlFactoryInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php',
|
||||||
|
'GuzzleHttp\\Handler\\CurlHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php',
|
||||||
|
'GuzzleHttp\\Handler\\CurlMultiHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php',
|
||||||
|
'GuzzleHttp\\Handler\\EasyHandle' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php',
|
||||||
|
'GuzzleHttp\\Handler\\HeaderProcessor' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php',
|
||||||
|
'GuzzleHttp\\Handler\\MockHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/MockHandler.php',
|
||||||
|
'GuzzleHttp\\Handler\\Proxy' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/Proxy.php',
|
||||||
|
'GuzzleHttp\\Handler\\StreamHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php',
|
||||||
|
'GuzzleHttp\\MessageFormatter' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/MessageFormatter.php',
|
||||||
|
'GuzzleHttp\\MessageFormatterInterface' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/MessageFormatterInterface.php',
|
||||||
|
'GuzzleHttp\\Middleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Middleware.php',
|
||||||
|
'GuzzleHttp\\Pool' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Pool.php',
|
||||||
|
'GuzzleHttp\\PrepareBodyMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php',
|
||||||
|
'GuzzleHttp\\Promise\\AggregateException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/AggregateException.php',
|
||||||
|
'GuzzleHttp\\Promise\\CancellationException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/CancellationException.php',
|
||||||
|
'GuzzleHttp\\Promise\\Coroutine' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Coroutine.php',
|
||||||
|
'GuzzleHttp\\Promise\\Create' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Create.php',
|
||||||
|
'GuzzleHttp\\Promise\\Each' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Each.php',
|
||||||
|
'GuzzleHttp\\Promise\\EachPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/EachPromise.php',
|
||||||
|
'GuzzleHttp\\Promise\\FulfilledPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/FulfilledPromise.php',
|
||||||
|
'GuzzleHttp\\Promise\\Is' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Is.php',
|
||||||
|
'GuzzleHttp\\Promise\\Promise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Promise.php',
|
||||||
|
'GuzzleHttp\\Promise\\PromiseInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromiseInterface.php',
|
||||||
|
'GuzzleHttp\\Promise\\PromisorInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/PromisorInterface.php',
|
||||||
|
'GuzzleHttp\\Promise\\RejectedPromise' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectedPromise.php',
|
||||||
|
'GuzzleHttp\\Promise\\RejectionException' => __DIR__ . '/..' . '/guzzlehttp/promises/src/RejectionException.php',
|
||||||
|
'GuzzleHttp\\Promise\\TaskQueue' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueue.php',
|
||||||
|
'GuzzleHttp\\Promise\\TaskQueueInterface' => __DIR__ . '/..' . '/guzzlehttp/promises/src/TaskQueueInterface.php',
|
||||||
|
'GuzzleHttp\\Promise\\Utils' => __DIR__ . '/..' . '/guzzlehttp/promises/src/Utils.php',
|
||||||
|
'GuzzleHttp\\Psr7\\AppendStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/AppendStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\BufferStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/BufferStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\CachingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/CachingStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\DroppingStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/DroppingStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Exception\\MalformedUriException' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Exception/MalformedUriException.php',
|
||||||
|
'GuzzleHttp\\Psr7\\FnStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/FnStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Header' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Header.php',
|
||||||
|
'GuzzleHttp\\Psr7\\HttpFactory' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/HttpFactory.php',
|
||||||
|
'GuzzleHttp\\Psr7\\InflateStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/InflateStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\LazyOpenStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LazyOpenStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\LimitStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/LimitStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Message' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Message.php',
|
||||||
|
'GuzzleHttp\\Psr7\\MessageTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MessageTrait.php',
|
||||||
|
'GuzzleHttp\\Psr7\\MimeType' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MimeType.php',
|
||||||
|
'GuzzleHttp\\Psr7\\MultipartStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/MultipartStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\NoSeekStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/NoSeekStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\PumpStream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/PumpStream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Query' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Query.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Request' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Request.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Response' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Response.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Rfc7230' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Rfc7230.php',
|
||||||
|
'GuzzleHttp\\Psr7\\ServerRequest' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/ServerRequest.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Stream' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Stream.php',
|
||||||
|
'GuzzleHttp\\Psr7\\StreamDecoratorTrait' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamDecoratorTrait.php',
|
||||||
|
'GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php',
|
||||||
|
'GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php',
|
||||||
|
'GuzzleHttp\\Psr7\\UriComparator' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriComparator.php',
|
||||||
|
'GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php',
|
||||||
|
'GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php',
|
||||||
|
'GuzzleHttp\\Psr7\\Utils' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Utils.php',
|
||||||
|
'GuzzleHttp\\RedirectMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RedirectMiddleware.php',
|
||||||
|
'GuzzleHttp\\RequestOptions' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RequestOptions.php',
|
||||||
|
'GuzzleHttp\\RetryMiddleware' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/RetryMiddleware.php',
|
||||||
|
'GuzzleHttp\\TransferStats' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/TransferStats.php',
|
||||||
|
'GuzzleHttp\\Utils' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Utils.php',
|
||||||
|
'Psr\\Http\\Client\\ClientExceptionInterface' => __DIR__ . '/..' . '/psr/http-client/src/ClientExceptionInterface.php',
|
||||||
|
'Psr\\Http\\Client\\ClientInterface' => __DIR__ . '/..' . '/psr/http-client/src/ClientInterface.php',
|
||||||
|
'Psr\\Http\\Client\\NetworkExceptionInterface' => __DIR__ . '/..' . '/psr/http-client/src/NetworkExceptionInterface.php',
|
||||||
|
'Psr\\Http\\Client\\RequestExceptionInterface' => __DIR__ . '/..' . '/psr/http-client/src/RequestExceptionInterface.php',
|
||||||
|
'Psr\\Http\\Message\\MessageInterface' => __DIR__ . '/..' . '/psr/http-message/src/MessageInterface.php',
|
||||||
|
'Psr\\Http\\Message\\RequestFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/RequestFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\RequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/RequestInterface.php',
|
||||||
|
'Psr\\Http\\Message\\ResponseFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/ResponseFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\ResponseInterface' => __DIR__ . '/..' . '/psr/http-message/src/ResponseInterface.php',
|
||||||
|
'Psr\\Http\\Message\\ServerRequestFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/ServerRequestFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\ServerRequestInterface' => __DIR__ . '/..' . '/psr/http-message/src/ServerRequestInterface.php',
|
||||||
|
'Psr\\Http\\Message\\StreamFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/StreamFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\StreamInterface' => __DIR__ . '/..' . '/psr/http-message/src/StreamInterface.php',
|
||||||
|
'Psr\\Http\\Message\\UploadedFileFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/UploadedFileFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\UploadedFileInterface' => __DIR__ . '/..' . '/psr/http-message/src/UploadedFileInterface.php',
|
||||||
|
'Psr\\Http\\Message\\UriFactoryInterface' => __DIR__ . '/..' . '/psr/http-factory/src/UriFactoryInterface.php',
|
||||||
|
'Psr\\Http\\Message\\UriInterface' => __DIR__ . '/..' . '/psr/http-message/src/UriInterface.php',
|
||||||
|
'Stripe\\Account' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Account.php',
|
||||||
|
'Stripe\\AccountLink' => __DIR__ . '/..' . '/stripe/stripe-php/lib/AccountLink.php',
|
||||||
|
'Stripe\\AccountSession' => __DIR__ . '/..' . '/stripe/stripe-php/lib/AccountSession.php',
|
||||||
|
'Stripe\\ApiOperations\\All' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/All.php',
|
||||||
|
'Stripe\\ApiOperations\\Create' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Create.php',
|
||||||
|
'Stripe\\ApiOperations\\Delete' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Delete.php',
|
||||||
|
'Stripe\\ApiOperations\\NestedResource' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/NestedResource.php',
|
||||||
|
'Stripe\\ApiOperations\\Request' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Request.php',
|
||||||
|
'Stripe\\ApiOperations\\Retrieve' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Retrieve.php',
|
||||||
|
'Stripe\\ApiOperations\\Search' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Search.php',
|
||||||
|
'Stripe\\ApiOperations\\SingletonRetrieve' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/SingletonRetrieve.php',
|
||||||
|
'Stripe\\ApiOperations\\Update' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiOperations/Update.php',
|
||||||
|
'Stripe\\ApiRequestor' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiRequestor.php',
|
||||||
|
'Stripe\\ApiResource' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiResource.php',
|
||||||
|
'Stripe\\ApiResponse' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApiResponse.php',
|
||||||
|
'Stripe\\ApplePayDomain' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApplePayDomain.php',
|
||||||
|
'Stripe\\Application' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Application.php',
|
||||||
|
'Stripe\\ApplicationFee' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApplicationFee.php',
|
||||||
|
'Stripe\\ApplicationFeeRefund' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ApplicationFeeRefund.php',
|
||||||
|
'Stripe\\Apps\\Secret' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Apps/Secret.php',
|
||||||
|
'Stripe\\Balance' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Balance.php',
|
||||||
|
'Stripe\\BalanceTransaction' => __DIR__ . '/..' . '/stripe/stripe-php/lib/BalanceTransaction.php',
|
||||||
|
'Stripe\\BankAccount' => __DIR__ . '/..' . '/stripe/stripe-php/lib/BankAccount.php',
|
||||||
|
'Stripe\\BaseStripeClient' => __DIR__ . '/..' . '/stripe/stripe-php/lib/BaseStripeClient.php',
|
||||||
|
'Stripe\\BaseStripeClientInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/BaseStripeClientInterface.php',
|
||||||
|
'Stripe\\BillingPortal\\Configuration' => __DIR__ . '/..' . '/stripe/stripe-php/lib/BillingPortal/Configuration.php',
|
||||||
|
'Stripe\\BillingPortal\\Session' => __DIR__ . '/..' . '/stripe/stripe-php/lib/BillingPortal/Session.php',
|
||||||
|
'Stripe\\Billing\\Meter' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Billing/Meter.php',
|
||||||
|
'Stripe\\Billing\\MeterEvent' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Billing/MeterEvent.php',
|
||||||
|
'Stripe\\Billing\\MeterEventAdjustment' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Billing/MeterEventAdjustment.php',
|
||||||
|
'Stripe\\Billing\\MeterEventSummary' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Billing/MeterEventSummary.php',
|
||||||
|
'Stripe\\Capability' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Capability.php',
|
||||||
|
'Stripe\\Card' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Card.php',
|
||||||
|
'Stripe\\CashBalance' => __DIR__ . '/..' . '/stripe/stripe-php/lib/CashBalance.php',
|
||||||
|
'Stripe\\Charge' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Charge.php',
|
||||||
|
'Stripe\\Checkout\\Session' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Checkout/Session.php',
|
||||||
|
'Stripe\\Climate\\Order' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Climate/Order.php',
|
||||||
|
'Stripe\\Climate\\Product' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Climate/Product.php',
|
||||||
|
'Stripe\\Climate\\Supplier' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Climate/Supplier.php',
|
||||||
|
'Stripe\\Collection' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Collection.php',
|
||||||
|
'Stripe\\ConfirmationToken' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ConfirmationToken.php',
|
||||||
|
'Stripe\\ConnectCollectionTransfer' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ConnectCollectionTransfer.php',
|
||||||
|
'Stripe\\CountrySpec' => __DIR__ . '/..' . '/stripe/stripe-php/lib/CountrySpec.php',
|
||||||
|
'Stripe\\Coupon' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Coupon.php',
|
||||||
|
'Stripe\\CreditNote' => __DIR__ . '/..' . '/stripe/stripe-php/lib/CreditNote.php',
|
||||||
|
'Stripe\\CreditNoteLineItem' => __DIR__ . '/..' . '/stripe/stripe-php/lib/CreditNoteLineItem.php',
|
||||||
|
'Stripe\\Customer' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Customer.php',
|
||||||
|
'Stripe\\CustomerBalanceTransaction' => __DIR__ . '/..' . '/stripe/stripe-php/lib/CustomerBalanceTransaction.php',
|
||||||
|
'Stripe\\CustomerCashBalanceTransaction' => __DIR__ . '/..' . '/stripe/stripe-php/lib/CustomerCashBalanceTransaction.php',
|
||||||
|
'Stripe\\CustomerSession' => __DIR__ . '/..' . '/stripe/stripe-php/lib/CustomerSession.php',
|
||||||
|
'Stripe\\Discount' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Discount.php',
|
||||||
|
'Stripe\\Dispute' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Dispute.php',
|
||||||
|
'Stripe\\Entitlements\\ActiveEntitlement' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Entitlements/ActiveEntitlement.php',
|
||||||
|
'Stripe\\Entitlements\\Feature' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Entitlements/Feature.php',
|
||||||
|
'Stripe\\EphemeralKey' => __DIR__ . '/..' . '/stripe/stripe-php/lib/EphemeralKey.php',
|
||||||
|
'Stripe\\ErrorObject' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ErrorObject.php',
|
||||||
|
'Stripe\\Event' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Event.php',
|
||||||
|
'Stripe\\Exception\\ApiConnectionException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/ApiConnectionException.php',
|
||||||
|
'Stripe\\Exception\\ApiErrorException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/ApiErrorException.php',
|
||||||
|
'Stripe\\Exception\\AuthenticationException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/AuthenticationException.php',
|
||||||
|
'Stripe\\Exception\\BadMethodCallException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/BadMethodCallException.php',
|
||||||
|
'Stripe\\Exception\\CardException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/CardException.php',
|
||||||
|
'Stripe\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/ExceptionInterface.php',
|
||||||
|
'Stripe\\Exception\\IdempotencyException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/IdempotencyException.php',
|
||||||
|
'Stripe\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/InvalidArgumentException.php',
|
||||||
|
'Stripe\\Exception\\InvalidRequestException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/InvalidRequestException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\ExceptionInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/OAuth/ExceptionInterface.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\InvalidClientException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/OAuth/InvalidClientException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\InvalidGrantException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/OAuth/InvalidGrantException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\InvalidRequestException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/OAuth/InvalidRequestException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\InvalidScopeException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/OAuth/InvalidScopeException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\OAuthErrorException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/OAuth/OAuthErrorException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\UnknownOAuthErrorException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/OAuth/UnknownOAuthErrorException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\UnsupportedGrantTypeException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/OAuth/UnsupportedGrantTypeException.php',
|
||||||
|
'Stripe\\Exception\\OAuth\\UnsupportedResponseTypeException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/OAuth/UnsupportedResponseTypeException.php',
|
||||||
|
'Stripe\\Exception\\PermissionException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/PermissionException.php',
|
||||||
|
'Stripe\\Exception\\RateLimitException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/RateLimitException.php',
|
||||||
|
'Stripe\\Exception\\SignatureVerificationException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/SignatureVerificationException.php',
|
||||||
|
'Stripe\\Exception\\UnexpectedValueException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/UnexpectedValueException.php',
|
||||||
|
'Stripe\\Exception\\UnknownApiErrorException' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Exception/UnknownApiErrorException.php',
|
||||||
|
'Stripe\\ExchangeRate' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ExchangeRate.php',
|
||||||
|
'Stripe\\File' => __DIR__ . '/..' . '/stripe/stripe-php/lib/File.php',
|
||||||
|
'Stripe\\FileLink' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FileLink.php',
|
||||||
|
'Stripe\\FinancialConnections\\Account' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FinancialConnections/Account.php',
|
||||||
|
'Stripe\\FinancialConnections\\AccountOwner' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FinancialConnections/AccountOwner.php',
|
||||||
|
'Stripe\\FinancialConnections\\AccountOwnership' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FinancialConnections/AccountOwnership.php',
|
||||||
|
'Stripe\\FinancialConnections\\Session' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FinancialConnections/Session.php',
|
||||||
|
'Stripe\\FinancialConnections\\Transaction' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FinancialConnections/Transaction.php',
|
||||||
|
'Stripe\\Forwarding\\Request' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Forwarding/Request.php',
|
||||||
|
'Stripe\\FundingInstructions' => __DIR__ . '/..' . '/stripe/stripe-php/lib/FundingInstructions.php',
|
||||||
|
'Stripe\\HttpClient\\ClientInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/HttpClient/ClientInterface.php',
|
||||||
|
'Stripe\\HttpClient\\CurlClient' => __DIR__ . '/..' . '/stripe/stripe-php/lib/HttpClient/CurlClient.php',
|
||||||
|
'Stripe\\HttpClient\\StreamingClientInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/HttpClient/StreamingClientInterface.php',
|
||||||
|
'Stripe\\Identity\\VerificationReport' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Identity/VerificationReport.php',
|
||||||
|
'Stripe\\Identity\\VerificationSession' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Identity/VerificationSession.php',
|
||||||
|
'Stripe\\Invoice' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Invoice.php',
|
||||||
|
'Stripe\\InvoiceItem' => __DIR__ . '/..' . '/stripe/stripe-php/lib/InvoiceItem.php',
|
||||||
|
'Stripe\\InvoiceLineItem' => __DIR__ . '/..' . '/stripe/stripe-php/lib/InvoiceLineItem.php',
|
||||||
|
'Stripe\\Issuing\\Authorization' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Issuing/Authorization.php',
|
||||||
|
'Stripe\\Issuing\\Card' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Issuing/Card.php',
|
||||||
|
'Stripe\\Issuing\\CardDetails' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Issuing/CardDetails.php',
|
||||||
|
'Stripe\\Issuing\\Cardholder' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Issuing/Cardholder.php',
|
||||||
|
'Stripe\\Issuing\\Dispute' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Issuing/Dispute.php',
|
||||||
|
'Stripe\\Issuing\\PersonalizationDesign' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Issuing/PersonalizationDesign.php',
|
||||||
|
'Stripe\\Issuing\\PhysicalBundle' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Issuing/PhysicalBundle.php',
|
||||||
|
'Stripe\\Issuing\\Token' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Issuing/Token.php',
|
||||||
|
'Stripe\\Issuing\\Transaction' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Issuing/Transaction.php',
|
||||||
|
'Stripe\\LineItem' => __DIR__ . '/..' . '/stripe/stripe-php/lib/LineItem.php',
|
||||||
|
'Stripe\\LoginLink' => __DIR__ . '/..' . '/stripe/stripe-php/lib/LoginLink.php',
|
||||||
|
'Stripe\\Mandate' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Mandate.php',
|
||||||
|
'Stripe\\OAuth' => __DIR__ . '/..' . '/stripe/stripe-php/lib/OAuth.php',
|
||||||
|
'Stripe\\OAuthErrorObject' => __DIR__ . '/..' . '/stripe/stripe-php/lib/OAuthErrorObject.php',
|
||||||
|
'Stripe\\PaymentIntent' => __DIR__ . '/..' . '/stripe/stripe-php/lib/PaymentIntent.php',
|
||||||
|
'Stripe\\PaymentLink' => __DIR__ . '/..' . '/stripe/stripe-php/lib/PaymentLink.php',
|
||||||
|
'Stripe\\PaymentMethod' => __DIR__ . '/..' . '/stripe/stripe-php/lib/PaymentMethod.php',
|
||||||
|
'Stripe\\PaymentMethodConfiguration' => __DIR__ . '/..' . '/stripe/stripe-php/lib/PaymentMethodConfiguration.php',
|
||||||
|
'Stripe\\PaymentMethodDomain' => __DIR__ . '/..' . '/stripe/stripe-php/lib/PaymentMethodDomain.php',
|
||||||
|
'Stripe\\Payout' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Payout.php',
|
||||||
|
'Stripe\\Person' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Person.php',
|
||||||
|
'Stripe\\Plan' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Plan.php',
|
||||||
|
'Stripe\\PlatformTaxFee' => __DIR__ . '/..' . '/stripe/stripe-php/lib/PlatformTaxFee.php',
|
||||||
|
'Stripe\\Price' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Price.php',
|
||||||
|
'Stripe\\Product' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Product.php',
|
||||||
|
'Stripe\\ProductFeature' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ProductFeature.php',
|
||||||
|
'Stripe\\PromotionCode' => __DIR__ . '/..' . '/stripe/stripe-php/lib/PromotionCode.php',
|
||||||
|
'Stripe\\Quote' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Quote.php',
|
||||||
|
'Stripe\\Radar\\EarlyFraudWarning' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Radar/EarlyFraudWarning.php',
|
||||||
|
'Stripe\\Radar\\ValueList' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Radar/ValueList.php',
|
||||||
|
'Stripe\\Radar\\ValueListItem' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Radar/ValueListItem.php',
|
||||||
|
'Stripe\\RecipientTransfer' => __DIR__ . '/..' . '/stripe/stripe-php/lib/RecipientTransfer.php',
|
||||||
|
'Stripe\\Refund' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Refund.php',
|
||||||
|
'Stripe\\Reporting\\ReportRun' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Reporting/ReportRun.php',
|
||||||
|
'Stripe\\Reporting\\ReportType' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Reporting/ReportType.php',
|
||||||
|
'Stripe\\RequestTelemetry' => __DIR__ . '/..' . '/stripe/stripe-php/lib/RequestTelemetry.php',
|
||||||
|
'Stripe\\ReserveTransaction' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ReserveTransaction.php',
|
||||||
|
'Stripe\\Review' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Review.php',
|
||||||
|
'Stripe\\SearchResult' => __DIR__ . '/..' . '/stripe/stripe-php/lib/SearchResult.php',
|
||||||
|
'Stripe\\Service\\AbstractService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/AbstractService.php',
|
||||||
|
'Stripe\\Service\\AbstractServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/AbstractServiceFactory.php',
|
||||||
|
'Stripe\\Service\\AccountLinkService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/AccountLinkService.php',
|
||||||
|
'Stripe\\Service\\AccountService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/AccountService.php',
|
||||||
|
'Stripe\\Service\\AccountSessionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/AccountSessionService.php',
|
||||||
|
'Stripe\\Service\\ApplePayDomainService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/ApplePayDomainService.php',
|
||||||
|
'Stripe\\Service\\ApplicationFeeService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/ApplicationFeeService.php',
|
||||||
|
'Stripe\\Service\\Apps\\AppsServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Apps/AppsServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Apps\\SecretService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Apps/SecretService.php',
|
||||||
|
'Stripe\\Service\\BalanceService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/BalanceService.php',
|
||||||
|
'Stripe\\Service\\BalanceTransactionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/BalanceTransactionService.php',
|
||||||
|
'Stripe\\Service\\BillingPortal\\BillingPortalServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/BillingPortal/BillingPortalServiceFactory.php',
|
||||||
|
'Stripe\\Service\\BillingPortal\\ConfigurationService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/BillingPortal/ConfigurationService.php',
|
||||||
|
'Stripe\\Service\\BillingPortal\\SessionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/BillingPortal/SessionService.php',
|
||||||
|
'Stripe\\Service\\Billing\\BillingServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Billing/BillingServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Billing\\MeterEventAdjustmentService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Billing/MeterEventAdjustmentService.php',
|
||||||
|
'Stripe\\Service\\Billing\\MeterEventService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Billing/MeterEventService.php',
|
||||||
|
'Stripe\\Service\\Billing\\MeterService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Billing/MeterService.php',
|
||||||
|
'Stripe\\Service\\ChargeService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/ChargeService.php',
|
||||||
|
'Stripe\\Service\\Checkout\\CheckoutServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Checkout/CheckoutServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Checkout\\SessionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Checkout/SessionService.php',
|
||||||
|
'Stripe\\Service\\Climate\\ClimateServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Climate/ClimateServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Climate\\OrderService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Climate/OrderService.php',
|
||||||
|
'Stripe\\Service\\Climate\\ProductService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Climate/ProductService.php',
|
||||||
|
'Stripe\\Service\\Climate\\SupplierService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Climate/SupplierService.php',
|
||||||
|
'Stripe\\Service\\ConfirmationTokenService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/ConfirmationTokenService.php',
|
||||||
|
'Stripe\\Service\\CoreServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/CoreServiceFactory.php',
|
||||||
|
'Stripe\\Service\\CountrySpecService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/CountrySpecService.php',
|
||||||
|
'Stripe\\Service\\CouponService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/CouponService.php',
|
||||||
|
'Stripe\\Service\\CreditNoteService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/CreditNoteService.php',
|
||||||
|
'Stripe\\Service\\CustomerService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/CustomerService.php',
|
||||||
|
'Stripe\\Service\\CustomerSessionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/CustomerSessionService.php',
|
||||||
|
'Stripe\\Service\\DisputeService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/DisputeService.php',
|
||||||
|
'Stripe\\Service\\Entitlements\\ActiveEntitlementService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Entitlements/ActiveEntitlementService.php',
|
||||||
|
'Stripe\\Service\\Entitlements\\EntitlementsServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Entitlements/EntitlementsServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Entitlements\\FeatureService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Entitlements/FeatureService.php',
|
||||||
|
'Stripe\\Service\\EphemeralKeyService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/EphemeralKeyService.php',
|
||||||
|
'Stripe\\Service\\EventService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/EventService.php',
|
||||||
|
'Stripe\\Service\\ExchangeRateService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/ExchangeRateService.php',
|
||||||
|
'Stripe\\Service\\FileLinkService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FileLinkService.php',
|
||||||
|
'Stripe\\Service\\FileService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FileService.php',
|
||||||
|
'Stripe\\Service\\FinancialConnections\\AccountService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FinancialConnections/AccountService.php',
|
||||||
|
'Stripe\\Service\\FinancialConnections\\FinancialConnectionsServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FinancialConnections/FinancialConnectionsServiceFactory.php',
|
||||||
|
'Stripe\\Service\\FinancialConnections\\SessionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FinancialConnections/SessionService.php',
|
||||||
|
'Stripe\\Service\\FinancialConnections\\TransactionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/FinancialConnections/TransactionService.php',
|
||||||
|
'Stripe\\Service\\Forwarding\\ForwardingServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Forwarding/ForwardingServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Forwarding\\RequestService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Forwarding/RequestService.php',
|
||||||
|
'Stripe\\Service\\Identity\\IdentityServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Identity/IdentityServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Identity\\VerificationReportService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Identity/VerificationReportService.php',
|
||||||
|
'Stripe\\Service\\Identity\\VerificationSessionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Identity/VerificationSessionService.php',
|
||||||
|
'Stripe\\Service\\InvoiceItemService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/InvoiceItemService.php',
|
||||||
|
'Stripe\\Service\\InvoiceService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/InvoiceService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\AuthorizationService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Issuing/AuthorizationService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\CardService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Issuing/CardService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\CardholderService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Issuing/CardholderService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\DisputeService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Issuing/DisputeService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\IssuingServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Issuing/IssuingServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Issuing\\PersonalizationDesignService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Issuing/PersonalizationDesignService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\PhysicalBundleService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Issuing/PhysicalBundleService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\TokenService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Issuing/TokenService.php',
|
||||||
|
'Stripe\\Service\\Issuing\\TransactionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Issuing/TransactionService.php',
|
||||||
|
'Stripe\\Service\\MandateService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/MandateService.php',
|
||||||
|
'Stripe\\Service\\OAuthService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/OAuthService.php',
|
||||||
|
'Stripe\\Service\\PaymentIntentService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/PaymentIntentService.php',
|
||||||
|
'Stripe\\Service\\PaymentLinkService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/PaymentLinkService.php',
|
||||||
|
'Stripe\\Service\\PaymentMethodConfigurationService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/PaymentMethodConfigurationService.php',
|
||||||
|
'Stripe\\Service\\PaymentMethodDomainService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/PaymentMethodDomainService.php',
|
||||||
|
'Stripe\\Service\\PaymentMethodService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/PaymentMethodService.php',
|
||||||
|
'Stripe\\Service\\PayoutService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/PayoutService.php',
|
||||||
|
'Stripe\\Service\\PlanService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/PlanService.php',
|
||||||
|
'Stripe\\Service\\PriceService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/PriceService.php',
|
||||||
|
'Stripe\\Service\\ProductService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/ProductService.php',
|
||||||
|
'Stripe\\Service\\PromotionCodeService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/PromotionCodeService.php',
|
||||||
|
'Stripe\\Service\\QuoteService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/QuoteService.php',
|
||||||
|
'Stripe\\Service\\Radar\\EarlyFraudWarningService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Radar/EarlyFraudWarningService.php',
|
||||||
|
'Stripe\\Service\\Radar\\RadarServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Radar/RadarServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Radar\\ValueListItemService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Radar/ValueListItemService.php',
|
||||||
|
'Stripe\\Service\\Radar\\ValueListService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Radar/ValueListService.php',
|
||||||
|
'Stripe\\Service\\RefundService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/RefundService.php',
|
||||||
|
'Stripe\\Service\\Reporting\\ReportRunService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Reporting/ReportRunService.php',
|
||||||
|
'Stripe\\Service\\Reporting\\ReportTypeService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Reporting/ReportTypeService.php',
|
||||||
|
'Stripe\\Service\\Reporting\\ReportingServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Reporting/ReportingServiceFactory.php',
|
||||||
|
'Stripe\\Service\\ReviewService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/ReviewService.php',
|
||||||
|
'Stripe\\Service\\SetupAttemptService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/SetupAttemptService.php',
|
||||||
|
'Stripe\\Service\\SetupIntentService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/SetupIntentService.php',
|
||||||
|
'Stripe\\Service\\ShippingRateService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/ShippingRateService.php',
|
||||||
|
'Stripe\\Service\\Sigma\\ScheduledQueryRunService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Sigma/ScheduledQueryRunService.php',
|
||||||
|
'Stripe\\Service\\Sigma\\SigmaServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Sigma/SigmaServiceFactory.php',
|
||||||
|
'Stripe\\Service\\SourceService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/SourceService.php',
|
||||||
|
'Stripe\\Service\\SubscriptionItemService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/SubscriptionItemService.php',
|
||||||
|
'Stripe\\Service\\SubscriptionScheduleService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/SubscriptionScheduleService.php',
|
||||||
|
'Stripe\\Service\\SubscriptionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/SubscriptionService.php',
|
||||||
|
'Stripe\\Service\\TaxCodeService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TaxCodeService.php',
|
||||||
|
'Stripe\\Service\\TaxIdService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TaxIdService.php',
|
||||||
|
'Stripe\\Service\\TaxRateService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TaxRateService.php',
|
||||||
|
'Stripe\\Service\\Tax\\CalculationService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Tax/CalculationService.php',
|
||||||
|
'Stripe\\Service\\Tax\\RegistrationService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Tax/RegistrationService.php',
|
||||||
|
'Stripe\\Service\\Tax\\SettingsService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Tax/SettingsService.php',
|
||||||
|
'Stripe\\Service\\Tax\\TaxServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Tax/TaxServiceFactory.php',
|
||||||
|
'Stripe\\Service\\Tax\\TransactionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Tax/TransactionService.php',
|
||||||
|
'Stripe\\Service\\Terminal\\ConfigurationService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/ConfigurationService.php',
|
||||||
|
'Stripe\\Service\\Terminal\\ConnectionTokenService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/ConnectionTokenService.php',
|
||||||
|
'Stripe\\Service\\Terminal\\LocationService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/LocationService.php',
|
||||||
|
'Stripe\\Service\\Terminal\\ReaderService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/ReaderService.php',
|
||||||
|
'Stripe\\Service\\Terminal\\TerminalServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Terminal/TerminalServiceFactory.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\ConfirmationTokenService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/ConfirmationTokenService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\CustomerService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/CustomerService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Issuing\\AuthorizationService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Issuing/AuthorizationService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Issuing\\CardService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Issuing/CardService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Issuing\\IssuingServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Issuing/IssuingServiceFactory.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Issuing\\PersonalizationDesignService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Issuing/PersonalizationDesignService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Issuing\\TransactionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Issuing/TransactionService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\RefundService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/RefundService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Terminal\\ReaderService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Terminal/ReaderService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Terminal\\TerminalServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Terminal/TerminalServiceFactory.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\TestClockService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/TestClockService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\TestHelpersServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/TestHelpersServiceFactory.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\InboundTransferService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/InboundTransferService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\OutboundPaymentService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/OutboundPaymentService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\OutboundTransferService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/OutboundTransferService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\ReceivedCreditService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/ReceivedCreditService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\ReceivedDebitService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/ReceivedDebitService.php',
|
||||||
|
'Stripe\\Service\\TestHelpers\\Treasury\\TreasuryServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TestHelpers/Treasury/TreasuryServiceFactory.php',
|
||||||
|
'Stripe\\Service\\TokenService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TokenService.php',
|
||||||
|
'Stripe\\Service\\TopupService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TopupService.php',
|
||||||
|
'Stripe\\Service\\TransferService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/TransferService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\CreditReversalService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Treasury/CreditReversalService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\DebitReversalService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Treasury/DebitReversalService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\FinancialAccountService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Treasury/FinancialAccountService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\InboundTransferService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Treasury/InboundTransferService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\OutboundPaymentService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Treasury/OutboundPaymentService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\OutboundTransferService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Treasury/OutboundTransferService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\ReceivedCreditService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Treasury/ReceivedCreditService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\ReceivedDebitService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Treasury/ReceivedDebitService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\TransactionEntryService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Treasury/TransactionEntryService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\TransactionService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Treasury/TransactionService.php',
|
||||||
|
'Stripe\\Service\\Treasury\\TreasuryServiceFactory' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/Treasury/TreasuryServiceFactory.php',
|
||||||
|
'Stripe\\Service\\WebhookEndpointService' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Service/WebhookEndpointService.php',
|
||||||
|
'Stripe\\SetupAttempt' => __DIR__ . '/..' . '/stripe/stripe-php/lib/SetupAttempt.php',
|
||||||
|
'Stripe\\SetupIntent' => __DIR__ . '/..' . '/stripe/stripe-php/lib/SetupIntent.php',
|
||||||
|
'Stripe\\ShippingRate' => __DIR__ . '/..' . '/stripe/stripe-php/lib/ShippingRate.php',
|
||||||
|
'Stripe\\Sigma\\ScheduledQueryRun' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Sigma/ScheduledQueryRun.php',
|
||||||
|
'Stripe\\SingletonApiResource' => __DIR__ . '/..' . '/stripe/stripe-php/lib/SingletonApiResource.php',
|
||||||
|
'Stripe\\Source' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Source.php',
|
||||||
|
'Stripe\\SourceMandateNotification' => __DIR__ . '/..' . '/stripe/stripe-php/lib/SourceMandateNotification.php',
|
||||||
|
'Stripe\\SourceTransaction' => __DIR__ . '/..' . '/stripe/stripe-php/lib/SourceTransaction.php',
|
||||||
|
'Stripe\\Stripe' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Stripe.php',
|
||||||
|
'Stripe\\StripeClient' => __DIR__ . '/..' . '/stripe/stripe-php/lib/StripeClient.php',
|
||||||
|
'Stripe\\StripeClientInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/StripeClientInterface.php',
|
||||||
|
'Stripe\\StripeObject' => __DIR__ . '/..' . '/stripe/stripe-php/lib/StripeObject.php',
|
||||||
|
'Stripe\\StripeStreamingClientInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/StripeStreamingClientInterface.php',
|
||||||
|
'Stripe\\Subscription' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Subscription.php',
|
||||||
|
'Stripe\\SubscriptionItem' => __DIR__ . '/..' . '/stripe/stripe-php/lib/SubscriptionItem.php',
|
||||||
|
'Stripe\\SubscriptionSchedule' => __DIR__ . '/..' . '/stripe/stripe-php/lib/SubscriptionSchedule.php',
|
||||||
|
'Stripe\\TaxCode' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TaxCode.php',
|
||||||
|
'Stripe\\TaxDeductedAtSource' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TaxDeductedAtSource.php',
|
||||||
|
'Stripe\\TaxId' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TaxId.php',
|
||||||
|
'Stripe\\TaxRate' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TaxRate.php',
|
||||||
|
'Stripe\\Tax\\Calculation' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Tax/Calculation.php',
|
||||||
|
'Stripe\\Tax\\CalculationLineItem' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Tax/CalculationLineItem.php',
|
||||||
|
'Stripe\\Tax\\Registration' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Tax/Registration.php',
|
||||||
|
'Stripe\\Tax\\Settings' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Tax/Settings.php',
|
||||||
|
'Stripe\\Tax\\Transaction' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Tax/Transaction.php',
|
||||||
|
'Stripe\\Tax\\TransactionLineItem' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Tax/TransactionLineItem.php',
|
||||||
|
'Stripe\\Terminal\\Configuration' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Terminal/Configuration.php',
|
||||||
|
'Stripe\\Terminal\\ConnectionToken' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Terminal/ConnectionToken.php',
|
||||||
|
'Stripe\\Terminal\\Location' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Terminal/Location.php',
|
||||||
|
'Stripe\\Terminal\\Reader' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Terminal/Reader.php',
|
||||||
|
'Stripe\\TestHelpers\\TestClock' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TestHelpers/TestClock.php',
|
||||||
|
'Stripe\\Token' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Token.php',
|
||||||
|
'Stripe\\Topup' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Topup.php',
|
||||||
|
'Stripe\\Transfer' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Transfer.php',
|
||||||
|
'Stripe\\TransferReversal' => __DIR__ . '/..' . '/stripe/stripe-php/lib/TransferReversal.php',
|
||||||
|
'Stripe\\Treasury\\CreditReversal' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Treasury/CreditReversal.php',
|
||||||
|
'Stripe\\Treasury\\DebitReversal' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Treasury/DebitReversal.php',
|
||||||
|
'Stripe\\Treasury\\FinancialAccount' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Treasury/FinancialAccount.php',
|
||||||
|
'Stripe\\Treasury\\FinancialAccountFeatures' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Treasury/FinancialAccountFeatures.php',
|
||||||
|
'Stripe\\Treasury\\InboundTransfer' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Treasury/InboundTransfer.php',
|
||||||
|
'Stripe\\Treasury\\OutboundPayment' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Treasury/OutboundPayment.php',
|
||||||
|
'Stripe\\Treasury\\OutboundTransfer' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Treasury/OutboundTransfer.php',
|
||||||
|
'Stripe\\Treasury\\ReceivedCredit' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Treasury/ReceivedCredit.php',
|
||||||
|
'Stripe\\Treasury\\ReceivedDebit' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Treasury/ReceivedDebit.php',
|
||||||
|
'Stripe\\Treasury\\Transaction' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Treasury/Transaction.php',
|
||||||
|
'Stripe\\Treasury\\TransactionEntry' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Treasury/TransactionEntry.php',
|
||||||
|
'Stripe\\UsageRecord' => __DIR__ . '/..' . '/stripe/stripe-php/lib/UsageRecord.php',
|
||||||
|
'Stripe\\UsageRecordSummary' => __DIR__ . '/..' . '/stripe/stripe-php/lib/UsageRecordSummary.php',
|
||||||
|
'Stripe\\Util\\ApiVersion' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Util/ApiVersion.php',
|
||||||
|
'Stripe\\Util\\CaseInsensitiveArray' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Util/CaseInsensitiveArray.php',
|
||||||
|
'Stripe\\Util\\DefaultLogger' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Util/DefaultLogger.php',
|
||||||
|
'Stripe\\Util\\LoggerInterface' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Util/LoggerInterface.php',
|
||||||
|
'Stripe\\Util\\ObjectTypes' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Util/ObjectTypes.php',
|
||||||
|
'Stripe\\Util\\RandomGenerator' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Util/RandomGenerator.php',
|
||||||
|
'Stripe\\Util\\RequestOptions' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Util/RequestOptions.php',
|
||||||
|
'Stripe\\Util\\Set' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Util/Set.php',
|
||||||
|
'Stripe\\Util\\Util' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Util/Util.php',
|
||||||
|
'Stripe\\Webhook' => __DIR__ . '/..' . '/stripe/stripe-php/lib/Webhook.php',
|
||||||
|
'Stripe\\WebhookEndpoint' => __DIR__ . '/..' . '/stripe/stripe-php/lib/WebhookEndpoint.php',
|
||||||
|
'Stripe\\WebhookSignature' => __DIR__ . '/..' . '/stripe/stripe-php/lib/WebhookSignature.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/ExceptionInterface.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\FileNotFoundException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/FileNotFoundException.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\IOException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOException.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\IOExceptionInterface' => __DIR__ . '/..' . '/symfony/filesystem/Exception/IOExceptionInterface.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/InvalidArgumentException.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/filesystem/Exception/RuntimeException.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Filesystem' => __DIR__ . '/..' . '/symfony/filesystem/Filesystem.php',
|
||||||
|
'Symfony\\Component\\Filesystem\\Path' => __DIR__ . '/..' . '/symfony/filesystem/Path.php',
|
||||||
|
'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php',
|
||||||
|
'Symfony\\Polyfill\\Mbstring\\Mbstring' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/Mbstring.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Data\\UcrmOptions' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Data/UcrmOptions.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Data\\UcrmUser' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Data/UcrmUser.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Exception\\ConfigurationException' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Exception/ConfigurationException.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Exception\\InvalidPluginRootPathException' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Exception/InvalidPluginRootPathException.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Exception\\JsonException' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Exception/JsonException.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Exception\\UcrmPluginSdkException' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Exception/UcrmPluginSdkException.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Security\\Permission' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Security/Permission.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Security\\PermissionNames' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Security/PermissionNames.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Security\\SpecialPermission' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Security/SpecialPermission.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Security\\SpecialPermissionNames' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Security/SpecialPermissionNames.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\AbstractOptionsManager' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/AbstractOptionsManager.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\PluginConfigManager' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/PluginConfigManager.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\PluginLogManager' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/PluginLogManager.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\UcrmApi' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/UcrmApi.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\UcrmOptionsManager' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/UcrmOptionsManager.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\UcrmSecurity' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/UcrmSecurity.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Service\\UnmsApi' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Service/UnmsApi.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Util\\Helpers' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Util/Helpers.php',
|
||||||
|
'Ubnt\\UcrmPluginSdk\\Util\\Json' => __DIR__ . '/..' . '/ubnt/ucrm-plugin-sdk/src/UcrmPluginSdk/Util/Json.php',
|
||||||
);
|
);
|
||||||
|
|
||||||
public static function getInitializer(ClassLoader $loader)
|
public static function getInitializer(ClassLoader $loader)
|
||||||
|
|||||||
2
vendor/composer/installed.json
vendored
Normal file → Executable file
2
vendor/composer/installed.json
vendored
Normal file → Executable file
@ -992,6 +992,6 @@
|
|||||||
"install-path": "../ubnt/ucrm-plugin-sdk"
|
"install-path": "../ubnt/ucrm-plugin-sdk"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"dev": true,
|
"dev": false,
|
||||||
"dev-package-names": []
|
"dev-package-names": []
|
||||||
}
|
}
|
||||||
|
|||||||
14
vendor/composer/installed.php
vendored
Normal file → Executable file
14
vendor/composer/installed.php
vendored
Normal file → Executable file
@ -1,22 +1,22 @@
|
|||||||
<?php return array(
|
<?php return array(
|
||||||
'root' => array(
|
'root' => array(
|
||||||
'pretty_version' => '1.0.0+no-version-set',
|
'pretty_version' => 'dev-main',
|
||||||
'version' => '1.0.0.0',
|
'version' => 'dev-main',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => NULL,
|
'reference' => 'c8061c49feee889369f3892945eeba3269987143',
|
||||||
'name' => '__root__',
|
'name' => '__root__',
|
||||||
'dev' => true,
|
'dev' => false,
|
||||||
),
|
),
|
||||||
'versions' => array(
|
'versions' => array(
|
||||||
'__root__' => array(
|
'__root__' => array(
|
||||||
'pretty_version' => '1.0.0+no-version-set',
|
'pretty_version' => 'dev-main',
|
||||||
'version' => '1.0.0.0',
|
'version' => 'dev-main',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'reference' => NULL,
|
'reference' => 'c8061c49feee889369f3892945eeba3269987143',
|
||||||
'dev_requirement' => false,
|
'dev_requirement' => false,
|
||||||
),
|
),
|
||||||
'guzzlehttp/guzzle' => array(
|
'guzzlehttp/guzzle' => array(
|
||||||
|
|||||||
0
vendor/composer/platform_check.php
vendored
Normal file → Executable file
0
vendor/composer/platform_check.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/.DS_Store
vendored
Normal file → Executable file
0
vendor/guzzlehttp/.DS_Store
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/CHANGELOG 2.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/CHANGELOG 2.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/CHANGELOG.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/CHANGELOG.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/LICENSE
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/LICENSE
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/LICENSE 2
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/LICENSE 2
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/README 2.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/README 2.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/README.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/README.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/UPGRADING 2.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/UPGRADING 2.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/UPGRADING.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/UPGRADING.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/composer 2.json
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/composer 2.json
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/composer.json
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/composer.json
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/package-lock.json
generated
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/package-lock.json
generated
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/BodySummarizer.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/BodySummarizer.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Client.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Client.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/ClientInterface.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/ClientInterface.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/ClientTrait.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/ClientTrait.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/ClientException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/RequestException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/ServerException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Exception/TransferException.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/Proxy.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/HandlerStack.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/HandlerStack.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/MessageFormatter.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/MessageFormatter.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Middleware.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Middleware.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Pool.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Pool.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/RequestOptions.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/RequestOptions.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/RetryMiddleware.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/TransferStats.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/TransferStats.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Utils.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/Utils.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/functions.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/functions.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/functions_include.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/guzzle/src/functions_include.php
vendored
Normal file → Executable file
0
vendor/guzzlehttp/promises/CHANGELOG 2.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/promises/CHANGELOG 2.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/promises/CHANGELOG.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/promises/CHANGELOG.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/promises/LICENSE
vendored
Normal file → Executable file
0
vendor/guzzlehttp/promises/LICENSE
vendored
Normal file → Executable file
0
vendor/guzzlehttp/promises/LICENSE 2
vendored
Normal file → Executable file
0
vendor/guzzlehttp/promises/LICENSE 2
vendored
Normal file → Executable file
0
vendor/guzzlehttp/promises/README 2.md
vendored
Normal file → Executable file
0
vendor/guzzlehttp/promises/README 2.md
vendored
Normal file → Executable file
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user