This commit is contained in:
2025-02-07 08:08:08 +01:00
parent 8245ffedff
commit 390d5353f2
2 changed files with 191 additions and 7 deletions

View File

@@ -11,6 +11,7 @@ Imports Microsoft.Extensions.Hosting
Imports System.Collections.Specialized
Imports System.Text
Imports System.IO
Imports VERAG_PROG_ALLGEMEIN
Public Class cHMRC
@@ -436,6 +437,77 @@ Public Class cHMRC
End Sub
Shared Sub HMRC_RefreshToken(ByVal TOKEN As cHMRCToken)
If DateDiff(DateInterval.Minute, TOKEN.token_refresh_datetime, Now) < 230 Then 'bis 240 MIN / 4hr
'Token ist noch frisch
Exit Sub
End If
' Chilkat Lizenz aktivieren (falls benötigt)
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
' HTTP-Objekt für API-Request erstellen
Dim http As New Chilkat.Http()
' URL für HMRC Token Refresh
Dim url As String = "https://api.service.hmrc.gov.uk/oauth/token"
' HTTP-Request-Objekt für POST-Anfrage
Dim req As New Chilkat.HttpRequest()
req.HttpVerb = "POST"
req.Path = "/oauth/token"
req.ContentType = "application/x-www-form-urlencoded"
' OAuth2 Credentials einfügen
Dim TOKEN_NEW = ""
req.AddParam("client_secret", CLIENT_SECRET)
req.AddParam("client_id", CLIENT_ID)
req.AddParam("grant_type", "client_credentials")
req.AddParam("refresh_token", TOKEN_NEW)
' rest.AddQueryParam("scope", scope)
' Anfrage senden
Dim resp As Chilkat.HttpResponse = http.PostUrlEncoded(url, req)
' Fehlerprüfung
If resp Is Nothing Then
Console.WriteLine("Fehler: " & http.LastErrorText)
Exit Sub
End If
' API-Antwort ausgeben
Dim json As New Chilkat.JsonObject()
json.Load(resp.BodyStr)
' Neuer Access Token
Dim accessToken As String = json.StringOf("access_token")
Dim newRefreshToken As String = json.StringOf("refresh_token")
Dim expiresIn As String = json.StringOf("expires_in")
Console.WriteLine("Neuer Access Token: " & accessToken)
Console.WriteLine("Neuer Refresh Token: " & newRefreshToken)
Console.WriteLine("Gültigkeit (Sekunden): " & expiresIn)
' Optional: Tokens in einer Datei speichern
'Dim tokenFile As String = "token.json"
'json.EmitCompact = False
'json.WriteFile(tokenFile)
TOKEN.token_BEARER_TOKEN = newRefreshToken
TOKEN.token_refresh_datetime = Now
TOKEN.SAVE()
Console.WriteLine("Tokens wurden in '" & tokenFile & "' gespeichert.")
End Sub
Shared Function grantAccessApplication(ByRef AccessToken, scope) As String
Try
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
@@ -1273,7 +1345,7 @@ Public Class cHMRC
outgoingQueryString.Add("grant_type", "client_credentials")
' outgoingQueryString.Add("refresh_token", refreshToken)
outgoingQueryString.Add("client_id", CLIENT_ID)
outgoingQueryString.Add("client_secret", CLIENT_Secret)
outgoingQueryString.Add("client_secret", CLIENT_SECRET)
outgoingQueryString.Add("scope", scope) '"write:goods-movement-system")
Dim postBytes As Byte() = New ASCIIEncoding().GetBytes(outgoingQueryString.ToString())
@@ -1361,8 +1433,100 @@ Public Class cHMRC
' ' For more information, refer to the documentation
' End Using
'End Using
End Sub
Shared Function getTOKEN(APPLICATION) As cHMRCToken
Dim TOKEN = New cHMRCToken(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, APPLICATION)
If TOKEN.hasEntry = False OrElse TOKEN.token_BEARER_TOKEN = "" Then
Dim AccessToken = ""
Dim appl = ""
Select Case APPLICATION
Case "GVMS"
appl = "write:goods-movement-system+read:pull-notifications"
Case "VAT_CHECK" '"EORI_CHECK"
appl = "read:vat write:vat"
End Select
grantAccess(AccessToken, appl)
TOKEN.token_BEARER_TOKEN = AccessToken
TOKEN.token_refresh_datetime = Now
TOKEN.SAVE()
Else
HMRC_RefreshToken(TOKEN)
End If
Return TOKEN
End Function
Shared Function checkEORI_UK(eoriNumber As String, ByVal response As String) As Boolean
' Chilkat-Objekt initialisieren
Dim http As New Chilkat.Http
http.SetRequestHeader("Accept", "application/x-www-form-urlencoded")
' EORI-Nummer für die Überprüfung
'Dim eoriNumber As String = "GB123456789000"
Dim url As String = "https://api.service.hmrc.gov.uk/customs/eori/lookup/check-multiple-eori"
Dim requestBody As New Chilkat.JsonObject
requestBody.AppendArray("eoris").AddStringAt(-1, eoriNumber)
requestBody.AppendArray("eoris").AddStringAt(-1, "GB8392848394939")
' HTTP GET-Anfrage senden
Dim responseHttp = http.PostJson2(url, "application/json", requestBody.Emit())
' Fehlerprüfung
If http.LastMethodSuccess <> True Then
Console.WriteLine("Fehler: " & http.LastErrorText)
Return False
End If
response = responseHttp.BodyStr
' Antwort ausgeben
Console.WriteLine("API Antwort: " & responseHttp.BodyStr)
Return True
End Function
Shared Function checkVAT_UK(VATNumber As String, ByVal response As String) As Boolean
' Chilkat-Objekt initialisieren
Dim http As New Chilkat.Http
' Falls API-Schlüssel oder Authentifizierung erforderlich ist, hinzufügen
' Beispiel: http.SetRequestHeader("Authorization", "Bearer YOUR_ACCESS_TOKEN")
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
Dim TOKEN = getTOKEN("VAT_CHECK")
If TOKEN.hasEntry Then
http.SetRequestHeader("Authorization", "Bearer " & accessToken)
http.SetRequestHeader("Accept", "application/x-www-form-urlencoded")
' EORI-Nummer für die Überprüfung
Dim url As String = "https://api.service.hmrc.gov.uk/organisations/vat/check-vat-number/lookup/" & VATNumber
response = http.QuickGetStr(url)
If http.LastMethodSuccess <> True Then
Console.WriteLine("Fehler: " & http.LastErrorText)
Return False
End If
' Antwort ausgeben
Console.WriteLine("API Antwort: " & response)
Return True
End If
Return False
End Function
Public Class RefreshTokenResultJSON
Public Property access_token As String
End Class

