Wrappers de VXml para PHP VXml
Esta información se refiere al uso de VXML bajo el entorno Windows usando PHP,

VXML NO puede utilizarse con PHP en otros sistemas operativos como Linux o MacOS ya que requiere arquitectura específica de Microsoft (uso de funciones en DLL).

Para integrar la librería VMXL en PHP bajo Windows, se debe utilizar la extensión FFI (Foreing Function Interface), disponible a partir de PHP 7.4, esta extensión permite declarar directamente las funciones exportadas por la DLL de estilo "C" nativo e interactuar con ellas sin necesidad de compilar extensiones adicionales en C o usar wrappers heredados.

Es importante tener activa la extensión FFI en el archivo PHP.INI, modifica / agrega estas 2 líneas en tu archivo de configuración:

extension = ffi
ffi.enable = true

Puedes utilizar VMXL_x86.DLL si tu PHP es de 32 bits, o bien VMXL_x64.DLL si tu PHP es de 64 bits.

Los ejemplos publicados utilizan la versión de 64 bits de VXML (VXML_x64.DLL).

Hemos creado una pequeña clase en PHP que encontrarás al final de los wrappers, esta clase, llamada VxmlFfi.php compatibiliza el uso de las funciones WIDE de VXML_x64.DLL en el entorno PHP, esta clase la encontrarás al final de los wrappers y viene incluída en los ejemplos.

Si desea ver los ejemplos funcionales del uso de VMXL con PHP HAGA CLICK AQUI. 
Wrapper:


