Trimitere factura cu OAuth

::e-Factura, conectare SPV
Forum rules
:: limbajul folosit in acest forum va fi unul civilizat, in limita subiectelor din topicurile deschise.
:: orice manifestare necivilizata (agresiune verbala, comportament neadecvat, reclama abuziva fara legatura cu forumul) va duce la stergerea contului de user.
:: pt. inscriere USER NOU la acest FORUM, folositi linkul https://profox.ro/forum-register/
mrapi
Posts: 426
Joined: 20 May 2022, 16:53

Re: Trimitere factura cu OAuth

Post by mrapi »

posteaza codul complet,din poza nu se vede

la mine merge asa:

Code: Select all

 ' curl.exe --request POST --ssl-no-revoke "https://logincert.anaf.ro/anaf-oauth2/v1/token"'+;
          ' -o '+rsp+;
          ' -d "grant_type=authorization_code&code=' + rs+;
          '&client_id=' + wEfClId+;
          '&client_secret=' + wEfClSecret+;
          '&redirect_uri=' + cbkUrl +;
          '&token_content_type=jwt" '
sasory wrote: 15 Mar 2024, 23:24 am incercat in cmd .. am aceeasi eroare fara alte explicatii
User avatar
admin
Posts: 215
Joined: 16 Jun 2022, 17:03

Re: Trimitere factura cu OAuth

Post by admin »

mrapi wrote: 16 Mar 2024, 09:43 posteaza codul complet,din poza nu se vede
Salut... am incercat codul tau.. de data asta am fisier raspuns.txt dar imi reclama ca lipseste un parametru client_id care exista de fapt in request :(
codul complet este:
xurl=' curl.exe --request POST --ssl-no-revoke "https://logincert.anaf.ro/anaf-oauth2/v1/token"'+;
' -o '+"raspuns.txt"+;
' -d "grant_type=authorization_code&code=' + xcod+;
'&client_id=ecbee...'+;
'&client_secret=3d9...'+;
'&redirect_uri=https://www....'+;
'&token_content_type=jwt" '
RUN &xurl

Eroarea din raspuns.txt este:
{
"error":"invalid_client",
"error_description":"Required parameter (client_id) is missing"
}
User avatar
admin
Posts: 215
Joined: 16 Jun 2022, 17:03

Re: Trimitere factura cu OAuth

Post by admin »

va multumesc pt ajutor... am reusit sa obtin tokenul si prin serverul nostru...
in deruta generala am omis limitarea la 256 de caractere in string.. am pus totul intr-un bat si a mers perfect..
multumesc !!! :)
viorel1955
Posts: 350
Joined: 01 Jun 2022, 11:46

Re: Trimitere factura cu OAuth

Post by viorel1955 »

Va salut colegi ! Am si eu o problema : pe ultimile versiuni de WS 10-PRO, auentificarea cu token fizic pentru O'Auth nu functioneaza. Adica nu pot trimite factura utilizand tokenul fizic. Acest lucru il faceam acum ceva timp foarte bine. Utilizez CURL ca interfata cu serverul ANAF:

1 Initializarea token-ului o faceam cu sintaxa :
"curl.exe POST https://webserviceapl.anaf.ro/test/FCTEL/rest/upload", cand comunicam parola
2 Transmitere document cu sintaxa "
curl.exe --request POST "https://webserviceapl.anaf.ro/test/FCTE ... if=1234567" ^
-H "content-type: text/plain" ^
--data-binary @c:\test\temp\e_factura.xml ^
-o c:\test\temp\raspuns.txt
Ei bine, niciuna nu mai functioneaza.

Am testat in CMD (cu drepturi Admin) sintaxa 1
"curl.exe POST https://webserviceapl.anaf.ro/test/FCTEL/rest/upload"

Eroare este :
curl: (35) schannel: next InitializeSecurityContext failed: SEC_E_ILLEGAL_MESSAGE (0x80090326) - This error usually occurs when a fatal SSL/TLS alert is received (e.g. handshake failed). More detail may be available in the Windows System event log.