View File

@@ -5065,7 +5065,27 @@ ELSE_ATILLA:
End Sub
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
VERAG_PROG_ALLGEMEIN.cOpenAI.doFirstAI()
MsgBox(VERAG_PROG_ALLGEMEIN.cOpenAI.askAI_TruckPlate("AW: Kennzeichen: CB4178EB | Grenze SUB DE007701 Suben | Absender CEMOBSAN;TEKIRDAG | Gewicht: 7.200,0"))
MsgBox(VERAG_PROG_ALLGEMEIN.cOpenAI.askAI_TruckPlate("*00*Fwd: Abgabenbescheid 5003/25001269 T31M492"))
MsgBox(VERAG_PROG_ALLGEMEIN.cOpenAI.askAI_TruckPlate("AW: Warenbeschreibung in T1-Dokumenten - 5003/25000389"))
MsgBox(VERAG_PROG_ALLGEMEIN.cOpenAI.askAI_TruckPlate("Kennzeichen: 06CLS811 | Grenze WAI DE008904 Waidhaus | Absender VAMET | Gewicht: 1.689,0"))
MsgBox(VERAG_PROG_ALLGEMEIN.cOpenAI.askAI_TruckPlate("*00*RE: 16 ALF 807 AVIS/ GERMANY"))
Exit Sub
Dim resp = ""
cHMRC.checkEORI_UK("GB078068385000", resp)
MsgBox(resp)
'resp = ""
'cHMRC.checkVAT_UK("389356931", resp)
'MsgBox(resp)
'VERAG_PROG_ALLGEMEIN.cOpenAI.doFirstAI()
'saveLukowaPDFsFromTherefore()
' MsgBox(VERAG_PROG_ALLGEMEIN.cATEZ_Tariff.GetTariffInfo_SingleOrEmpty("6207220000"))