<?php require_once "VxmlFfi.php"; // cargar la clase de compatibilidad $native = FFI::cdef("
void VXML_AddCfdiRelacionado_cfdi40W ( void *hXml, WCHAR *UUID ); void VXML_AddCfdiRelacionados_Cfdi40W ( void *hXml, WCHAR *TipoRelacion, WCHAR *UUID01, WCHAR *UUID02, WCHAR *UUID03, WCHAR *UUID04, WCHAR *UUID05, WCHAR *UUID06, WCHAR *UUID07, WCHAR *UUID08, WCHAR *UUID09, WCHAR *UUID10 ); void VXML_AddComplemento_cfdi40W ( void *hXml, WCHAR *complementoXml ); void VXML_AddComplementoConcepto_cfdi40W ( void *hXml, WCHAR *ComplementoConceptoXML ); void VXML_AddConcepto_Cfdi40W ( void *hXml, WCHAR *ClaveProdServ, WCHAR *NoIdentificacion, WCHAR *Cantidad, WCHAR *ClaveUnidad, WCHAR *Unidad, WCHAR *Descripcion, WCHAR *ValorUnitario, WCHAR *Importe, WCHAR *Descuento, WCHAR *ObjetoImp ); void VXML_AddConceptoComplementoHidroYPetro10W ( void *hXml, WCHAR *TipoPermiso, WCHAR *NumeroPermiso, WCHAR *ClaveHYP, WCHAR *SubProductoHYP ); void VXML_AddConceptoComplementoIeduW ( void *hXml, WCHAR *CURP, WCHAR *autRVOE, WCHAR *nivelEducativo, WCHAR *nombreAlumno, WCHAR *rfcPago ); void VXML_AddConceptoComplementoIedu10W ( void *hXml, WCHAR *nombreAlumno, WCHAR *CURP, WCHAR *nivelEducativo, WCHAR *autRVOE, WCHAR *rfcPago ); void VXML_AddConceptoComplementoVentaVehiculos11_cfdi40W ( void *hXml, WCHAR *ClaveVehicular, WCHAR *NIV, WCHAR *numero, WCHAR *fecha, WCHAR *aduana ); void VXML_AddConceptoCuentaPredial_cfdi40W ( void *hXml, WCHAR *numero ); void VXML_AddConceptoInformacionAduanera_cfdi40W ( void *hXml, WCHAR *NumeroPedimento ); void VXML_AddConceptoParte_cfdi40W ( void *hXml, WCHAR *ClaveProdServ, WCHAR *NoIdentificacion, WCHAR *Cantidad, WCHAR *Unidad, WCHAR *Descripcion, WCHAR *ValorUnitario, WCHAR *Importe, WCHAR *NumeroPedimento1, WCHAR *NumeroPedimento2, WCHAR *NumeroPedimento3, WCHAR *NumeroPedimento4, WCHAR *NumeroPedimento5 ); void VXML_AddConceptoRetencion_Cfdi40W ( void *hXml, WCHAR *Base, WCHAR *Impuesto, WCHAR *TipoFactor, WCHAR *TasaOCuota, WCHAR *Importe ); void VXML_AddConceptoTraslado_Cfdi40W ( void *hXml, WCHAR *Base, WCHAR *Impuesto, WCHAR *TipoFactor, WCHAR *TasaOCuota, WCHAR *Importe ); void VXML_AddImpuestoLocalRetenidoW ( void *hXml, WCHAR *ImpLocRetenido, WCHAR *TasadeRetencion, WCHAR *Importe ); void VXML_AddImpuestoLocalTrasladadoW ( void *hXml, WCHAR *ImpLocTrasladado, WCHAR *TasadeTraslado, WCHAR *Importe ); void VXML_AddNameSpaceW ( void *hXml, WCHAR *NameSpace, WCHAR *URL, WCHAR *SchemaLocation ); void VXML_AddRetencion_Cfdi40W ( void *hXml, WCHAR *Impuesto, WCHAR *Importe ); void VXML_AddTraslado_cfdi40W ( void *hXml, WCHAR *Impuesto, WCHAR *TipoFactor, WCHAR *TasaOCuota, WCHAR *Importe, WCHAR *Base ); void VXML_Aerolineas10AddCargoW ( void *hXml, WCHAR *CodigoCargo, WCHAR *Importe ); void *VXML_ApiEmisorAddW ( WCHAR *apiKey, WCHAR *usuario, WCHAR *rfcemisor, WCHAR *pwdconsulta, WCHAR *razonsocial, WCHAR *email, WCHAR *contacto, void *asignacion, void *suspendido, void *notificacion, WCHAR *outLog, WCHAR *reserved ); void *VXML_ApiEmisorAutoasignacionW ( WCHAR *apiKey, WCHAR *usuario, WCHAR *rfcemisor, void *asignacion, void *threshold, void *limit, WCHAR *active, WCHAR *outLog, WCHAR *reserved ); void *VXML_ApiEmisorUpdW ( WCHAR *apiKey, WCHAR *usuario, WCHAR *rfcemisor, WCHAR *pwdconsulta, WCHAR *razonsocial, WCHAR *email, WCHAR *contacto, void *suspendido, void *notificacion, WCHAR *outLog, WCHAR *reserved ); void *VXML_ApiUsuarioAddW ( WCHAR *apiKey, WCHAR *usuario, WCHAR *distribuidor, WCHAR *pwd, WCHAR *razonsocial, WCHAR *email, WCHAR *contacto, WCHAR *rfc, void *asignacion, WCHAR *outLog, WCHAR *xtra, WCHAR *reserved ); void *VXML_ApiUsuarioUpdW ( WCHAR *apiKey, WCHAR *usuario, WCHAR *distribuidor, WCHAR *pwd, WCHAR *razonsocial, WCHAR *email, WCHAR *contacto, WCHAR *rfc, WCHAR *outLog, WCHAR *xtra, WCHAR *reserved ); void *VXML_CancelaCFDI2022W ( WCHAR *szUsuario, WCHAR *szRfcEmisor, WCHAR *szMotivo, WCHAR *szUuid, WCHAR *szFolioSust, WCHAR *szCert, WCHAR *szKey, WCHAR *szPwd, WCHAR *szServer, WCHAR *szResult, WCHAR *szLog ); void *VXML_CancelaCFDI2022SSLW ( WCHAR *szUsuario, WCHAR *szRfcEmisor, WCHAR *szMotivo, WCHAR *szUuid, WCHAR *szFolioSust, WCHAR *szCert, WCHAR *szKey, WCHAR *szPwd, WCHAR *szServer, WCHAR *szResult, WCHAR *szLog ); void *VXML_CancelaRetencion2022W ( WCHAR *szUsuario, WCHAR *szRfcEmisor, WCHAR *szMotivo, WCHAR *szUuid, WCHAR *szFolioSust, WCHAR *szCert, WCHAR *szKey, WCHAR *szPwd, WCHAR *szServer, WCHAR *szResult, WCHAR *szLog ); void *VXML_CancelaRetencion2022SSLW ( WCHAR *szUsuario, WCHAR *szRfcEmisor, WCHAR *szMotivo, WCHAR *szUuid, WCHAR *szFolioSust, WCHAR *szCert, WCHAR *szKey, WCHAR *szPwd, WCHAR *szServer, WCHAR *szResult, WCHAR *szLog ); void VXML_CartaPorte31AddFiguraTransporteTiposFiguraW ( void *hXml, WCHAR *TipoFigura, WCHAR *RFCFigura, WCHAR *NumLicencia, WCHAR *NombreFigura, WCHAR *NumRegIdTribFigura, WCHAR *ResidenciaFiscalFigura, WCHAR *ParteTransporte, WCHAR *Calle, WCHAR *NumeroExterior, WCHAR *NumeroInterior, WCHAR *Colonia, WCHAR *Localidad, WCHAR *Referencia, WCHAR *Municipio, WCHAR *Estado, WCHAR *Pais, WCHAR *CodigoPostal ); void VXML_CartaPorte31AddFiguraTransporteTiposFiguraPartesTransporteW ( void *hXml, WCHAR *ParteTransporte ); void VXML_CartaPorte31AddMercanciaW ( void *hXml, WCHAR *BienesTransp, WCHAR *ClaveSTCC, WCHAR *Descripcion, WCHAR *Cantidad, WCHAR *ClaveUnidad, WCHAR *Unidad, WCHAR *Dimensiones, WCHAR *MaterialPeligroso, WCHAR *CveMaterialPeligroso, WCHAR *Embalaje, WCHAR *DescripEmbalaje, WCHAR *SectorCOFEPRIS, WCHAR *NombreIngredienteActivo, WCHAR *NomQuimico, WCHAR *DenominacionGenericaProd, WCHAR *DenominacionDistintivaProd, WCHAR *Fabricante, WCHAR *FechaCaducidad, WCHAR *LoteMedicamento, WCHAR *FormaFarmaceutica, WCHAR *CondicionesEspTransp, WCHAR *RegistroSanitarioFolioAutorizacion, WCHAR *PermisoImportacion, WCHAR *FolioImpoVUCEM, WCHAR *NumCAS, WCHAR *RazonSocialEmpImp, WCHAR *NumRegSanPlagCOFEPRIS, WCHAR *DatosFabricante, WCHAR *DatosFormulador, WCHAR *DatosMaquilador, WCHAR *UsoAutorizado, WCHAR *PesoEnKg, WCHAR *ValorMercancia, WCHAR *Moneda, WCHAR *FraccionArancelaria, WCHAR *UUIDComercioExt, WCHAR *TipoMateria, WCHAR *DescripcionMateria ); void VXML_CartaPorte31AddMercanciaCantidadTransportaW ( void *hXml, WCHAR *Cantidad, WCHAR *IDOrigen, WCHAR *IDDestino, WCHAR *CvesTransporte ); void VXML_CartaPorte31AddMercanciaDocumentacionAduaneraW ( void *hXml, WCHAR *TipoDocumento, WCHAR *NumPedimento, WCHAR *IdentDocAduanero, WCHAR *RFCImpo ); void VXML_CartaPorte31AddMercanciaGuiasIdentificacionW ( void *hXml, WCHAR *NumeroGuiaIdentificacion, WCHAR *DescripGuiaIdentificacion, WCHAR *PesoGuiaIdentificacion ); void VXML_CartaPorte31AddMercanciaParcial1W ( void *hXml, WCHAR *BienesTransp, WCHAR *ClaveSTCC, WCHAR *Descripcion, WCHAR *Cantidad, WCHAR *ClaveUnidad, WCHAR *Unidad, WCHAR *Dimensiones, WCHAR *MaterialPeligroso, WCHAR *CveMaterialPeligroso, WCHAR *Embalaje, WCHAR *DescripEmbalaje, WCHAR *PesoEnKg, WCHAR *ValorMercancia, WCHAR *Moneda, WCHAR *FraccionArancelaria, WCHAR *UUIDComercioExt, WCHAR *TipoMateria, WCHAR *DescripcionMateria ); void VXML_CartaPorte31AddMercanciaParcial2W ( void *hXml, WCHAR *SectorCOFEPRIS, WCHAR *NombreIngredienteActivo, WCHAR *NomQuimico, WCHAR *DenominacionGenericaProd, WCHAR *DenominacionDistintivaProd, WCHAR *Fabricante, WCHAR *FechaCaducidad, WCHAR *LoteMedicamento, WCHAR *FormaFarmaceutica, WCHAR *CondicionesEspTransp, WCHAR *RegistroSanitarioFolioAutorizacion, WCHAR *PermisoImportacion, WCHAR *FolioImpoVUCEM, WCHAR *NumCAS, WCHAR *RazonSocialEmpImp, WCHAR *NumRegSanPlagCOFEPRIS, WCHAR *DatosFabricante, WCHAR *DatosFormulador, WCHAR *DatosMaquilador, WCHAR *UsoAutorizado ); void VXML_CartaPorte31AddMercanciasTransporteFerroviarioCarroW ( void *hXml, WCHAR *TipoCarro, WCHAR *MatriculaCarro, WCHAR *GuiaCarro, WCHAR *ToneladasNetasCarro, WCHAR *TipoContenedor, WCHAR *PesoContenedorVacio, WCHAR *PesoNetoMercancia ); void VXML_CartaPorte31AddMercanciasTransporteFerroviarioCarroContenedorW ( void *hXml, WCHAR *TipoContenedor, WCHAR *PesoContenedorVacio, WCHAR *PesoNetoMercancia ); void VXML_CartaPorte31AddMercanciasTransporteFerroviarioDerechosDePasoW ( void *hXml, WCHAR *TipoDerechoDePaso, WCHAR *KilometrajePagado ); void VXML_CartaPorte31AddMercanciasTransporteMaritimoContenedorW ( void *hXml, WCHAR *TipoContenedor, WCHAR *MatriculaContenedor, WCHAR *NumPrecinto, WCHAR *IdCCPRelacionado, WCHAR *PlacaVMCCP, WCHAR *FechaCertificacionCCP, WCHAR *SubTipoRemCCP1, WCHAR *PlacaCCP1, WCHAR *SubTipoRemCCP2, WCHAR *PlacaCCP2 ); void VXML_CartaPorte31AddRegimenAduaneroW ( void *hXml, WCHAR *RegimenAduanero01, WCHAR *RegimenAduanero02, WCHAR *RegimenAduanero03, WCHAR *RegimenAduanero04, WCHAR *RegimenAduanero05, WCHAR *RegimenAduanero06, WCHAR *RegimenAduanero07, WCHAR *RegimenAduanero08, WCHAR *RegimenAduanero09, WCHAR *RegimenAduanero10 ); void VXML_CartaPorte31AddUbicacionW ( void *hXml, WCHAR *TipoUbicacion, WCHAR *IDUbicacion, WCHAR *RFCRemitenteDestinatario, WCHAR *NombreRemitenteDestinatario, WCHAR *NumRegIdTrib, WCHAR *ResidenciaFiscal, WCHAR *NumEstacion, WCHAR *NombreEstacion, WCHAR *NavegacionTrafico, WCHAR *FechaHoraSalidaLlegada, WCHAR *TipoEstacion, WCHAR *DistanciaRecorrida, WCHAR *Calle, WCHAR *NumeroExterior, WCHAR *NumeroInterior, WCHAR *Colonia, WCHAR *Localidad, WCHAR *Referencia, WCHAR *Municipio, WCHAR *Estado, WCHAR *Pais, WCHAR *CodigoPostal ); void VXML_CartaPorte31SetDetalleMercanciaW ( void *hXml, WCHAR *UnidadPesoMerc, WCHAR *PesoBruto, WCHAR *PesoNeto, WCHAR *PesoTara, WCHAR *NumPiezas ); void VXML_CartaPorte31SetMercanciasW ( void *hXml, WCHAR *PesoBrutoTotal, WCHAR *UnidadPeso, WCHAR *PesoNetoTotal, WCHAR *NumTotalMercancias, WCHAR *CargoPorTasacion, WCHAR *LogisticaInversaRecoleccionDevolucion ); void VXML_CartaPorte31SetMercanciasAutotransporteW ( void *hXml, WCHAR *PermSCT, WCHAR *NumPermisoSCT, WCHAR *ConfigVehicular, WCHAR *PesoBrutoVehicular, WCHAR *PlacaVM, WCHAR *AnioModeloVM, WCHAR *AseguraRespCivil, WCHAR *PolizaRespCivil, WCHAR *AseguraMedAmbiente, WCHAR *PolizaMedAmbiente, WCHAR *AseguraCarga, WCHAR *PolizaCarga, WCHAR *PrimaSeguro, WCHAR *SubTipoRem1, WCHAR *Placa1, WCHAR *SubTipoRem2, WCHAR *Placa2 ); void VXML_CartaPorte31SetMercanciasTransporteAereoW ( void *hXml, WCHAR *PermSCT, WCHAR *NumPermisoSCT, WCHAR *MatriculaAeronave, WCHAR *NombreAseg, WCHAR *NumPolizaSeguro, WCHAR *NumeroGuia, WCHAR *LugarContrato, WCHAR *CodigoTransportista, WCHAR *RFCEmbarcador, WCHAR *NumRegIdTribEmbarc, WCHAR *ResidenciaFiscalEmbarc, WCHAR *NombreEmbarcador ); void VXML_CartaPorte31SetMercanciasTransporteFerroviarioW ( void *hXml, WCHAR *TipoDeServicio, WCHAR *TipoDeTrafico, WCHAR *NombreAseg, WCHAR *NumPolizaSeguro, WCHAR *TipoDerechoDePaso, WCHAR *KilometrajePagado, WCHAR *TipoCarro, WCHAR *MatriculaCarro, WCHAR *GuiaCarro, WCHAR *ToneladasNetasCarro, WCHAR *TipoContenedor, WCHAR *PesoContenedorVacio, WCHAR *PesoNetoMercancia ); void VXML_CartaPorte31SetMercanciasTransporteMaritimoW ( void *hXml, WCHAR *PermSCT, WCHAR *NumPermisoSCT, WCHAR *NombreAseg, WCHAR *NumPolizaSeguro, WCHAR *TipoEmbarcacion, WCHAR *Matricula, WCHAR *NumeroOMI, WCHAR *AnioEmbarcacion, WCHAR *NombreEmbarc, WCHAR *NacionalidadEmbarc, WCHAR *UnidadesDeArqBruto, WCHAR *TipoCarga, WCHAR *Eslora, WCHAR *Manga, WCHAR *Calado, WCHAR *Puntal, WCHAR *LineaNaviera, WCHAR *NombreAgenteNaviero, WCHAR *NumAutorizacionNaviero, WCHAR *NumViaje, WCHAR *NumConocEmbarc, WCHAR *PermisoTempNavegacion ); void VXML_CCE11AddDestinatarioW ( void *hXml, WCHAR *NumRegIdTrib, WCHAR *Nombre, WCHAR *Calle, WCHAR *NumeroExterior, WCHAR *NumeroInterior, WCHAR *Colonia, WCHAR *Localidad, WCHAR *Referencia, WCHAR *Municipio, WCHAR *Estado, WCHAR *Pais, WCHAR *CodigoPostal ); void VXML_CCE20AddDestinatarioDomicilioW ( void *hXml, WCHAR *Calle, WCHAR *NumeroExterior, WCHAR *NumeroInterior, WCHAR *Colonia, WCHAR *Localidad, WCHAR *Referencia, WCHAR *Municipio, WCHAR *Estado, WCHAR *Pais, WCHAR *CodigoPostal ); void VXML_CCE20AddMercanciaW ( void *hXml, WCHAR *NoIdentificacion, WCHAR *FraccionArancelaria, WCHAR *CantidadAduana, WCHAR *UnidadAduana, WCHAR *ValorUnitarioAduana, WCHAR *ValorDolares, WCHAR *Marca, WCHAR *Modelo, WCHAR *SubModelo, WCHAR *NumeroSerie ); void VXML_CCE20AddMercanciaDescripcionesEspecificasW ( void *hXml, WCHAR *Marca, WCHAR *Modelo, WCHAR *SubModelo, WCHAR *NumeroSerie ); void VXML_CCE20AddPropietarioW ( void *hxml, WCHAR *NumRegIdTrib, WCHAR *ResidenciaFiscal ); void VXML_CCE20SetEmisorW ( void *hXml, WCHAR *Curp, WCHAR *Calle, WCHAR *NumeroExterior, WCHAR *NumeroInterior, WCHAR *Colonia, WCHAR *Localidad, WCHAR *Referencia, WCHAR *Municipio, WCHAR *Estado, WCHAR *Pais, WCHAR *CodigoPostal ); void VXML_CCE20SetReceptorW ( void *hXml, WCHAR *NumRegIdTrib, WCHAR *Calle, WCHAR *NumeroExterior, WCHAR *NumeroInterior, WCHAR *Colonia, WCHAR *Localidad, WCHAR *Referencia, WCHAR *Municipio, WCHAR *Estado, WCHAR *Pais, WCHAR *CodigoPostal ); void *VXML_CerKeyMatchW ( void *hXml, WCHAR *Emisor, WCHAR *Cer, WCHAR *Key, WCHAR *eyPwd ); void *VXML_CerTo64W ( WCHAR *ArchivoCer ); void *VXML_CheckFileW ( WCHAR *ArchVXML ); void *VXML_CheckLicenceW ( WCHAR *user, WCHAR *llave, WCHAR *emisor ); void VXML_ConsultaEstadoCFDIW ( WCHAR *RFCEmisor, WCHAR *RFCReceptor, WCHAR *Total, WCHAR *UUID, WCHAR *OutLog ); void VXML_ConsultaEstadoCFDISSLW ( WCHAR *RFCEmisor, WCHAR *RFCReceptor, WCHAR *Total, WCHAR *UUID, WCHAR *OutLog ); void *VXML_ConsultaSaldosW ( WCHAR *rfcEmisor, void *DatoSolicitado, WCHAR *ArchivoLog ); void *VXML_ConsultaSaldosSSLW ( WCHAR *rfcEmisor, void *DatoSolicitado, WCHAR *ArchivoLog ); void *VXML_FileTo64W ( WCHAR *ArchivoCer ); void VXML_FreeW ( void *hXml ); void *VXML_GeneraCBBW ( WCHAR *Datos, WCHAR *Archivo, void *Depedencias, WCHAR *RutaLog, void *AddLog, void *Escala, void *Margen ); void *VXML_GetStatusCFDIW ( WCHAR *szUsuario, WCHAR *szRfcEmisor, WCHAR *szRfcReceptor, WCHAR *szTotal, WCHAR *szUuid, WCHAR *szResult, WCHAR *szLog ); void *VXML_GetStatusCFDISSLW ( WCHAR *szUsuario, WCHAR *szRfcEmisor, WCHAR *szRfcReceptor, WCHAR *szTotal, WCHAR *szUuid, WCHAR *szResult, WCHAR *szLog ); WCHAR *VXML_GetTimeWithDelayW ( void *hXml, void *nSegs ); void *VXML_GetValueW ( void *hXml, void *ValoraRecuperar ); void VXML_GetValueInFileW ( void *hXml, void *value, WCHAR *file ); void VXML_GetValuesW ( void *hXml, WCHAR *Archivo, void *Formato ); void VXML_INE11AddEntidadW ( void *hXml, WCHAR *ClaveEntidad, WCHAR *Ambito, WCHAR *IdContabilidad ); void VXML_INE11AddEntidadContabilidadW ( void *hXml, WCHAR *IdContabilidad ); void *VXML_LoadW ( WCHAR *file ); void *VXML_MasivaDescargaW ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *IdPaquete, WCHAR *ArchivoDescargado, WCHAR *ArchLog, WCHAR *Reservado ); void *VXML_MasivaDescargaSSLW ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *IdPaquete, WCHAR *ArchivoDescargado, WCHAR *ArchLog, WCHAR *Reservado ); void VXML_MasivaSolicitaEmitidoMetadata2022W ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *RfcReceptor, WCHAR *FechaDesde, WCHAR *FechaHasta, WCHAR *Estado, WCHAR *Complemento, WCHAR *Tipo, WCHAR *UUID, WCHAR *ArchResultado, WCHAR *ArchLog, WCHAR *Reservado ); void VXML_MasivaSolicitaEmitidoMetadata2022SSLW ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *RfcReceptor, WCHAR *FechaDesde, WCHAR *FechaHasta, WCHAR *Estado, WCHAR *Complemento, WCHAR *Tipo, WCHAR *UUID, WCHAR *ArchResultado, WCHAR *ArchLog, WCHAR *Reservado ); void VXML_MasivaSolicitaEmitidoXML2022W ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *RfcReceptor, WCHAR *FechaDesde, WCHAR *FechaHasta, WCHAR *Estado, WCHAR *Complemento, WCHAR *Tipo, WCHAR *UUID, WCHAR *ArchResultado, WCHAR *ArchLog, WCHAR *Reservado ); void VXML_MasivaSolicitaEmitidoXML2022SSLW ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *RfcReceptor, WCHAR *FechaDesde, WCHAR *FechaHasta, WCHAR *Estado, WCHAR *Complemento, WCHAR *Tipo, WCHAR *UUID, WCHAR *ArchResultado, WCHAR *ArchLog, WCHAR *Reservado ); void VXML_MasivaSolicitaRecibidoMetadata2022W ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *RfcEmisor, WCHAR *FechaDesde, WCHAR *FechaHasta, WCHAR *Estado, WCHAR *Complemento, WCHAR *Tipo, WCHAR *UUID, WCHAR *ArchResultado, WCHAR *ArchLog, WCHAR *Reservado ); void VXML_MasivaSolicitaRecibidoMetadata2022SSLW ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *RfcEmisor, WCHAR *FechaDesde, WCHAR *FechaHasta, WCHAR *Estado, WCHAR *Complemento, WCHAR *Tipo, WCHAR *UUID, WCHAR *ArchResultado, WCHAR *ArchLog, WCHAR *Reservado ); void VXML_MasivaSolicitaRecibidoXML2022W ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *RfcEmisor, WCHAR *FechaDesde, WCHAR *FechaHasta, WCHAR *Estado, WCHAR *Complemento, WCHAR *Tipo, WCHAR *UUID, WCHAR *ArchResultado, WCHAR *ArchLog, WCHAR *Reservado ); void VXML_MasivaSolicitaRecibidoXML2022SSLW ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *RfcEmisor, WCHAR *FechaDesde, WCHAR *FechaHasta, WCHAR *Estado, WCHAR *Complemento, WCHAR *Tipo, WCHAR *UUID, WCHAR *ArchResultado, WCHAR *ArchLog, WCHAR *Reservado ); void *VXML_MasivaVerificaW ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *IdSolicitud, WCHAR *ArchResultado, WCHAR *ArchLog, WCHAR *Reservado ); void *VXML_MasivaVerificaSSLW ( WCHAR *Usuario, WCHAR *ArchivoCerFiel, WCHAR *ArchivoKeyFiel, WCHAR *PwdKey, WCHAR *IdSolicitud, WCHAR *ArchResultado, WCHAR *ArchLog, WCHAR *Reservado ); void VXML_MicroConsultaDatosFiscalesW ( WCHAR *ApiKey, WCHAR *Usuario, WCHAR *RfcEmisor, WCHAR *RfcReceptor, WCHAR *Cer, WCHAR *Key, WCHAR *PwdKeystring ResultFile, WCHAR *OutLog, WCHAR *Reservado ); void VXML_MicroConsultaDatosFiscalesSSLW ( WCHAR *ApiKey, WCHAR *Usuario, WCHAR *RfcEmisor, WCHAR *RfcReceptor, WCHAR *Cer, WCHAR *Key, WCHAR *PwdKeystring ResultFile, WCHAR *OutLog, WCHAR *Reservado ); void VXML_MicroValidaDatosFiscalesW ( WCHAR *ApiKey, WCHAR *Usuario, WCHAR *RfcEmisor, WCHAR *RfcReceptor, WCHAR *nombre, WCHAR *RegimenFiscal, WCHAR *CodigoPostal, WCHAR *Cer, WCHAR *Key, WCHAR *PwdKeystring ResultFile, WCHAR *OutLog, WCHAR *Reservado ); void VXML_MicroValidaDatosFiscalesSSLW ( WCHAR *ApiKey, WCHAR *Usuario, WCHAR *RfcEmisor, WCHAR *RfcReceptor, WCHAR *nombre, WCHAR *RegimenFiscal, WCHAR *CodigoPostal, WCHAR *Cer, WCHAR *Key, WCHAR *PwdKeystring ResultFile, WCHAR *OutLog, WCHAR *Reservado ); void *VXml_NewW ( WCHAR *szVersion ); void *VXML_NewWithLogW ( WCHAR *szVersion, WCHAR *cNombreLog ); void VXML_Nomina12AddDeduccionW ( void *hXml, WCHAR *TipoDeduccion, WCHAR *Clave, WCHAR *Concepto, WCHAR *Importe ); void VXML_Nomina12AddIncapacidadW ( void *hXml, WCHAR *DiasIncapacidad, WCHAR *TipoIncapacidad, WCHAR *Importe ); void VXML_Nomina12AddOtroPagoW ( void *hXml, WCHAR *TipoOtroPago, WCHAR *Clave, WCHAR *Concepto, WCHAR *Importe, WCHAR *SubsidioCausado, WCHAR *SaldoAFavor, WCHAR *Year, WCHAR *RemanenteSalFav ); void VXML_Nomina12AddPercepcionW ( void *hXml, WCHAR *TipoPercepcion, WCHAR *Clave, WCHAR *Concepto, WCHAR *ImporteGravado, WCHAR *ImporteExento, WCHAR *Dias, WCHAR *TipoHoras, WCHAR *HorasExtra, WCHAR *ImportePagado, WCHAR *ValorMercado, WCHAR *PrecioAlOtorgarse ); void VXML_Nomina12AddSubContratacionW ( void *hXml, WCHAR *RfcLabora, WCHAR *PorcentajeTiempo ); void VXML_Nomina12SetDeduccionesW ( void *hXml, WCHAR *TotalOtrasDeducciones, WCHAR *TotalImpuestosRetenidos ); void VXML_Nomina12SetEmisorW ( void *hXml, WCHAR *Curp, WCHAR *RegistroPatronal, WCHAR *RfcPatronOrigen, WCHAR *OrigenRecurso, WCHAR *MontoRecursoPropio ); void VXML_Nomina12SetJubilacionPensionRetiroW ( void *hXml, WCHAR *TotalUnaExhibicion, WCHAR *TotalParcialidad, WCHAR *MontoDiario, WCHAR *IngresoAcumulable, WCHAR *IngresoNoAcumulable ); void VXML_Nomina12SetPercepcionesW ( void *hXml, WCHAR *TotalSueldos, WCHAR *TotalSeparacionIndeminizacion, WCHAR *TotalJubilacionPensionRetiro, WCHAR *TotalGravado, WCHAR *TotalExento ); void VXML_Nomina12SetReceptorW ( void *hXml, WCHAR *Curp, WCHAR *NumSeguridadSocial, WCHAR *FechaInicioRelLaboral, WCHAR *Antiguedad, WCHAR *TipoContrato, WCHAR *Sindicalizado, WCHAR *TipoJornada, WCHAR *TipoRegimen, WCHAR *NumEmpleado, WCHAR *Departamento, WCHAR *Puesto, WCHAR *RiesgoPuesto, WCHAR *PeriodicidadPago, WCHAR *Banco, WCHAR *CuentaBancaria, WCHAR *SalarioBaseCotApor, WCHAR *SalarioDiarioIntegrado, WCHAR *ClaveEntFec ); void VXML_Nomina12SetSeparacionIndemnizacionW ( void *hXml, WCHAR *TotalPagado, WCHAR *NumAnosServicio, WCHAR *UltimoSueldoMensOrd, WCHAR *IngresoAcumulable, WCHAR *IngresoNoAcumulable ); void VXML_Pagos20AddPagoW ( void *hXml, WCHAR *FechaPago, WCHAR *FormaDePagoP, WCHAR *MonedaP, WCHAR *TipoCambioP, WCHAR *Monto, WCHAR *NumOperacion, WCHAR *RfcEmisorCtaOrd, WCHAR *NomBancoOrdExt, WCHAR *CtaOrdenante, WCHAR *RfcEmisorCtaBen, WCHAR *CtaBeneficiario, WCHAR *TipoCadPago, WCHAR *CertPago, WCHAR *CadPago, WCHAR *SelloPago ); void VXML_Pagos20AddPagoDoctoRelacionadoW ( void *hXml, WCHAR *idDocumento, WCHAR *Serie, WCHAR *Folio, WCHAR *MonedadDR, WCHAR *EquivalenciaDR, WCHAR *NumParcialidad, WCHAR *ImpSaldoAnt, WCHAR *ImpPagado, WCHAR *ImpSaldoInsoluto, WCHAR *ObjetoImpDR ); void VXML_Pagos20AddPagoDoctoRelacionadoRetencionDRW ( void *hXml, WCHAR *BaseDR, WCHAR *ImpuestoDR, WCHAR *TipoFactorDR, WCHAR *TasaOCuotaDR, WCHAR *ImporteDR ); void VXML_Pagos20AddPagoDoctoRelacionadoTrasladoDRW ( void *hXml, WCHAR *BaseDR, WCHAR *ImpuestoDR, WCHAR *TipoFactorDR, WCHAR *TasaOCuotaDR, WCHAR *ImporteDR ); void VXML_Pagos20AddPagoImpuestosPRetencionPW ( void *hXml, WCHAR *ImpuestoP, WCHAR *ImporteP ); void VXML_Pagos20AddPagoImpuestosPTrasladoPW ( void *hXml, WCHAR *BaseP, WCHAR *ImpuestoP, WCHAR *TipoFactorP, WCHAR *TasaOCuotaP, WCHAR *ImporteP ); void *VXML_ProcesaDocumentoW ( void *hXml, WCHAR *ArchivoCER, WCHAR *ArchivoKEY, WCHAR *PasswordKEY, WCHAR *ArchivoXML ); void *VXML_ProcesaDocumentoSSLW ( void *hXml, WCHAR *ArchivoCER, WCHAR *ArchivoKEY, WCHAR *PasswordKEY, WCHAR *ArchivoXML ); void VXML_ProcessFileW ( WCHAR *ArchivoVXML ); void *VXML_RecuperaAcuseCancelacionW ( WCHAR *rfcemisor, WCHAR *uuid, WCHAR *archivoXMLAcuse, WCHAR *archivoLOG, WCHAR *reservado ); void *VXML_RecuperaAcuseCancelacionSSLW ( WCHAR *rfcemisor, WCHAR *uuid, WCHAR *archivoXMLAcuse, WCHAR *archivoLOG, WCHAR *reservado ); void *VXML_RecuperaCFDIW ( WCHAR *szUsuario, WCHAR *szRfcEmisor, WCHAR *szUuid, void *Ejercicio, WCHAR *szResultado, WCHAR *szLog, WCHAR *szReservado ); void *VXML_RecuperaCFDISSLW ( WCHAR *szUsuario, WCHAR *szRfcEmisor, WCHAR *szUuid, void *Ejercicio, WCHAR *szResultado, WCHAR *szLog, WCHAR *szReservado ); void VXML_SaveW ( void *hXml, WCHAR *file ); void *VXML_SendEmailW ( WCHAR *SmtpServer, void *SmtpPort, WCHAR *SmtpUserName, WCHAR *SmtpPassword, WCHAR *MessageTo, WCHAR *MessageFrom, WCHAR *MessageSubject, WCHAR *MessageBody, WCHAR *MessageAttach1, WCHAR *MessageAttach2, WCHAR *MessageAttach3, WCHAR *OutLog, WCHAR *SSL ); void VXML_SetAddenda_cfdi40W ( void *hXml, WCHAR *text ); void VXML_SetAddendaText_cfdi40W ( void *hXml, WCHAR *text ); void VXML_SetAerolineas10W ( void *hXml, WCHAR *TUA, WCHAR *TotalCargos, WCHAR *CodigoCargo, WCHAR *Importe ); void VXML_SetCartaPorte31W ( void *hXml, WCHAR *IdCCP, WCHAR *TranspInternac, WCHAR *EntradaSalidaMerc, WCHAR *PaisOrigenDestino, WCHAR *ViaEntradaSalida, WCHAR *TotalDistRec, WCHAR *RegistroITSMO, WCHAR *UbicacionPoloOrigen, WCHAR *UbicacionPoloDestino ); void VXML_SetComercioExterior20W ( void *hXml, WCHAR *MotivoTraslado, WCHAR *ClaveDePedimento, WCHAR *CertificadoOrigen, WCHAR *NumCertificadoOrigen, WCHAR *NumeroExportadorConfiable, WCHAR *Incoterm, WCHAR *Observaciones, WCHAR *TipoCambioUSD, WCHAR *TotalUSD ); void VXML_SetCompleteXML_cfdi40W ( void *hXml, WCHAR *TextoXMLoArchivoXML ); void VXML_SetComprobanteInfo_Cfdi40W ( void *hXml, WCHAR *Serie, WCHAR *Folio, WCHAR *Fecha, WCHAR *FormaPago, WCHAR *CondicionesDePago, WCHAR *SubTotal, WCHAR *Descuento, WCHAR *Moneda, WCHAR *TipoCambio, WCHAR *Total, WCHAR *TipoDeComprobante, WCHAR *MetodoPago, WCHAR *LugarExpedicion, WCHAR *Confirmacion, WCHAR *Exportacion ); void VXML_SetConceptoACuentaTerceros_cfdi40W ( void *hXml, WCHAR *RfcACuentaTerceros, WCHAR *NombreACuentaTerceros, WCHAR *RegimenFiscalACuentaTerceros, WCHAR *DomicilioFiscalACuentaTerceros ); void VXML_SetDivisas10W ( void *hXml, WCHAR *tipoOperacion ); void VXML_SetDllPathW ( void *hXml, WCHAR *RutaDLL ); void VXML_SetDonatarias11W ( void *hXml, WCHAR *noAutorizacion, WCHAR *fechaAutorizacion, WCHAR *leyenda ); void VXML_SetEmisorInfo_Cfdi40W ( void *hXml, WCHAR *Rfc, WCHAR *Nombre, WCHAR *RegimenFiscal, WCHAR *FacAtrAdquirente ); void VXML_SetImpuestosInfo_Cfdi40W ( void *hXml, WCHAR *TotalImpuestosTrasladados, WCHAR *TotalImpuestosRetenidos ); void VXML_SetImpuestosLocales10W ( void *hXml, WCHAR *TotaldeTraslados, WCHAR *TotaldeRetenciones ); void VXML_SetINE11W ( void *hXml, WCHAR *TipoProceso, WCHAR *TipoComite, WCHAR *IdContabilidad, WCHAR *ClaveEntidad, WCHAR *Ambito, WCHAR *EntidadContabilidadIdContabilidad ); void VXML_SetInformacionGlobal_Cfdi40W ( void *hXml, WCHAR *Periodicidad, WCHAR *Meses, WCHAR *Year ); void VXML_SetLeyendasFiscales10W ( void *hXml, WCHAR *DisposicionFiscal, WCHAR *Norma, WCHAR *TextoLeyenda ); void VXML_SetLeyendasFiscales10fullW ( void *hXml, WCHAR *DisposicionFiscal01, WCHAR *Norma01, WCHAR *TextoLeyenda01, WCHAR *DisposicionFiscal02, WCHAR *Norma02, WCHAR *TextoLeyenda02, WCHAR *DisposicionFiscal03, WCHAR *Norma03, WCHAR *TextoLeyenda03, WCHAR *DisposicionFiscal04, WCHAR *Norma04, WCHAR *TextoLeyenda04, WCHAR *DisposicionFiscal05, WCHAR *Norma05, WCHAR *TextoLeyenda05, WCHAR *DisposicionFiscal06, WCHAR *Norma06, WCHAR *TextoLeyenda06, WCHAR *DisposicionFiscal07, WCHAR *Norma07, WCHAR *TextoLeyenda07, WCHAR *DisposicionFiscal08, WCHAR *Norma08, WCHAR *TextoLeyenda08, WCHAR *DisposicionFiscal09, WCHAR *Norma09, WCHAR *TextoLeyenda09, WCHAR *DisposicionFiscal10, WCHAR *Norma10, WCHAR *TextoLeyenda10 ); void VXML_SetLogFileW ( void *hXml, WCHAR *cNombreLog ); void VXML_SetNomina12W ( void *hXml, WCHAR *TipoNomina, WCHAR *FechaPago, WCHAR *FechaInicialPago, WCHAR *FechaFinalPago, WCHAR *NumDiasPagados, WCHAR *TotalPercepciones, WCHAR *TotalDeduciones, WCHAR *TotalOtrosPagos ); void VXML_SetPagos20W ( void *hXml, WCHAR *TotalRetencionesIVA, WCHAR *TotalRetencionesISR, WCHAR *TotalRetencionesIEPS, WCHAR *TotalTrasladosBaseIVA16, WCHAR *TotalTrasladosImpuestoIVA16, WCHAR *TotalTrasladosBaseIVA8, WCHAR *TotalTrasladosImpuestoIVA8, WCHAR *TotalTrasladosBaseIVA0, WCHAR *TotalTrasladosImpuestoIVA0, WCHAR *TotalTrasladosBaseIVAExento, WCHAR *MontoTotalPagos ); void VXML_SetReceptorInfo_Cfdi40W ( void *hXml, WCHAR *Rfc, WCHAR *Nombre, WCHAR *ResidenciaFiscal, WCHAR *NumRegIdTrib, WCHAR *UsoCFDI, WCHAR *DomicilioFiscalReceptor, WCHAR *RegimenFiscalReceptor ); void VXML_SetServicioParcial10W ( void *hXml, WCHAR *NumPerLicoAut, WCHAR *Calle, WCHAR *NoExterior, WCHAR *NoInterior, WCHAR *Colonia, WCHAR *Localidad, WCHAR *Referencia, WCHAR *Municipio, WCHAR *Estado, WCHAR *CodigoPostal ); void VXML_SetTuristaPasajeroExtranjero10W ( void *hXml, WCHAR *fechadeTransito, WCHAR *tipoTransito, WCHAR *Via, WCHAR *TipoId, WCHAR *NumeroId, WCHAR *Nacionalidad, WCHAR *EmpresaTransporte, WCHAR *IdTransporte ); void VXML_SetUserInfoW ( void *hXml, WCHAR *cUsuario, WCHAR *cServidor ); void VXML_SetVehiculoUsado10W ( void *hXml, WCHAR *montoAdquisicion, WCHAR *montoEnajenacion, WCHAR *claveVehicular, WCHAR *marca, WCHAR *tipo, WCHAR *modelo, WCHAR *numeroMotor, WCHAR *numeroSerie, WCHAR *NIV, WCHAR *valor, WCHAR *numero, WCHAR *fecha, WCHAR *aduana ); void VXML_ShowValueW ( void *hXml, void *lValor, WCHAR *titulo ); void VXML_ValidaCFDITimbradoW ( WCHAR *Xml, WCHAR *OutLog, WCHAR *csdPAC, void *CheckSAT ); void VXML_ValidaCFDITimbradoSSLW ( WCHAR *Xml, WCHAR *OutLog, WCHAR *csdPAC, void *CheckSAT ); void VXML_VehiculoUsado10AddInformacionAduaneraW ( void *hXml, WCHAR *numero, WCHAR *fecha, WCHAR *aduana ); void VXMLRET_AddComplementoPlataformasTecnologicas10DetallesDelServicioW ( void *hXml, WCHAR *FormaPagoServ, WCHAR *TipodeServ, WCHAR *SubTipServ, WCHAR *RFCTerceroAutorizado, WCHAR *FechaServ, WCHAR *PrecioServSinIVA, WCHAR *BaseTraslados, WCHAR *ImpuestoTrasladados, WCHAR *TipoFactorTrasladados, WCHAR *TasaCuotaTraslados, WCHAR *ImporteTrasladados, WCHAR *ImpContrib, WCHAR *EntidadDondePagaLaContibucion, WCHAR *BaseComision, WCHAR *PorcentajeComision, WCHAR *ImporteComision ); void VXMLRET_AddRetencionesTotalesImpRetenidosW ( void *hXml, WCHAR *BaseRet, WCHAR *ImpuestosRet, WCHAR *MontoRet, WCHAR *TipoPagoRet ); void VXMLRET_FreeW ( void *hXml ); WCHAR *VXMLRET_GetValueW ( void *hXml, void *value ); void VXMLRET_GetValueInFileW ( void *hXml, void *value, WCHAR *file ); void VXMLRET_GetValuesW ( void *hXml, WCHAR *file, void *nFormat ); void *VXMLRET_NewWithLogW ( WCHAR *szVersion, WCHAR *logfile ); void *VXMLRET_ProcesaDocumentoW ( void *hXml, WCHAR *csd, WCHAR *key, WCHAR *keypwd, WCHAR *outfile ); void *VXMLRET_ProcesaDocumentoSSLW ( void *hXml, WCHAR *csd, WCHAR *key, WCHAR *keypwd, WCHAR *outfile ); void VXMLRET_SetAddendatextW ( void *hXml, WCHAR *text ); void VXMLRET_SetAddendaXmlW ( void *hXml, WCHAR *text ); void VXMLRET_SetComplementoArrendamientoenfideicomiso10W ( void *hXml, WCHAR *PagProvEfecPorFiduc, WCHAR *RendimFideicom, WCHAR *DeduccCorresp, WCHAR *MontTotRet, WCHAR *MontResFiscDistFibras, WCHAR *MontOtrosConceptDistr, WCHAR *DescrMontOtrosConceptDistr ); void VXMLRET_SetComplementoDividendos10W ( void *hXml, WCHAR *CveTipDivOUtil, WCHAR *MontISRAcredRetMexico, WCHAR *MontISRAcredRetExtranjero, WCHAR *MontRetExtDivExt, WCHAR *TipoSocDistrDiv, WCHAR *MontISRAcredNal, WCHAR *MontDivAcumNal, WCHAR *MontDivAcumExt, WCHAR *ProporcionRem ); void VXMLRET_SetComplementoEnajenaciondeAcciones10W ( void *hXml, WCHAR *ContratoIntermediacion, WCHAR *Ganancia, WCHAR *Perdida ); void VXMLRET_SetComplementoFideicomisonoempresarial10W ( void *hXml, WCHAR *MontTotEntradasPeriodo, WCHAR *PartPropAcumDelFideicom, WCHAR *PropDelMontTotEntradas, WCHAR *Concepto, WCHAR *MontTotEgresPeriodo, WCHAR *PartPropDelFideicom, WCHAR *PropDelMontTotSalidas, WCHAR *ConceptoS, WCHAR *MontRetRelPagFideic, WCHAR *DescRetRelPagFideic ); void VXMLRET_SetComplementoIntereses10W ( void *hXml, WCHAR *SistFinanciero, WCHAR *RetiroAORESRetInt, WCHAR *OperFinancDerivad, WCHAR *MontIntNominal, WCHAR *MontIntReal, WCHAR *Perdida ); void VXMLRET_SetComplementoIntereseshipotecarios10W ( void *hXml, WCHAR *CreditoDeInstFinanc, WCHAR *SaldoInsoluto, WCHAR *PropDeducDelCredit, WCHAR *MontTotIntNominalesDev, WCHAR *MontTotIntNominalesDevYPag, WCHAR *MontTotIntRealPagDeduc, WCHAR *NumContrato ); void VXMLRET_SetComplementoOperacionesconderivados10W ( void *hXml, WCHAR *MontGanAcum, WCHAR *MontPerdDed ); void VXMLRET_SetComplementoPagosaextranjeros10W ( void *hXml, WCHAR *EsBenefEfectDelCobro, WCHAR *PaisDeResidParaEfecFisc, WCHAR *ConceptoPagoNoBeneficiario, WCHAR *DescripcionConceptoNoBeneficiario, WCHAR *RFC, WCHAR *CURP, WCHAR *NomDenRazSocB, WCHAR *ConceptoS, WCHAR *ConceptoPagoBeneficiario, WCHAR *DescripcionConceptoBeneficiario ); void VXMLRET_SetComplementoPlanesderetiro11W ( void *hXml, WCHAR *SistemaFinanc, WCHAR *MontTotAportAnioInmAnterior, WCHAR *MontIntRealesDevengAniooInmAnt, WCHAR *HuboRetirosAnioInmAntPer, WCHAR *MontTotRetiradoAnioInmAntPer, WCHAR *MontTotExedenteAnioInmAnt, WCHAR *HuboRetirosAnioInmAnt, WCHAR *MontTotRetiradoAnioInmAnt, WCHAR *NumReferencia, WCHAR *TipoAportacionODeposito1, WCHAR *MontAportODep1, WCHAR *RFCFiduciaria1, WCHAR *TipoAportacionODeposito2, WCHAR *MontAportODep2, WCHAR *RFCFiduciaria2, WCHAR *TipoAportacionODeposito3, WCHAR *MontAportODep3, WCHAR *RFCFiduciaria3 ); void VXMLRET_SetComplementoPlataformasTecnologicas10W ( void *hXml, WCHAR *Periodicidad, WCHAR *NumServ, WCHAR *MontTotServSIVA, WCHAR *TotalIVATraslado, WCHAR *TotalIVARetenido, WCHAR *TotalISRRetenido, WCHAR *DifIVAEntregadoPrestServ, WCHAR *MonTotalporUsoPlataforma, WCHAR *MonTotalContribuionesGuber ); void VXMLRET_SetComplementoPremios10W ( void *hXml, WCHAR *EntidadFederativa, WCHAR *MontTotPago, WCHAR *MontTotPagoGrav, WCHAR *MontTotPagoExent ); void VXMLRET_SetComplementoSectorFinanciero10W ( void *hXml, WCHAR *IdFideicom, WCHAR *NomFideicom, WCHAR *DescripFideicom ); void VXMLRET_SetRetencionesCfdiRetenRelacionadosW ( void *hXml, WCHAR *TipoRelacion, WCHAR *UUID ); void VXMLRET_SetRetencionesEmisorW ( void *hXml, WCHAR *RfcE, WCHAR *NomDenRazSocE, WCHAR *RegimenFiscalE ); void VXMLRET_SetRetencionesInfoW ( void *hXml, WCHAR *FolioInt, WCHAR *FechaExp, WCHAR *LugarExpReten, WCHAR *CveRetenc, WCHAR *DescRetenc ); void VXMLRET_SetRetencionesPeriodoW ( void *hXml, WCHAR *MesIni, WCHAR *MesFin, WCHAR *Ejercicio ); void VXMLRET_SetRetencionesReceptorW ( void *hXml, WCHAR *NacionalidadR, WCHAR *RfcR, WCHAR *NomDenRazSocRNacional, WCHAR *CurpR, WCHAR *CDomicilioFiscalR, WCHAR *NumRegIdTribR, WCHAR *NomDenRazSocRExtranjero ); void VXMLRET_SetRetencionesTotalesW ( void *hXml, WCHAR *MontoTotOperacion, WCHAR *MontoTotGrav, WCHAR *MontoTotExent, WCHAR *MontoTotRet, WCHAR *UtilidadBimestral, WCHAR *ISRCorrespondiente ); void VXMLRET_SetUserInfoW ( void *hXml, WCHAR *szUser, WCHAR *servidor );
 ", "VXML_x64.dll");