Am testat si asa :
"curl.exe --tlsv1.2 POST https://webserviceapl.anaf.ro/test/FCTEL/rest/upload" -fortand protocol tlsv1.2 (sugestia mi-a dat-o Blumache)
Aceiasi eroare

Cum se rezolva aceasta problema, ca ma dispera ?
Nota
Ceva imi opreste jucaria dar nu pot sa-mi dau seama. Nu am antivirus, decat daca Defender-ul isi baga coada.
georgianbz
Posts: 8
Joined: 21 Oct 2022, 19:55

Re: Trimitere factura cu OAuth

Post by georgianbz »

Dragi colegi, exista vreo posibilitate sa incarc automat facturile in e-factura cu ajutorul Visual FoxPro ?
Momentan generez xml-urile si le incarc manual apoi in SPV.
Cosstel
Posts: 38
Joined: 23 May 2022, 09:26

Re: Trimitere factura cu OAuth

Post by Cosstel »

pai cu asta ne framintam de atita timp, sa trimitem si sa primim facturile la ANAF
recunosc ca si eu m-am dezmeticit mai greu dar cu ajutorul lui Eugen si a materialelor postate aici am ajuns la un final
iti pun aici procedura ce o folosesc in conversatiile cu ANAF-ul
ar trebui sa te prinizi usor cum se face
spor!

Code: Select all

