/// <summary>
        /// Create instance of Validator provider
        /// </summary>
        /// <param name="fiscalStampingVersion">Versión de Timbrado</param>
        /// <returns></returns>
        public static IFiscalValidator CreateInstance(FiscalStampingVersion fiscalStampingVersion)
        {
            if (fiscalStampingVersion == FiscalStampingVersion.CFDI33_Nom12)
            {
                return(new FiscalValidatorCFDIv33Nomv12());
            }

            throw new CotorraException(50002, "50002", "No es posible crear un proveedor de validación de xml para la versión especificada.", null);
        }
Exemple #2
0
        public static IFiscalPreview CreateInstance(FiscalStampingVersion fiscalStampingVersion)
        {
            if (fiscalStampingVersion == FiscalStampingVersion.CFDI33_Nom12)
            {
                return(new FiscalPreviewCFDIv33Nom12());
            }

            throw new CotorraException(60001, "60001", "No es posible crear un proveedor de previsualizador para la versión especificada.", null);
        }
Exemple #3
0
        public static ICancelStamping CreateInstance(FiscalStampingVersion fiscalStampingVersion)
        {
            if (fiscalStampingVersion == FiscalStampingVersion.CFDI33_Nom12)
            {
                return(new CancelStampingCFDIv33Nomv12());
            }

            throw new CotorraException(50001, "50001", "No es posible crear un proveedor de cancelación de timbrado para la versión especificada.", null);
        }
Exemple #4
0
        public async Task <SignDocumentResult <ICFDINomProvider> > StampDocumetAsync(
            SignDocumentResult <ICFDINomProvider> signDocumentResult, FiscalStampingVersion fiscalStampingVersion, string xml)
        {
            var stampingResult = String.Empty;

            var stampingRequest_CFDI33Nom12 = new StampingRequest_CFDI33Nom12();

            stampingRequest_CFDI33Nom12.Version         = VERSION;
            stampingRequest_CFDI33Nom12.PACDocumentType = PAC_DOCUMENT_TYPE;
            stampingRequest_CFDI33Nom12.Body            = new CFDIRequest_CFDI33Nom12()
            {
                XmlString = xml
            };
            stampingRequest_CFDI33Nom12.AdditionalInformation.Add(new AdditionalInformation_CFDI33Nom12(PAC_ATTRIBUTE_TITLE_RFC, signDocumentResult.EmployerRFC));
            stampingRequest_CFDI33Nom12.AdditionalInformation.Add(new AdditionalInformation_CFDI33Nom12(PAC_ATTRIBUTE_TITLE_PRODUCT, PAC_ATTRIBUTE_VALUE_PRODUCT));
            stampingRequest_CFDI33Nom12.AdditionalInformation.Add(new AdditionalInformation_CFDI33Nom12(PAC_ATTRIBUTE_TITLE_PRODUCT_VERSION, PAC_ATTRIBUTE_VALUE_PRODUCT_VERSION));
            stampingRequest_CFDI33Nom12.AdditionalInformation.Add(new AdditionalInformation_CFDI33Nom12(PAC_ATTRIBUTE_TITLE_PRODUCT_TYPE, PAC_ATTRIBUTE_VALUE_PRODUCT_TYPE));
            stampingRequest_CFDI33Nom12.Token = "";

            //call service async
            await ServiceHelperExtensions.CallRestServiceAsync(Format.JSON, RestMethod.POST, null,
                                                               new Uri($"{StampingUri}"), new object[] { stampingRequest_CFDI33Nom12 })
            .ContinueWith((i) =>
            {
                if (i.Result.Contains("FAIL") || i.Result.Contains("An error has occurred"))
                {
                    throw new CotorraException(90001, "90001", i.Result, null);
                }

                stampingResult = i.Result;
            });

            var stampingResult_CFDI33Nom12 = JsonSerializer.DeserializeObject <StampingResult_CFDI33Nom12>(stampingResult);

            //TFD
            var responseList = stampingResult_CFDI33Nom12.ResponseList_CFDI33Nom12.FirstOrDefault();
            var tfd          = SerializerXml.DeserializeObject <TimbreFiscalDigital>(responseList.ResponseValue);

            var complementos = (signDocumentResult.CFDI as Comprobante).Complemento.ToList();

            //complementos.Add(new ComprobanteComplemento() { Any = new XmlElement[1] { GetElement(CreateXmlNom(tfd)) } });
            (signDocumentResult.CFDI as Comprobante).Complemento = complementos.ToArray();

            signDocumentResult.UUID = Guid.Parse(tfd.UUID);

            return(signDocumentResult);
        }
        public async Task <SignDocumentResult <ICFDINomProvider> > StampDocumetAsync(
            SignDocumentResult <ICFDINomProvider> signDocumentResult, FiscalStampingVersion fiscalStampingVersion, string xml)
        {
            //call service async
            CFDIWrapperResult result = null;
            var xmlSerialized        = JsonConvert.SerializeObject(xml);

            await CallServiceAsync(Format.JSON, RestMethod.POST, _cotorraiWrapperCFDIToken,
                                   new Uri($"{_cotorraiWrapperPACUrl}/fiscal/stamping/stamp"), xmlSerialized)
            .ContinueWith((i) =>
            {
                if (i.Exception != null)
                {
                    throw i.Exception;
                }

                result = i.Result;
            });

            if (result.status == "400" && result.errors == null)
            {
                //TFD Fix string input :(
                var xmlTFD = result.detail.Remove(0, 1);
                xmlTFD = xmlTFD.Remove(xmlTFD.Length - 1, 1);
                xmlTFD = xmlTFD.Replace("\\\"", "\"");
                signDocumentResult.WithErrors = false;
                signDocumentResult.TFD        = xmlTFD;
            }
            else if (result.status == "400" && result.errors != null)
            {
                signDocumentResult.WithErrors = true;
                signDocumentResult.Details    = result.errors.FirstOrDefault();
            }
            else
            {
                signDocumentResult.WithErrors = true;
                signDocumentResult.Details    = $"Ocurrió un error no esperado en el timbrado: {result.detail}";
            }

            return(signDocumentResult);
        }
