En PHP el generar un JSON es fácil, ya que existen funciones que nos permiten transformar un arreglo asociativo a una estructura JSON y viceversa.
Teniendo en mente está idea, a continuación un ejemplo de como generar el JSON de un CFDI y enviado a ser timbrado utilizando nuestro SDK.
Pasos a seguir
- Paso 1: Crear un proyecto en PHP o preparar aquel donde se estará utilizando.
- Paso 2: Instalar la librería (SDK) de PHP, la cual puede ser instalada a través de composer o de manera manual.
- Paso 3: Generar un arreglo asociativo donde se almacenen los datos de la factura. Por ejemplo:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859$emisor["Rfc"]="LAN8507268IA";$emisor["Rfc"]="XIA190128J61";$emisor["Nombre"]="NombreRazonSocial";$emisor["RegimenFiscal"]="601";$receptor["Rfc"] = "AAA010101AAA";$receptor["Nombre"] = "NombreRazonSocial";$receptor["ResidenciaFiscalSpecified"] = false;$receptor["NumRegIdTrib"] = null;$receptor["UsoCFDI"] = "P01";$conceptos = null;$ImpuestosTotales = null;$totalImpuestosTrasladados = 0;$Subtotal = 0;$comprobante["Version"] = "3.3";$comprobante["Serie"] = "A";$comprobante["Folio"] = "123456";$comprobante["Fecha"] = "2021-04-15T15:53:49";$comprobante["Moneda"] = "XXX";$comprobante["TipoDeComprobante"] = "P";$comprobante["LugarExpedicion"] = "45400";$comprobante["Emisor"] = $emisor;$comprobante["Receptor"] = $receptor;$concepto["ClaveProdServ"] = "84111506";$concepto["Cantidad"] = 1;$concepto["ClaveUnidad"] = "ACT";$concepto["Descripcion"] = "Pago";$concepto["ValorUnitario"] = "0";$concepto["Importe"] = "0";$conceptos[0]=$concepto;$comprobante["Conceptos"] = $conceptos;$pago["FechaPago"] = "2020-11-26T12:00:00";$pago["FormaDePagoP"] = "03";$pago["MonedaP"] = "MXN";$pago["Monto"] = "441.24";$doctoRelacionado["IdDocumento"] = "f612b35e-a2a9-418f-98b5-dd471fedc07f";$doctoRelacionado["Serie"] = "fc";$doctoRelacionado["Folio"] = "2390";$doctoRelacionado["MonedaDR"] = "MXN";$doctoRelacionado["MetodoDePagoDR"] = "PUE";$doctoRelacionado["NumParcialidad"] = "1";$doctoRelacionado["ImpoSaldoAnt"] = "441.24";$doctoRelacionado["ImpPagado"] = "441.24";$doctoRelacionado["ImpSaldoInsoluto"] = "0";$pago["DoctoRelacionado"][0] = $doctoRelacionado;$pagos["Pago"][0]=$pago;$complemento[0]["Pago10:Pagos"]=$pagos;$any[0]["Any"] = $complemento;$comprobante["Complemento"] = $any;$comprobante["SubTotal"] = "0";$comprobante["Total"] = "0";
- Paso 4: Hacer uso de la función “json_encode($comprobante)” donde se le estará enviando como parámetro el array asociativo, lo que nos dejará con un objeto de tipo JSON.
- Paso 5: Enviar a través del SDK el objeto de JSON a timbrar. El ejemplo en código de lo descrito sería de la siguiente manera:
12345678910111213141516171819202122232425try{$basePath = "c:\\";$jsonIssuerStamp = jsonEmisionTimbrado::Set($params);$resultadoJson = $jsonIssuerStamp::jsonEmisionTimbradoV4($json);if($resultadoJson->status=="success"){//save CFDI$ruta=$basePath.$resultadoJson->data->uuid.".xml";file_put_contents($ruta, $resultadoJson->data->cfdi);echo $resultadoJson->data->cfdi;//save QRCode$nombreyRuta = $resultadoJson->data->uuid.".png";imagepng(imagecreatefromstring(base64_decode($resultadoJson->data->qrCode)), $basePath.$nombreyRuta);}else{//save data error$ruta = $basePath."Error-".$comprobante["Serie"]."-".$comprobante["Folio"].".txt";$mensaje= $resultadoJson->message."\n".$resultadoJson->messageDetail;file_put_contents($ruta, $message);}//var_dump($resultadoJson);}catch(Exception $e){echo $e->getMessage();} - Paso 6: Realizar la validación del estatus del timbrado, en caso de éxito guardar el QR y demás datos que nos pudieran interesar, y para el caso de error mostrar error de acuerdo a la información del servicio web.
Descargar ejemplo
Archivo PHP utilizado a través del siguiente enlace.