FUNCTION Anaf_eFact
	LPARAMETERS cOpr,sSend
	LOCAL loHTTP, lcServer, cRaspuns

	lcTipHTTP='MsXml2.serverXMLHTTP.6.0' 
	Try
		loHTTP = CreateObject(lcTipHTTP)
	Catch
		?? CHR(7)
		cRaspuns='.F. Probleme cu '+lcTipHTTP
		RETURN cRaspuns
	Endtry

	cSPV=UPPER(oEfact.SPV)		&&	test/prod
	cRaspuns='.F. lipsa cOpr'
	DO CASE
	CASE cOpr='FactIncarc'
		cCui=oEfact.CodFiscal
		cBear=oEfact.CodBear

		IF cSPV='TEST'
			cUrl="https://api.anaf.ro/test/FCTEL/rest/upload?standard=UBL&cif="+cCui
		ELSE
			cUrl="https://api.anaf.ro/prod/FCTEL/rest/upload?standard=UBL&cif="+cCui
		ENDIF
		=loHTTP.Open("POST",cUrl,.F.)
		=loHTTP.SetRequestHeader("Authorization","Bearer " + cBear)
		=loHTTP.SetRequestHeader("content-type", "application/xml")
		=loHTTP.Send(sSend)

		iDoW=0
		DO WHILE loHTTP.ReadyState!=4
			WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
			iDoW=iDoW+1
			IF iDoW>15
				EXIT
			ENDIF
		ENDDO
		IF iDoW<=15
			cRaspuns=loHTTP.ResponseText+CHR(13)+CHR(10)+ ;
				'Body'+CHR(13)+CHR(10)+TRANSFORM(loHTTP.ResponseBody)
			=STRTOFILE(loHTTP.ResponseBody,'zz_FactIncarcBody.txt')
		ELSE
			cRaspuns='.F. Probleme raspuns ANAF [FactIncarc]'
		ENDIF
	CASE cOpr='FactDescarc'
		iDsc=sSend		&&	id descarcare
		cBear=oEfact.CodBear

		IF cSPV='TEST'
			cUrl="https://api.anaf.ro/test/FCTEL/rest/descarcare?id="+iDsc
		ELSE
			cUrl="https://api.anaf.ro/prod/FCTEL/rest/descarcare?id="+iDsc
		ENDIF
		=loHTTP.Open("GET",cUrl,.F.)
		=loHTTP.SetRequestHeader("Authorization","Bearer " + cBear)
		=loHTTP.Send()

		iDoW=0
		DO WHILE loHTTP.ReadyState!=4
			WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
			iDoW=iDoW+1
			IF iDoW>15
				EXIT
			ENDIF
		ENDDO
		IF iDoW<=15
			=loHTTP.GetAllResponseHeaders()
			cRaspuns=loHTTP.ResponseBody
		ELSE
			cRaspuns='.F. Probleme raspuns ANAF [FactDescarc]'
		ENDIF
	CASE cOpr='FactStare'
		iInc=sSend		&&	id incarcare
		cBear=oEfact.CodBear

		IF cSPV='TEST'
			cUrl="https://api.anaf.ro/test/FCTEL/rest/stareMesaj?id_incarcare="+iInc
		ELSE
			cUrl="https://api.anaf.ro/prod/FCTEL/rest/stareMesaj?id_incarcare="+iInc
		ENDIF
		=loHTTP.Open("GET",cUrl,.F.)
		=loHTTP.SetRequestHeader("Authorization","Bearer " + cBear)
		=loHTTP.Send()

		iDoW=0
		DO WHILE loHTTP.ReadyState!=4
			WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
			iDoW=iDoW+1
			IF iDoW>15
				EXIT
			ENDIF
		ENDDO
		IF iDoW<=15
			=loHTTP.GetAllResponseHeaders()
			cRaspuns=loHTTP.ResponseBody
		ELSE
			cRaspuns='.F. Probleme raspuns ANAF [FactStare]'
		ENDIF
	CASE cOpr='ListaMesaje'
		cCui=oEfact.CodFiscal
		cBear=oEfact.CodBear
		cZile=ALLTRIM(sSend)

		IF cSPV='TEST'
			cUrl="https://api.anaf.ro/test/FCTEL/rest/listaMesajeFactura?zile="+cZile+"&cif="+cCui
		ELSE
			cUrl="https://api.anaf.ro/prod/FCTEL/rest/listaMesajeFactura?zile="+cZile+"&cif="+cCui
		ENDIF
		=loHTTP.Open("GET",cUrl,.F.)
		=loHTTP.SetRequestHeader("Authorization","Bearer " + cBear)
		=loHTTP.SetRequestHeader("Cache-Control", "no-cache")
		=loHTTP.SetRequestHeader("Cache-Control", "max-age=0")
		=loHTTP.Send()
		
		iDoW=0
		DO WHILE loHTTP.ReadyState!=4
			WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
			iDoW=iDoW+1
			IF iDoW>15
				EXIT
			ENDIF
		ENDDO
		cRaspuns=IIF(iDoW<=15,loHTTP.ResponseText,'.F. Probleme raspuns ANAF [ListaMesaje]')
	CASE cOpr='Validare'
		cUrl='https://webservicesp.anaf.ro/prod/FCTEL/rest/validare/FACT1'
		oTipAct=loHTTP.Open("POST", cUrl, .F.)
		oTipCon=loHTTP.SetRequestHeader("content-type", "text/plain")
		cTipRsp=loHTTP.Send(sSend)

		iDoW=0
		DO WHILE loHTTP.ReadyState!=4
			WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
			iDoW=iDoW+1
			IF iDoW>15
				EXIT
			ENDIF
		ENDDO
		cRaspuns=IIF(iDoW<=15,loHTTP.ResponseText,'.F. Probleme raspuns ANAF [Validare]')
	CASE cOpr='XmlToPdf'
		cUrl='https://webservicesp.anaf.ro/prod/FCTEL/rest/transformare/FACT1/DA'
		oTipAct=loHTTP.Open("POST", cUrl, .F.)
		oTipCon=loHTTP.SetRequestHeader("content-type", "text/plain")
		cTipRsp=loHTTP.Send(sSend)

		iDoW=0
		DO WHILE loHTTP.ReadyState!=4
			WAIT ' Se asteapta raspunsul ANAF ...' WINDOW TIMEOUT 2
			iDoW=iDoW+1
			IF iDoW>15
				EXIT
			ENDIF
		ENDDO
		IF iDoW<=15
			=loHTTP.GetAllResponseHeaders()
			cRaspuns=loHTTP.ResponseBody
		ELSE
			cRaspuns='.F. Probleme raspuns ANAF [XmlToPdf]'
		ENDIF
	OTHERWISE
		*	nimic
	ENDCASE

	RETURN cRaspuns
ENDFUNC
mgabi
Posts: 497
Joined: 23 May 2022, 21:15

Re: Trimitere factura cu OAuth