Exemple #6
0
        public async Task <SignDocumentResult <ICFDINomProvider> > StampDocumetAsync(
            SignDocumentResult <ICFDINomProvider> signDocumentResult, FiscalStampingVersion fiscalStampingVersion, string xml)
        {
            //TFD
            var tfd = new Cotorra.Schema.CFDI33Nom12.TimbreFiscalDigital();

            tfd.FechaTimbrado    = DateTime.Now;
            tfd.Leyenda          = "";
            tfd.NoCertificadoSAT = "00001000000404486074";
            tfd.SelloCFD         = "RIibW8tNhsl7aOeLKuyzi7dm5a2t+2FTsVjG4602lX2lcCQdMtosfwmJuBhUCYaYM9eNzcqtyXljEf0nsmsDI+ZL8LGMKmrMoiQDsgxaX0BZ77lU06d1SxweHYryR47qI+FwNogv1wqnWUiySlvs9H9LlAgJFZp2oAOaLLhaYwrSS62tjcULRUY8mev6ImXThLwzq6GESqzsHYL26bkzyRFtATXhhO8nQfYS8gB1o3JPkhdTvc7s7cdgjBIRreKc4cBxZZtkLnjx51NcVFvDqvfKdreKp45d+zlmpp/9lY65Irf/MY2/mlT4/aZyM/ZFC11HQ+KD/Pl3c4hfM1yGsQ==";
            tfd.SelloSAT         = "Im6lw1+tKaaUdBK457eijgixdRYm39ch2hV0CLZxf0td6fx64C0HtmNEwJ8xw/WtSCD/VQMgsF8s3InJBcGUIUgIf4LYdd+sKdR2qzpr9IXk/+xDYBrQNaos8COUhH/LecB0el9EUYWLcnv6ranMDZHUlXpCo+iG7zx1S9LDc4AC1jQVrNzBL60EelSznmLr8Gw33HRu4AWjnWua+BWwrIXqzKvdO/PnaLiH/PhQUcGzHYjm5MC6cimAToF+gnN1yyy9h1yETI8kQtaaWNoTqK6f8QyMqe/jR+CD7JAVNCsHbDKR10iNCdVJzDgvcdmDFdrZp6ZyXIBWWAAWyAOldw==";
            tfd.RfcProvCertif    = "MAS0810247C0";
            tfd.UUID             = Guid.NewGuid().ToString().ToUpper();
            tfd.Version          = "1.1";

            var complementos = (signDocumentResult.CFDI as Comprobante).Complemento.ToList();

            //complementos.Add(new ComprobanteComplemento() { Any = new XmlElement[1] { GetElement(CreateXmlNom(tfd)) } });
            (signDocumentResult.CFDI as Comprobante).Complemento = complementos.ToArray();

            signDocumentResult.UUID = Guid.Parse(tfd.UUID);

            return(signDocumentResult);
        }