Yo lo resolví así. está en visual basic, pero ya tu lo migras a c#.
Espero te sirva, yo ya llevo tusandolo desde hace un año sin problema.
Saludos.
'***Codigo ATEB***********************************************************************************************************************************
Dim Auth As New WSAteb_GeneraCFDI.AuthenticationHeader
Dim ws As New WSAteb_GeneraCFDI.Service1SoapClient
Dim cfdi As String = ""
Auth.UserName = UsuarioPAC ' usuario asignado 'UsuarioPAC
Auth.Password = PasswordPAC ' contraseña asignada para el cliente. 'PasswordPAC
Dim xml As String = stringXML 'String que contiene el XML
Dim xmlBytes() As Byte = Encoding.UTF8.GetBytes(xml)
Dim xml_result As String
Try
ws.GeneraTimbre(Auth, xmlBytes, cfdi)
'*****Temp***************************
'Dim tb_tfd As DataTable
'tb_tfd = HisConectores.tb_Recordset_MySQL("Select timbrefiscaldigital from cat_cfd_configuracion")
'cfdi = tb_tfd.Rows(0).Item(0).ToString
'************************************
xml_result = cfdi
Dim CodigoError As String
Dim DescripcionError As String
'**Error***
Dim doc_err As New XmlDocument
Dim nodeList As XmlNodeList
Dim element As XmlElement
Dim TestPos As Integer
TestPos = InStr(1, xml_result, "TimbreFiscalDigital")
If TestPos = 0 Then
doc_err.LoadXml(xml_result)
CodigoError = doc_err.DocumentElement.Attributes("Codigo").Value
nodeList = doc_err.SelectNodes("Error")
Dim unError As XmlNode
For i As Integer = 0 To nodeList.Count - 1
unError = nodeList.Item(i)
DescripcionError = unError.SelectSingleNode("DescripcionError").InnerText()
Next
If CodigoError <> "" Then
Funciones.Msj_Err(DescripcionError, "Codigo Error: " & CodigoError)
Return False
End If
Else
'***Codigo para insertar el nodo en el XML ya existente*****
Try
Dim doc_original As New XmlDocument
doc_original.Load(XMLFile)
Dim cadena_tfd As String = xml_result
Dim cadena_xmloriginal As String
cadena_xmloriginal = doc_original.OuterXml
cadena_xmloriginal = cadena_xmloriginal.Replace("</cfdi:Comprobante>", "<cfdi:Complemento>" & cadena_tfd & "</cfdi:Complemento></cfdi:Comprobante>").Replace("<cfdi:Comprobante", "<cfdi:Comprobante xmlns:tfd=" & Chr(34).ToString & "
http://www.sat.gob.mx/TimbreFiscalDigital" & Chr(34).ToString & "")
Dim doc_tfd As New XmlDocument
doc_tfd.LoadXml(cadena_xmloriginal)
doc_tfd.Save(XMLFile)
doc_tfd.Load(XMLFile)
stringXML = doc_tfd.OuterXml
Catch ex As Exception
Funciones.Msj_Err(Err.Description, "Factura Timbrada Correctamente, sin embargo hubo un error al cargar los datos del Timbrado recibidos por el PAC")
Return False
End Try
'***********************************************************
End If
Catch ex As Exception
Funciones.Msj_Err(Err.Description, "Error al Timbrar al ejecutar el proceso del PAC")
Return False
End Try
'**************************************************************************************************************************************************