Post by mgabi »

Multumim de sintetizare, frumos organizat.

Vezi ca au si varianta api la xmltopdf si acolo incarci xml-ul intreg, fara sa mai scoti liniile acelea pe care nu le "inghite".
Asa descarci toate "ciudateniile" , nu am mai avut cazuri in care sa nu-mi aduca pdf-ul.

Ceva de genul:
....
CASE cOpr='API_XmlToPdf'
cUrl='https://api.anaf.ro/prod/FCTEL/rest/transformare/FACT1'
oTipAct=loHTTP.Open("POST", cUrl, .F.)
=loHTTP.SetRequestHeader("Authorization","Bearer " + cBear)
oTipCon=loHTTP.SetRequestHeader("content-type", "text/plain")
cTipRsp=loHTTP.Send(sSend)
.....


Sau https://api.anaf.ro/prod/FCTEL/rest/transformare/CN ... pentru CreditNote
Cosstel
Posts: 38
Joined: 23 May 2022, 09:26

Re: Trimitere factura cu OAuth

Post by Cosstel »

mgabi wrote: 25 Apr 2024, 16:12 Vezi ca au si varianta api la xmltopdf si acolo incarci xml-ul intreg, fara sa mai scoti liniile acelea pe care nu le "inghite".
multumesc pentru sugestie
sa vad cind imi fac timp sa si implementez api-ul
momentan ma descurc asa si n-am timp/chef de experimente :)
si oricum mi-am facut si o varianta proprie de xml to pdf cu ajutorul unui utilitar wkHtmlToPdf.exe
georgianbz
Posts: 8
Joined: 21 Oct 2022, 19:55

Re: Trimitere factura cu OAuth

Post by georgianbz »

Salutare!
Ma poate ajuta si pe mine cineva sa-i dau de cap modulului Xml to Pdf?
Daca celelalte au mers perfect, asta imi pune ceva probleme.
Pur si simplu nu-mi intoarce nimic
mgabi wrote: 25 Apr 2024, 16:12 Vezi ca au si varianta api la xmltopdf si acolo incarci xml-ul intreg, fara sa mai scoti liniile acelea pe care nu le "inghite".
Asa descarci toate "ciudateniile" , nu am mai avut cazuri in care sa nu-mi aduca pdf-ul.

Ceva de genul:
....
CASE cOpr='API_XmlToPdf'
cUrl='https://api.anaf.ro/prod/FCTEL/rest/transformare/FACT1'
oTipAct=loHTTP.Open("POST", cUrl, .F.)
=loHTTP.SetRequestHeader("Authorization","Bearer " + cBear)
oTipCon=loHTTP.SetRequestHeader("content-type", "text/plain")
cTipRsp=loHTTP.Send(sSend)
.....
Sau https://api.anaf.ro/prod/FCTEL/rest/transformare/CN ... pentru CreditNote
mrapi
Posts: 426
Joined: 20 May 2022, 16:53

Re: Trimitere factura cu OAuth

Post by mrapi »

eu folosesc doar varianta cu apel curl.exe,din fox faci un cmd

Code: Select all

curl.exe --request POST  --ssl-no-revoke  "https://api.anaf.ro/prod/FCTEL/rest/transformare/FACT1/DA"  ^
  -H "Authorization: Bearer ewogICJhbGciOiJSUzUxMiIsCiAgImtpZCI6ImFuYWZfMj....." ^
  -H "content-type: text/plain" ^
  --data-binary @d:\factura.xml ^
  -o "d:\factura.pdf"
apoi il executi

Code: Select all

local WshShell
WshShell = CreateObject("WScript.Shell")
WshShell.Run(m.cmdLine, 0, .t.)
https://www.foxite.com/archives/running ... 370337.htm

dc nu folosesti autentificare scoti linia cu jwt-ul si in loc de api.anaf.ro pui webservicesp.anaf.ro

georgianbz wrote: 04 May 2024, 16:25 Salutare!
Ma poate ajuta si pe mine cineva sa-i dau de cap modulului Xml to Pdf?
Last edited by mrapi on 04 May 2024, 17:41, edited 1 time in total.
Post Reply