$api = new VxmlFfi($native);


/* clase VxmlFfi.php para compatiblidad, guardar este codigo en el archivo VxmlFfi.php e incluirlo en los programa PHP que hagan uso de VXML_x64. */

<?php final class VxmlFfi { private FFI $native; public function __construct(FFI $native) { $this->native = $native; } public function __call(string $name, array $arguments): mixed { $buffers = []; foreach ($arguments as $index => $argument) { if (is_string($argument)) { $utf16 = iconv("UTF-8", "UTF-16LE", $argument); if ($utf16 === false) { throw new RuntimeException("No se pudo convertir una cadena a UTF-16LE."); } $byteLength = strlen($utf16); $buffer = $this->native->new("WCHAR[" . (intdiv($byteLength, 2) + 1) . "]"); if ($byteLength > 0) { FFI::memcpy($buffer, $utf16, $byteLength); } $buffer[intdiv($byteLength, 2)] = 0; $buffers[] = $buffer; $arguments[$index] = FFI::addr($buffer[0]); } elseif ($name === "VXML_GetValue" && $index === 1 && is_int($argument)) { $arguments[$index] = $this->native->cast("void *", $argument); } } $result = $this->native->{$name . "W"}(...$arguments); if ($name !== "VXML_GetValue" || $result === null || FFI::isNull($result)) { return $result; } $wideValue = $this->native->cast("unsigned short *", $result); $length = 0; while ($wideValue[$length] !== 0) { $length++; } $bytes = $this->native->cast("char *", $result); $utf16 = FFI::string($bytes, $length * 2); $utf8 = iconv("UTF-16LE", "UTF-8", $utf16); if ($utf8 === false) { throw new RuntimeException("No se pudo convertir una cadena desde UTF-16LE."); } return $utf8; } public function isNull(mixed $pointer): bool { return $pointer === null || ($pointer instanceof FFI\CData && FFI::isNull($pointer)); } public function succeeded(mixed $result): bool { return $this->isNull($result) || $result === 0; } }