Files
SDL/VERAG_PROG_ALLGEMEIN/Schnittstellen/cHMRC.vb
2025-04-17 14:26:29 +02:00

1736 lines
72 KiB
VB.net
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Imports System.Net.Http
Imports System.Web
Imports System
Imports Microsoft.AspNetCore.Authentication.Cookies
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Hosting
Imports Microsoft.AspNetCore.Http
Imports Microsoft.Extensions.Configuration
Imports Microsoft.Extensions.DependencyInjection
Imports Microsoft.Extensions.Hosting
Imports System.Collections.Specialized
Imports System.Text
Imports System.IO
Imports VERAG_PROG_ALLGEMEIN
Imports System.Windows.Forms
Imports System.Drawing
Public Class cHMRC
'TEST
'Shared API_STRING As String = "https://test-api.service.hmrc.gov.uk"
'Shared CLIENT_ID As String = "xybTOMaQWcuifeW5xnGggojlACWC"
'Shared CLIENT_SECRET As String = "bf1cfb6e-1bcb-4282-b7a0-3d3ccb2b1dc1"
'PROD
Shared API_STRING As String = "https://api.service.hmrc.gov.uk"
Shared CLIENT_ID As String = "qO1kqyMtFnvHi9XpRVJBGTCrNpno"
Shared CLIENT_SECRET As String = "3169852a-afa5-4adb-837c-fbd4d0cd4c7e"
Public Class cHMRCCredentials
Public CLIENT_ID As String = ""
Public CLIENT_SECRET As String = ""
Public API_STRING As String = ""
End Class
Shared Function getCredentials(HMRC_APPLICATION) As cHMRCCredentials
Dim cHMRCCredentials = New cHMRCCredentials
Select Case HMRC_APPLICATION
Case "AVISO"
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
cHMRCCredentials.API_STRING = "https://test-api.service.hmrc.gov.uk"
cHMRCCredentials.CLIENT_ID = "xybTOMaQWcuifeW5xnGggojlACWC"
cHMRCCredentials.CLIENT_SECRET = "bf1cfb6e-1bcb-4282-b7a0-3d3ccb2b1dc1"
Else
cHMRCCredentials.API_STRING = "https://api.service.hmrc.gov.uk"
cHMRCCredentials.CLIENT_ID = "qO1kqyMtFnvHi9XpRVJBGTCrNpno"
cHMRCCredentials.CLIENT_SECRET = "3169852a-afa5-4adb-837c-fbd4d0cd4c7e"
End If
Case "AVISO_ENS"
If cHMRC_ENS.TEST Or VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
cHMRCCredentials.API_STRING = "https://test-api.service.hmrc.gov.uk"
cHMRCCredentials.CLIENT_ID = cHMRC_ENS.Client_ID
cHMRCCredentials.CLIENT_SECRET = cHMRC_ENS.Client_Secret
Else
cHMRCCredentials.API_STRING = "https://api.service.hmrc.gov.uk"
cHMRCCredentials.CLIENT_ID = cHMRC_ENS.Client_ID
cHMRCCredentials.CLIENT_SECRET = cHMRC_ENS.Client_Secret
End If
Case "ATEZ_ENS"
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
Else
cHMRCCredentials.API_STRING = "https://api.service.hmrc.gov.uk"
cHMRCCredentials.CLIENT_ID = "b28AgFVSAXkLPtnnlU1xTRXbMXoD"
cHMRCCredentials.CLIENT_SECRET = "17dfde2d-2aa9-47a0-9a3a-160363b909c5"
End If
End Select
Return cHMRCCredentials
End Function
Shared Function SEND_GVMS(GVMS As VERAG_PROG_ALLGEMEIN.cGVMS, Optional updateGMR As String = "")
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
Dim TOKEN = cHMRC.getTOKEN("GVMS")
If TOKEN.hasEntry Then
' Dim AccessToken = ""
'grantAccess(AccessToken, "write:goods-movement-system+read:pull-notifications", "AVISO")
If TOKEN.token_BEARER_TOKEN <> "" Then
Dim Notification_Box_Id = ""
Dim Notification_Message_Id = ""
If genGVMS_GMR(GVMS, TOKEN.token_BEARER_TOKEN, Notification_Box_Id, Notification_Message_Id, updateGMR) Then
GVMS.SAVE()
End If
End If
End If
End Function
Shared Function GET_GVMS_LIST()
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
Dim TOKEN = cHMRC.getTOKEN("GVMS")
If TOKEN.hasEntry Then
'Dim AccessToken = ""
'grantAccess(AccessToken, "write:goods-movement-system", "AVISO")
If TOKEN.token_BEARER_TOKEN <> "" Then
If getGVMS_LIST(TOKEN.token_BEARER_TOKEN) Then
MsgBox("LISTE: " & Now.ToShortDateString & " " & Now.ToShortTimeString)
End If
End If
End If
End Function
Shared Function GET_GVMS_GMR(GMR As String)
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
Dim TOKEN = cHMRC.getTOKEN("GVMS")
If TOKEN.hasEntry Then
'Dim AccessToken = ""
'grantAccess(AccessToken, "write:goods-movement-system", "AVISO")
If TOKEN.token_BEARER_TOKEN <> "" Then
If getGVMS_GMR(GMR, TOKEN.token_BEARER_TOKEN) Then
MsgBox("GMR: " & Now.ToShortDateString & " " & Now.ToShortTimeString)
End If
End If
End If
End Function
Shared Function DELETE_GMR(GVMS As VERAG_PROG_ALLGEMEIN.cGVMS)
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
Dim TOKEN = cHMRC.getTOKEN("GVMS")
If TOKEN.hasEntry Then
'Dim AccessToken = ""
'grantAccess(TOKEN.token_BEARER_TOKEN, "write:goods-movement-system+read:pull-notifications", "AVISO")
If TOKEN.token_BEARER_TOKEN <> "" Then
Dim Notification_Box_Id = ""
Dim Notification_Message_Id = ""
If delGVMS_GMR(GVMS, TOKEN.token_BEARER_TOKEN, Notification_Box_Id, Notification_Message_Id) Then
'GVMS.delete()
MsgBox("GELÖSCHT: " & Now.ToShortDateString & " " & Now.ToShortTimeString)
End If
End If
End If
End Function
Shared Function GET_NOTIFICATIONS(Notification_Box_Id As String) As Boolean
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
Dim TOKEN = cHMRC.getTOKEN("GVMS")
If TOKEN.hasEntry Then
' Dim AccessTokenNotTEST1 = grantAccessApplication("", "read:pull-notifications")
' If AccessTokenNotTEST1 <> "" Then
getGVMS_Notifications(TOKEN.token_BEARER_TOKEN, Notification_Box_Id) 'Notification_Box_Id) '"877b619c-33c1-4ab6-a34f-8bd7542e0596"
End If
End Function
Shared Function Acknowledge_NOTIFICATIONS(Notification_Box_Id As String, Notification_Message_Id As String) As Boolean
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
Dim TOKEN = cHMRC.getTOKEN("GVMS")
If TOKEN.hasEntry Then
'Dim AccessTokenNotTEST1 = grantAccessApplication("", "write:notifications")
' If AccessTokenNotTEST1 <> "" Then
' MsgBox("4")
getGVMS_AcknolageNotifications(TOKEN.token_BEARER_TOKEN, Notification_Box_Id, Notification_Message_Id) '"877b619c-33c1-4ab6-a34f-8bd7542e0596"
End If
End Function
Shared Sub hmrcTEST2()
'Dim rClient As RestClient = New RestClient()
'rClient.endPoint = "https://test-api.service.hmrc.gov.uk/hello/user"
'Dim strResponse As String = String.Empty
'strResponse = rClient.makeRequest(_accessToken)
Dim rest As New Chilkat.Rest
' Connect to the REST server.
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
Dim success As Boolean = rest.Connect("https://test-api.service.hmrc.gov.uk", port, bTls, bAutoReconnect)
'389356931 -> VERAG-UNISPED
'Dim responseJson As String = rest.FullRequestNoBody("GET", "/organisations/vat/check-vat-number/lookup/553557881")
'Dim responseJson As String = rest.FullRequestNoBody("GET", "/organisations/vat/check-vat-number/lookup/553552881") 'falsch
Dim responseJson As String = rest.FullRequestNoBody("GET", "/organisations/vat/check-vat-number/lookup/5535532881") 'falsch
If (rest.LastMethodSuccess <> True) Then
Console.WriteLine(rest.LastErrorText)
Exit Sub
End If
Try
Dim read = Newtonsoft.Json.Linq.JObject.Parse(responseJson)
If read.Item("code") IsNot Nothing Then
Dim VAT_Message = read.Item("message").ToString
Dim VAT_code = read.Item("code").ToString
MsgBox("ERROR: " & VAT_Message, MsgBoxStyle.OkOnly, VAT_code)
Else
' Dim json As String = "{""name"":""Rap God"",""statistics"":{""likeCount"":""122255"",""dislikeCount"":""4472""}}"
Dim VAT_Name = read.Item("target")("name").ToString
Dim VAT_processingDate = read.Item("processingDate").ToString
Dim VAT_Strasse = read.Item("target")("address")("line1").ToString
Dim VAT_PLZ = read.Item("target")("address")("postcode").ToString
Dim VAT_countryCode = read.Item("target")("address")("countryCode").ToString
MsgBox(VAT_Name)
MsgBox(VAT_processingDate)
End If
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
'Console.WriteLine(responseJson)
'Console.WriteLine("----")
'' We can alternatively do this:
'rest.ClearAllQueryParams()
'' rest.AddQueryParam("consumer_key", "YOUR_CONSUMER_KEY")
'' rest.AddQueryParam("consumer_secret", "YOUR_CONSUMER_SECRET")
'responseJson = rest.FullRequestNoBody("GET", "/wp-json/wc/v1/products")
'If (rest.LastMethodSuccess <> True) Then
' Console.WriteLine(rest.LastErrorText)
' Exit Sub
'End If
Console.WriteLine(responseJson)
End Sub
Shared Sub hmrcTEST()
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
'---------------------------REF DATA---------------------------
getGVMS_RefData()
'--------------------------------------------------------------
Exit Sub
'---------------------------NOTIFICATIONS---------------------------
Dim TOKEN = cHMRC.getTOKEN("GVMS")
If TOKEN.hasEntry Then
' Dim AccessTokenNotTEST1 = grantAccessApplication("", "read:pull-notifications")
' If AccessTokenNotTEST1 <> "" Then
getGVMS_Notifications(TOKEN.token_BEARER_TOKEN, "877b619c-33c1-4ab6-a34f-8bd7542e0596")
End If
'-------------------------------------------------------------------
Exit Sub
' Dim AccessToken = ""
'grantAccess(AccessToken, "write:goods-movement-system")
' grantAccess(AccessToken, "write:goods-movement-system+read:pull-notifications", "AVISO")
'getHMRC_Token(AccessToken, "write:goods-movement-system")
' MsgBox(AccessToken)
'If AccessToken <> "" Then
' Dim Notification_Box_Id = ""
' Dim Notification_Message_Id = ""
' If genGVMS_GMR(AccessToken, Notification_Box_Id, Notification_Message_Id) Then
' Dim AccessTokenNotTEST = grantAccessApplication("", "read:pull-notifications")
' ' getHMRC_Token(AccessTokenNotTEST, "read:pull-notifications")
' ' grantAccess(AccessTokenNotTEST, "read:pull-notifications")
' If AccessTokenNotTEST <> "" Then
' getGVMS_Notifications(AccessTokenNotTEST, Notification_Box_Id)
' End If
' 'If AccessToken <> "" Then
' ' getGVMS_Notifications(AccessToken, Notification_Box_Id)
' 'End If
' End If
'End If
Exit Sub
'UnlockCilkat()
'Dim AccessTokenNotTEST = ""
'grantAccess(AccessTokenNotTEST, "read:pull-notifications")
'If AccessTokenNotTEST <> "" Then
' getGVMS_Notifications(AccessTokenNotTEST, "877b619c-33c1-4ab6-a34f-8bd7542e0596")
'End If
Exit Sub
'Dim AccessToken = ""
'grantAccess(AccessToken, "write:goods-movement-system")
'If AccessToken <> "" Then
' Dim Notification_Box_Id = ""
' Dim Notification_Message_Id = ""
' genGVMS_GMR(AccessToken, Notification_Box_Id, Notification_Message_Id)
' Dim AccessTokenNot = ""
' grantAccess(AccessTokenNot, "read:pull-notifications")
' If AccessTokenNot <> "" Then
' getGVMS_Notifications(AccessTokenNot, Notification_Box_Id)
' End If
'End If
Exit Sub
getGVMS_RefData()
Exit Sub
Exit Sub
'genGVMS_GMR("TEST")
'Exit Sub
'Dim AccessToken = ""
'grantAccess(AccessToken)
'If AccessToken <> "" Then
' genGVMS_GMR(AccessToken)
'End If
End Sub
Public Shared Sub grantAccess(ByRef AccessToken, ByRef RefreshToken, scope, HMRC_APPLICATION)
Try
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
Dim CREDENTIALS = getCredentials(HMRC_APPLICATION)
Debug.WriteLine("HMRC Start")
Dim oauth2 As Chilkat.OAuth2 = New Chilkat.OAuth2()
Dim success As Boolean
oauth2.ListenPort = 3017
oauth2.AuthorizationEndpoint = CREDENTIALS.API_STRING & "/oauth/authorize"
oauth2.TokenEndpoint = CREDENTIALS.API_STRING & "/oauth/token"
oauth2.ClientId = CREDENTIALS.CLIENT_ID '"xybTOMaQWcuifeW5xnGggojlACWC"
oauth2.ClientSecret = CREDENTIALS.CLIENT_SECRET '"bf1cfb6e-1bcb-4282-b7a0-3d3ccb2b1dc1"
oauth2.Scope = scope '"write:goods-movement-system"
'oauth2.RedirectAllowHtml = "http://www.verag.ag/AVISO/Success.html"
'oauth2.RedirectDenyHtml = "http://www.verag.ag/AVISO/Sussess.html"
Dim url As String = oauth2.StartAuth()
MsgBox(url)
'oauth2.AuthorizationEndpoint = "https://test-api.service.hmrc.gov.uk/oauth/authorize"
'oauth2.TokenEndpoint = "https://test-api.service.hmrc.gov.uk/oauth/token"
If oauth2.LastMethodSuccess <> True Then
Debug.WriteLine(oauth2.LastErrorText)
Exit Sub
End If
Dim http As Chilkat.Http = New Chilkat.Http()
Dim useBrowser = False
If Not useBrowser Then
System.Diagnostics.Process.Start(url)
Dim numMsWaited As Integer = 0
While (numMsWaited < 120000) AndAlso (oauth2.AuthFlowState < 3)
oauth2.SleepMs(100)
numMsWaited = numMsWaited + 100
End While
' If there was no response from the browser within 30 seconds, then
' the AuthFlowState will be equal to 1 Or 2.
' 1: Waiting for Redirect. The OAuth2 background thread Is waiting to receive the redirect HTTP request from the browser.
' 2: Waiting for Final Response. The OAuth2 background thread Is waiting for the final access token response.
' In that case, cancel the background task started in the call to StartAuth.
Else
' System.Diagnostics.Process.Start(url)
Dim f As New Form
f.Size = New Size(800, 1400)
Dim wb As New WebBrowser
f.Controls.Add(wb)
f.StartPosition = FormStartPosition.CenterScreen
wb.Dock = DockStyle.Fill
wb.Navigate(url)
Dim done = False
'AddHandler wb.DocumentCompleted, Sub()
' If Not done Then
' If wb.Url.AbsolutePath = "/api-test-login/sign-in" Then
' Try
' Dim txtInput As HtmlElement = wb.Document.Forms(0).GetElementsByTagName("input").GetElementsByName("userId")(0)
' txtInput.InnerText = "224015321897"
' Dim txtInputPwd As HtmlElement = wb.Document.Forms(0).GetElementsByTagName("input").GetElementsByName("password")(0)
' txtInputPwd.InnerText = "ry1cspz0nsvj"
' done = True
' Catch
' End Try
' End If
' End If
' MsgBox(wb.Url.AbsolutePath)
' End Sub
f.ShowDialog()
End If
If oauth2.AuthFlowState < 3 Then
oauth2.Cancel()
Debug.WriteLine("No response from the browser!")
Exit Sub
End If
Debug.WriteLine("HMRC here")
' Check the AuthFlowState to see if authorization was granted, denied, Or if some error occurred
' The possible AuthFlowState values are:
' 3 Completed with Success. The OAuth2 flow has completed, the background thread exited, And the successful JSON response Is available in AccessTokenResponse property.
' 4: Completed with Access Denied. The OAuth2 flow has completed, the background thread exited, And the error JSON Is available in AccessTokenResponse property.
' 5: Failed Prior To Completion. The OAuth2 flow failed To complete, the background thread exited, And the error information Is available in the FailureInfo property.
If oauth2.AuthFlowState = 5 Then
Debug.WriteLine("OAuth2 failed to complete.")
Debug.WriteLine(oauth2.FailureInfo)
Exit Sub
End If
If oauth2.AuthFlowState = 4 Then
Debug.WriteLine("OAuth2 authorization was denied.")
Debug.WriteLine(oauth2.AccessTokenResponse)
Exit Sub
End If
If oauth2.AuthFlowState <> 3 Then
Debug.WriteLine("Unexpected AuthFlowState:" & Convert.ToString(oauth2.AuthFlowState))
Exit Sub
End If
' MsgBox("OAuth2 authorization granted!")
Debug.WriteLine("OAuth2 authorization granted!")
Debug.WriteLine("Access Token = " & oauth2.AccessToken)
Debug.WriteLine("Refresh Token = " & oauth2.RefreshToken)
Dim json As Chilkat.JsonObject = New Chilkat.JsonObject()
json.Load(oauth2.AccessTokenResponse)
json.EmitCompact = False
Debug.WriteLine(json.Emit())
' MsgBox(json.Emit())
' The JSON response looks Like this
' {
' "token_type": "Bearer",
' "scope": "user_impersonation",
' "expires_in": "3599",
' "ext_expires_in": "0",
' "expires_on": "1524783438",
' "not_before": "1524779538",
' "resource": "https://mydomain.api.crm.dynamics.com",
' "access_token": "...",
' "refresh_token": "...",
' "id_token": "..."
' }
' If an "expires_on" member does Not exist, then add the JSON member by
' getting the current system date/time And adding the "expires_in" seconds.
' This way we'll know when the token expires.
If json.HasMember("expires_on") <> True Then
Dim dtExpire As Chilkat.CkDateTime = New Chilkat.CkDateTime()
dtExpire.SetFromCurrentSystemTime()
dtExpire.AddSeconds(json.IntOf("expires_in"))
json.AppendString("expires_on", dtExpire.GetAsUnixTimeStr(False))
End If
Debug.WriteLine(json.Emit())
Dim fac As Chilkat.FileAccess = New Chilkat.FileAccess()
'fac.WriteEntireTextFile("qa_data/tokens/hmrc.json", json.Emit(), "utf-8", False)
' fac.WriteEntireTextFile("C:\Users\DEVELOPER1\Desktop\hmrc.json", json.Emit(), "utf-8", False)
AccessToken = oauth2.AccessToken
RefreshToken = oauth2.RefreshToken
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Shared Sub HMRC_RefreshToken(ByRef TOKEN As cHMRCToken, HMRC_APPLICATION As String)
If DateDiff(DateInterval.Minute, TOKEN.token_accestoken_datetime, Now) < 60 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 = "/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 CREDENTIALS = getCredentials(HMRC_APPLICATION)
req.AddParam("client_secret", CREDENTIALS.CLIENT_SECRET)
req.AddParam("client_id", CREDENTIALS.CLIENT_ID)
req.AddParam("grant_type", "client_credentials")
req.AddParam("refresh_token", TOKEN.token_REFRESH_TOKEN)
' rest.AddQueryParam("scope", scope)
' MsgBox(CREDENTIALS.API_STRING)
' Anfrage senden
Dim resp As Chilkat.HttpResponse = http.PostUrlEncoded(CREDENTIALS.API_STRING & "/oauth/token", 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_REFRESH_TOKEN = newRefreshToken
TOKEN.token_BEARER_TOKEN = accessToken
TOKEN.token_accestoken_datetime = Now
TOKEN.SAVE()
Console.WriteLine("Tokens wurden in TokenDB gespeichert.")
End Sub
Shared Function grantAccessApplication(ByRef AccessToken, scope) As String
Try
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
Dim rest As New Chilkat.Rest
Dim success As Boolean
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
MsgBox(rest.LastErrorText)
Return ""
End If
rest.AddHeader("Content-Type", "application/x-www-form-urlencoded")
rest.AddQueryParam("client_secret", CLIENT_SECRET)
rest.AddQueryParam("client_id", CLIENT_ID)
rest.AddQueryParam("grant_type", "client_credentials")
rest.AddQueryParam("scope", scope)
Dim ResponseStr = rest.FullRequestFormUrlEncoded("POST", "/oauth/token")
Dim respStatusCode As Integer = rest.ResponseStatusCode
If (respStatusCode <> 200) Then
Debug.WriteLine(rest.LastErrorText)
Return ""
End If
Dim jsonResp = New Chilkat.JsonObject()
jsonResp.Load(ResponseStr)
AccessToken = jsonResp.StringOf("access_token")
' MsgBox("AccessToken: " & AccessToken)
'jsonResp.StringOf("expires_in")
Return AccessToken
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
Shared Sub VATTEST(hmrc_app_server_token)
Dim rest As New Chilkat.Rest
Dim success As Boolean
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
Exit Sub
End If
' See the Online Tool for Generating JSON Creation Code
Dim json As New Chilkat.JsonObject
json.UpdateString("periodKey", "#001")
json.UpdateNumber("vatDueSales", "100.00")
json.UpdateNumber("vatDueAcquisitions", "100.00")
json.UpdateNumber("totalVatDue", "200")
json.UpdateNumber("vatReclaimedCurrPeriod", "100.00")
json.UpdateNumber("netVatDue", "100")
json.UpdateNumber("totalValueSalesExVAT", "500")
json.UpdateNumber("totalValuePurchasesExVAT", "500")
json.UpdateNumber("totalValueGoodsSuppliedExVAT", "500")
json.UpdateNumber("totalAcquisitionsExVAT", "500")
json.UpdateBool("finalised", True)
rest.AddHeader("Content-Type", "application/json")
rest.AddHeader("Authorization", "Bearer " & hmrc_app_server_token)
rest.AddHeader("Accept", "application/vnd.hmrc.1.0+json")
Dim sbRequestBody As New Chilkat.StringBuilder
json.EmitSb(sbRequestBody)
Dim sbResponseBody As New Chilkat.StringBuilder
success = rest.FullRequestSb("POST", "/organisations/vat/123456789/returns", sbRequestBody, sbResponseBody)
If (success <> True) Then
Debug.WriteLine(rest.LastErrorText)
Exit Sub
End If
Dim respStatusCode As Integer = rest.ResponseStatusCode
If (respStatusCode >= 400) Then
Debug.WriteLine("Response Status Code = " & respStatusCode)
Debug.WriteLine("Response Header:")
Debug.WriteLine(rest.ResponseHeader)
Debug.WriteLine("Response Body:")
Debug.WriteLine(sbResponseBody.GetAsString())
Exit Sub
End If
End Sub
Shared Sub getGVMS_RefData()
Dim rest As New Chilkat.Rest
Dim success As Boolean
Dim bTls As Boolean = True
Dim portSSL As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, portSSL, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
Exit Sub
End If
rest.AddHeader("Accept", "application/vnd.hmrc.1.0+json")
Dim sbRequestBody As New Chilkat.StringBuilder
Dim sbResponseBody As New Chilkat.StringBuilder
success = rest.FullRequestSb("GET", "/customs/goods-movement-system/reference-data", sbRequestBody, sbResponseBody)
If (success <> True) Then
Debug.WriteLine(rest.LastErrorText)
MsgBox(rest.LastErrorText)
Exit Sub
End If
Dim respStatusCode As Integer = rest.ResponseStatusCode
If (respStatusCode <> 200) Then
MsgBox("respStatusCode: " & respStatusCode)
Debug.WriteLine("Response Status Code = " & respStatusCode)
Debug.WriteLine("Response Header:")
Debug.WriteLine(rest.ResponseHeader)
Debug.WriteLine("Response Body:")
Debug.WriteLine(sbResponseBody.GetAsString())
Exit Sub
End If
MsgBox("OK " & respStatusCode)
Dim jsonResp = New Chilkat.JsonObject()
jsonResp.LoadSb(sbResponseBody)
VERAG_PROG_ALLGEMEIN.cGVMS_Routes.DELETE_ALL()
For i = 0 To jsonResp.SizeOfArray("routes") - 1
Dim ROUTE As New VERAG_PROG_ALLGEMEIN.cGVMS_Routes
ROUTE.routeId = jsonResp.StringOf("routes[" & i & "].routeId")
ROUTE.routeDirection = jsonResp.StringOf("routes[" & i & "].routeDirection")
ROUTE.routeEffectiveFrom = jsonResp.StringOf("routes[" & i & "].routeEffectiveFrom")
ROUTE.departurePortId = jsonResp.StringOf("routes[" & i & "].departurePortId")
ROUTE.arrivalPortId = jsonResp.StringOf("routes[" & i & "].arrivalPortId")
ROUTE.carrierId = jsonResp.StringOf("routes[" & i & "].carrierId")
ROUTE.routeEffectiveTo = jsonResp.StringOf("routes[" & i & "].routeEffectiveTo")
ROUTE.SAVE()
Next
VERAG_PROG_ALLGEMEIN.cGVMS_Ports.DELETE_ALL()
For i = 0 To jsonResp.SizeOfArray("ports") - 1
Dim PORT As New VERAG_PROG_ALLGEMEIN.cGVMS_Ports
PORT.portId = jsonResp.StringOf("ports[" & i & "].portId")
PORT.portDescription = jsonResp.StringOf("ports[" & i & "].portDescription")
PORT.portRegion = jsonResp.StringOf("ports[" & i & "].portRegion")
PORT.portEffectiveFrom = jsonResp.StringOf("ports[" & i & "].portEffectiveFrom")
PORT.portDescription = jsonResp.StringOf("ports[" & i & "].portDescription")
PORT.chiefPortCode = jsonResp.StringOf("ports[" & i & "].chiefPortCode")
PORT.cdsPortCode = jsonResp.StringOf("ports[" & i & "].cdsPortCode")
PORT.officeOfTransitCustomsOfficeCode = jsonResp.StringOf("ports[" & i & "].officeOfTransitCustomsOfficeCode")
PORT.portEffectiveTo = jsonResp.StringOf("ports[" & i & "].portEffectiveTo")
PORT.portCountryCode = jsonResp.StringOf("ports[" & i & "].portCountryCode")
PORT.isOperatingArrivedExportsProcess = jsonResp.StringOf("ports[" & i & "].isOperatingArrivedExportsProcess")
PORT.SAVE()
Next
VERAG_PROG_ALLGEMEIN.cGVMS_Carriers.DELETE_ALL()
For i = 0 To jsonResp.SizeOfArray("carriers") - 1
Dim CARRIER As New VERAG_PROG_ALLGEMEIN.cGVMS_Carriers
CARRIER.carrierId = jsonResp.StringOf("carriers[" & i & "].carrierId")
CARRIER.carrierName = jsonResp.StringOf("carriers[" & i & "].carrierName")
CARRIER.countryCode = jsonResp.StringOf("carriers[" & i & "].countryCode")
CARRIER.SAVE()
Next
'For i = 0 To jsonResp.SizeOfArray("locations") - 1
' MsgBox(jsonResp.StringOf("locations[" & i & "].locationId"))
' MsgBox(jsonResp.StringOf("locations[" & i & "].locationDescription"))
' MsgBox(jsonResp.StringOf("locations[" & i & "].locationType"))
'Next
'For i = 0 To jsonResp.SizeOfArray("inspectionTypes") - 1
' MsgBox(jsonResp.StringOf("inspectionTypes[" & i & "].inspectionTypeId"))
' MsgBox(jsonResp.StringOf("inspectionTypes[" & i & "].description"))
'Next
'For i = 0 To jsonResp.SizeOfArray("ruleFailures") - 1
' MsgBox(jsonResp.StringOf("ruleFailures[" & i & "].ruleId"))
' MsgBox(jsonResp.StringOf("ruleFailures[" & i & "].ruleDescription"))
'Next
MsgBox("FERTIG: " & Now.ToShortDateString & " " & Now.ToShortTimeString)
End Sub
Private Shared Function genGVMS_GMR(ByRef GVMS As VERAG_PROG_ALLGEMEIN.cGVMS, hmrc_app_server_token As String, ByRef Notification_Box_Id As String, ByRef Notification_Message_Id As String, Optional updateGMR As String = "") As Boolean
Try
Dim rest As New Chilkat.Rest
Dim success As Boolean
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
MsgBox(rest.LastErrorText)
Return False
End If
' See the Online Tool for Generating JSON Creation Code
Dim json As New Chilkat.JsonObject
json.UpdateString("direction", GVMS.gvms_direction)
json.UpdateBool("isUnaccompanied", GVMS.gvms_isUnaccompanied)
json.UpdateString("vehicleRegNum", GVMS.gvms_vehicleRegNum) 'LKW
If If(GVMS.gvms_trailorRegNum, "") <> "" Then json.UpdateString("trailerRegistrationNums", GVMS.gvms_trailorRegNum) 'Anhänger
json.UpdateString("plannedCrossing.routeId", GVMS.gvms_routeId) '--> Calais - Dover - DFDS
json.UpdateString("plannedCrossing.localDateTimeOfDeparture", Format(CDate(GVMS.gvms_locateDateTimeOfDeparture), "yyyy-MM-ddTHH:mm")) '"2021-08-11T10:58")
If GVMS.gvms_empty Then
json.UpdateBool("emptyVehicle.isOwnVehicle", GVMS.gvms_emptyisOwn)
' json.UpdateBool("emptyVehicle.sAndSMasterRefNum", GVMS.gvms_emptyisOwn)
Else
Dim cnt = 0
'---------customsDeclarations----------------
cnt = 0
For Each POS In GVMS.GVMS_POSITIONEN
If POS.gvms_art = VERAG_PROG_ALLGEMEIN.cGVMS_POS_DecArt.IMPORT Or POS.gvms_art = VERAG_PROG_ALLGEMEIN.cGVMS_POS_DecArt.EXPORT Then
json.UpdateString("customsDeclarations[" & cnt & "].customsDeclarationId", POS.gvms_RefNum)
' json.UpdateString("customsDeclarations[" & cnt & "].customsDeclarationPartId", "20GB01I0XLM976S001")
If If(POS.gvms_SS, "") <> "" Then json.UpdateString("customsDeclarations[" & cnt & "].sAndSMasterRefNum", POS.gvms_SS)
End If
cnt += 1
Next
'---------transitDeclarations TSAD----------------
cnt = 0
For Each POS In GVMS.GVMS_POSITIONEN
If POS.gvms_art = VERAG_PROG_ALLGEMEIN.cGVMS_POS_DecArt.TSAD Then
json.UpdateString("transitDeclarations[" & cnt & "].transitDeclarationId", POS.gvms_RefNum)
json.UpdateBool("transitDeclarations[" & cnt & "].isTSAD", True)
If If(POS.gvms_SS, "") <> "" Then json.UpdateString("transitDeclarations[" & cnt & "].sAndSMasterRefNum", POS.gvms_SS)
End If
cnt += 1
Next
'---------transitDeclarations TAD----------------
cnt = 0
For Each POS In GVMS.GVMS_POSITIONEN
If POS.gvms_art = VERAG_PROG_ALLGEMEIN.cGVMS_POS_DecArt.TAD Then
json.UpdateString("transitDeclarations[" & cnt & "].transitDeclarationId", POS.gvms_RefNum)
json.UpdateBool("transitDeclarations[" & cnt & "].isTSAD", False)
If If(POS.gvms_SS, "") <> "" Then json.UpdateString("transitDeclarations[" & cnt & "].sAndSMasterRefNum", POS.gvms_SS)
End If
cnt += 1
Next
'---------tirDeclarations----------------
cnt = 0
For Each POS In GVMS.GVMS_POSITIONEN
If POS.gvms_art = VERAG_PROG_ALLGEMEIN.cGVMS_POS_DecArt.TIR Then
json.UpdateString("tirDeclarations[" & cnt & "].tirCarnetId", POS.gvms_RefNum)
If If(POS.gvms_SS, "") <> "" Then json.UpdateString("tirDeclarations[" & cnt & "].sAndSMasterRefNum", POS.gvms_SS)
End If
cnt += 1
Next
'---------ataDeclarations----------------
cnt = 0
For Each POS In GVMS.GVMS_POSITIONEN
If POS.gvms_art = VERAG_PROG_ALLGEMEIN.cGVMS_POS_DecArt.ATA Then
json.UpdateString("ataDeclarations[" & cnt & "].ataCarnetId", POS.gvms_RefNum)
If If(POS.gvms_SS, "") <> "" Then json.UpdateString("ataDeclarations[" & cnt & "].sAndSMasterRefNum", POS.gvms_SS)
End If
cnt += 1
Next
'---------eidrDeclarations----------------
cnt = 0
For Each POS In GVMS.GVMS_POSITIONEN
If POS.gvms_art = VERAG_PROG_ALLGEMEIN.cGVMS_POS_DecArt.EIDR Then
json.UpdateString("eidrDeclarations[" & cnt & "].traderEORI", POS.gvms_RefNum)
If If(POS.gvms_SS, "") <> "" Then json.UpdateString("eidrDeclarations[" & cnt & "].sAndSMasterRefNum", POS.gvms_SS)
End If
cnt += 1
Next
'---------indirectExportDeclarations----------------
cnt = 0
For Each POS In GVMS.GVMS_POSITIONEN
If POS.gvms_art = VERAG_PROG_ALLGEMEIN.cGVMS_POS_DecArt.INDIRECT Then
json.UpdateString("indirectExportDeclarations[" & cnt & "].eadMasterRefNum", POS.gvms_RefNum)
End If
cnt += 1
Next
End If
rest.AddHeader("Content-Type", "application/json")
rest.AddHeader("Authorization", "Bearer " & hmrc_app_server_token)
rest.AddHeader("Accept", "application/vnd.hmrc.1.0+json")
Dim sbRequestBody As New Chilkat.StringBuilder
json.EmitSb(sbRequestBody)
Dim sbResponseBody As New Chilkat.StringBuilder
If updateGMR <> "" Then 'UPDATE!
success = rest.FullRequestSb("PUT", "/customs/goods-movement-system/movements/" & updateGMR, sbRequestBody, sbResponseBody)
Dim respStatusCode As Integer = rest.ResponseStatusCode
If (respStatusCode = 404) Then 'update
MsgBox("GMR wurde nicht gefunden.")
Return False
End If
'403
If (respStatusCode = 202) Then
MsgBox("UPDATE: " & Now.ToShortDateString & " " & Now.ToShortTimeString)
Return True 'OK
Else
MsgBox("HMRC ERROR: " & respStatusCode & rest.ResponseHeader.ToString)
MsgBox("HMRC ERROR: " & sbResponseBody.ToString)
Return False
End If
Else
success = rest.FullRequestSb("POST", "/customs/goods-movement-system/movements", sbRequestBody, sbResponseBody)
If (success <> True) Then
Debug.WriteLine(rest.LastErrorText)
Return False
End If
Dim respStatusCode As Integer = rest.ResponseStatusCode
If (respStatusCode = 404) Then 'update
MsgBox("GMR wurde nicht gefunden.")
Return False
End If
If (respStatusCode <> 202) Then
MsgBox("HMRC ERROR: " & respStatusCode & rest.ResponseHeader.ToString)
MsgBox("HMRC ERROR: " & sbResponseBody.ToString)
Return False
End If
'Dim jsonResp = New Chilkat.JsonObject()
'jsonResp.Load(rest.ResponseHeader)
'MsgBox(rest.ResponseHeader)
'MsgBox(jsonResp.StringOf("Notification-Box-Id"))
'MsgBox(jsonResp.StringOf("Notification-Message-Id"))
'Notification_Box_Id = (jsonResp.StringOf("Notification-Box-Id"))
'Notification_Message_Id = (jsonResp.StringOf("Notification-Message-Id"))
For Each rh In rest.ResponseHeader.Split(vbNewLine)
If (rh.Contains("Notification-Box-Id: ")) Then
Notification_Box_Id = rh.Replace("Notification-Box-Id: ", "").Replace(vbNewLine, "").Replace(" ", "").Trim
' MsgBox(Notification_Box_Id)
End If
If (rh.Contains("Notification-Message-Id: ")) Then
Notification_Message_Id = rh.Replace("Notification-Message-Id: ", "").Replace(vbNewLine, "").Replace(" ", "").Trim
' MsgBox(Notification_Message_Id)
End If
Next
GVMS.gvms_notification_id = Notification_Message_Id
GVMS.gvms_notification_boxid = Notification_Box_Id
Return True
End If
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return False
End Function
Private Shared Function delGVMS_GMR(ByRef GVMS As VERAG_PROG_ALLGEMEIN.cGVMS, hmrc_app_server_token As String, ByRef Notification_Box_Id As String, ByRef Notification_Message_Id As String) As Boolean
Try
Dim rest As New Chilkat.Rest
Dim success As Boolean
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
MsgBox(rest.LastErrorText)
Return False
End If
' See the Online Tool for Generating JSON Creation Code
Dim json As New Chilkat.JsonObject
' rest.AddHeader("Content-Type", "application/json")
rest.AddHeader("Authorization", "Bearer " & hmrc_app_server_token)
rest.AddHeader("Accept", "application/vnd.hmrc.1.0+json")
Dim sbRequestBody As New Chilkat.StringBuilder
json.EmitSb(sbRequestBody)
Dim sbResponseBody As New Chilkat.StringBuilder
success = rest.FullRequestSb("DELETE", "/customs/goods-movement-system/movements/" & GVMS.gvms_GMR, sbRequestBody, sbResponseBody)
If (success <> True) Then
Debug.WriteLine(rest.LastErrorText)
Return False
End If
Dim respStatusCode As Integer = rest.ResponseStatusCode
If (respStatusCode = 404) Then
MsgBox("GMR wurde nicht gefunden.")
Return False
End If
If (respStatusCode <> 202) Then
MsgBox("HMRC ERROR: " & respStatusCode & rest.ResponseHeader.ToString)
Return False
End If
For Each rh In rest.ResponseHeader.Split(vbNewLine)
If (rh.Contains("Notification-Box-Id: ")) Then
Notification_Box_Id = rh.Replace("Notification-Box-Id: ", "").Replace(vbNewLine, "").Replace(" ", "").Trim
' MsgBox(Notification_Box_Id)
End If
If (rh.Contains("Notification-Message-Id: ")) Then
Notification_Message_Id = rh.Replace("Notification-Message-Id: ", "").Replace(vbNewLine, "").Replace(" ", "").Trim
' MsgBox(Notification_Message_Id)
End If
Next
GVMS.gvms_notification_id = Notification_Message_Id
GVMS.gvms_notification_boxid = Notification_Box_Id
Return True
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return False
End Function
Private Shared Function getGVMS_LIST(hmrc_app_server_token As String) As Boolean
Try
Dim rest As New Chilkat.Rest
Dim success As Boolean
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
MsgBox(rest.LastErrorText)
Return False
End If
' See the Online Tool for Generating JSON Creation Code
Dim json As New Chilkat.JsonObject
' rest.AddHeader("Content-Type", "application/json")
rest.AddHeader("Authorization", "Bearer " & hmrc_app_server_token)
rest.AddHeader("Accept", "application/vnd.hmrc.1.0+json")
Dim sbRequestBody As New Chilkat.StringBuilder
'json.EmitSb(sbRequestBody)
Dim sbResponseBody As New Chilkat.StringBuilder
success = rest.FullRequestSb("GET", "/customs/goods-movement-system/movements", sbRequestBody, sbResponseBody)
MsgBox("GO " & success)
If (success <> True) Then
Debug.WriteLine(rest.LastErrorText)
Return False
End If
Dim respStatusCode As Integer = rest.ResponseStatusCode
If (respStatusCode = 200) Then
MsgBox(sbResponseBody.ToString)
Return True
Else
MsgBox(sbResponseBody.ToString)
MsgBox(rest.ResponseHeader.ToString)
MsgBox("HMRC ERROR: " & respStatusCode & rest.ResponseHeader.ToString)
Return False
End If
Return True
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return False
End Function
Private Shared Function getGVMS_GMR(GMR As String, hmrc_app_server_token As String) As Boolean
Try
Dim rest As New Chilkat.Rest
Dim success As Boolean
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
MsgBox(rest.LastErrorText)
Return False
End If
' See the Online Tool for Generating JSON Creation Code
Dim json As New Chilkat.JsonObject
' rest.AddHeader("Content-Type", "application/json")
rest.AddHeader("Authorization", "Bearer " & hmrc_app_server_token)
rest.AddHeader("Accept", "application/vnd.hmrc.1.0+json")
Dim sbRequestBody As New Chilkat.StringBuilder
Dim sbResponseBody As New Chilkat.StringBuilder
success = rest.FullRequestSb("GET", "/customs/goods-movement-system/movements/" & GMR, sbRequestBody, sbResponseBody)
If (success <> True) Then
Debug.WriteLine(rest.LastErrorText)
Return False
End If
Dim respStatusCode As Integer = rest.ResponseStatusCode
If (respStatusCode = 200) Then
MsgBox(sbResponseBody.ToString)
Return True
Else
MsgBox("HMRC ERROR: " & respStatusCode & rest.ResponseHeader.ToString)
Return False
End If
Return True
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return False
End Function
Private Shared Sub getGVMS_Notifications(hmrc_app_server_token As String, Notification_Box_Id As String)
Try
Dim rest As New Chilkat.Rest
Dim success As Boolean
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
Exit Sub
End If
'37d1feab8776c006f7fb7c9cc2f93172
'"UK_INBOUND",
' "UK_OUTBOUND",
' "GB_TO_NI",
' "NI_TO_GB"
' See the Online Tool for Generating JSON Creation Code
'Dim json As New Chilkat.JsonObject
'json.UpdateString("boxId", Notification_Box_Id)
' json.UpdateString("status", "PENDING")
'json.UpdateString("fromDate", "2020-06-03T14:20:54.987")
'json.UpdateString("toDate", "2020-06-03T14:20:54.987")
' rest.AddHeader("Content-Type", "application/json")
rest.AddHeader("Authorization", "Bearer " & hmrc_app_server_token)
rest.AddHeader("Accept", "application/vnd.hmrc.1.0+json")
Dim sbRequestBody As New Chilkat.StringBuilder
' json.EmitSb(sbRequestBody)
Dim sbResponseBody As New Chilkat.StringBuilder
success = rest.FullRequestSb("GET", "/misc/push-pull-notification/box/" & Notification_Box_Id & "/notifications", sbRequestBody, sbResponseBody)
Dim respStatusCode As Integer = rest.ResponseStatusCode
If (success <> True) Then
Debug.WriteLine(rest.LastErrorText)
Exit Sub
End If
If (respStatusCode <> 200) Then
System.IO.File.WriteAllText("C:\Users\DEVELOPER1\Desktop\hmrc3.json", rest.ResponseHeader.ToString())
Debug.WriteLine("Response Status Code = " & respStatusCode)
Debug.WriteLine("Response Header:")
Debug.WriteLine(rest.ResponseHeader)
Debug.WriteLine("Response Body:")
Debug.WriteLine(sbResponseBody.GetAsString())
Exit Sub
End If
Dim strJson = sbResponseBody.ToString
If strJson.StartsWith("[") Then
strJson = "{""arrNotification"":" & strJson & "}"
End If
Dim jsonResp = New Chilkat.JsonObject()
jsonResp.Load(strJson)
For i = 0 To jsonResp.SizeOfArray("arrNotification") - 1
'MsgBox(jsonResp.StringOf("arrNotification[" & i & "].status"))
'Dim notificationId = jsonResp.StringOf("arrNotification[" & i & "].notificationId")
'If notificationId = "notificationId" Then
' MsgBox("OOOO")
'End If
Dim jsonRespMsg = New Chilkat.JsonObject()
If jsonRespMsg.Load(jsonResp.StringOf("arrNotification[" & i & "].message")) Then
If jsonRespMsg.StringOf("gmrId") <> "" Then
Dim notificationId = jsonRespMsg.StringOf("messageId")
Dim GVMS = VERAG_PROG_ALLGEMEIN.cGVMS.LOAD_ByNotification(Notification_Box_Id, notificationId)
If GVMS IsNot Nothing Then
If jsonRespMsg.StringOf("gmrId") <> "" Then GVMS.gvms_GMR = jsonRespMsg.StringOf("gmrId")
If jsonRespMsg.StringOf("gmrState") <> "" Then GVMS.gvms_status = jsonRespMsg.StringOf("gmrState")
GVMS.SAVE()
End If
End If
End If
' MsgBox(jsonRespMsg.StringOf("messageId") & " / " & jsonRespMsg.StringOf("gmrId") & " / " & jsonRespMsg.StringOf("gmrState"))
Next
'i = 0;
'count_i = json.SizeOfArray("product.variants");
'while (i < count_i) {
' json.I = i;
' id = json.IntOf("product.variants[i].id");
' product_id = json.IntOf("product.variants[i].product_id");
' title = json.StringOf("product.variants[i].title");
' price = json.StringOf("product.variants[i].price");
' sku = json.StringOf("product.variants[i].sku");
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Private Shared Sub getGVMS_AcknolageNotifications(hmrc_app_server_token As String, Notification_Box_Id As String, Notification_Message_Id As String)
Try
Dim rest As New Chilkat.Rest
Dim success As Boolean
Dim bTls As Boolean = True
Dim port As Integer = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect(API_STRING, port, bTls, bAutoReconnect)
If (success <> True) Then
Debug.WriteLine("ConnectFailReason: " & rest.ConnectFailReason)
Debug.WriteLine(rest.LastErrorText)
Exit Sub
End If
' rest.AddHeader("Content-Type", "application/json")
rest.AddHeader("Authorization", "Bearer " & hmrc_app_server_token)
rest.AddHeader("Accept", "application/vnd.hmrc.1.0+json")
Dim json As New Chilkat.JsonObject
json.Load("{
""notificationIds"": [
""" & Notification_Message_Id & """
]
}")
Dim sbRequestBody As New Chilkat.StringBuilder
json.EmitSb(sbRequestBody)
Dim sbResponseBody As New Chilkat.StringBuilder
success = rest.FullRequestSb("PUT", "/misc/push-pull-notification/box/" & Notification_Box_Id & "/notifications/acknowledge", sbRequestBody, sbResponseBody)
Dim respStatusCode As Integer = rest.ResponseStatusCode
MsgBox("OK: " & success)
If (success <> True) Then
Debug.WriteLine(rest.LastErrorText)
Exit Sub
End If
If (respStatusCode = 204) Then
MsgBox("ACKNOLAGED " & Now.ToShortDateString & " " & Now.ToShortTimeString)
Exit Sub
Else
System.IO.File.WriteAllText("C:\Users\DEVELOPER1\Desktop\hmrc3.json", rest.ResponseHeader.ToString())
Debug.WriteLine("Response Status Code = " & respStatusCode)
Debug.WriteLine("Response Header:")
Debug.WriteLine(rest.ResponseHeader)
Debug.WriteLine("Response Body:")
Debug.WriteLine(sbResponseBody.GetAsString())
Exit Sub
End If
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''
'Shared Sub testToken2()
' Dim refresh_token As String
' Dim token As String
' ' construct the request for access token
' Dim client = New RestClient(API_STRING & "/oauth/token")
' Dim request = New RestRequest("dfe/application-info", Method.POST)
' request.AddHeader("content-type", "application/x-www-form-urlencoded")
' request.AddParameter("grant_type", "client_credentials")
' request.AddParameter("client_id", "<Paste-your-client-id-here>")
' request.AddParameter("client_secret", "<Paste-your-client-secret-here>")
' ' make call to get token
' Dim response As IRestResponse = client.Execute(request)
' ' Extract token
' token = JObject.Parse(response.Content).SelectToken("$..access_token").ToString()
' refresh_token = JObject.Parse(response.Content).SelectToken("$..refresh_token").ToString()
'End Sub
Shared Sub getHMRC_Token(ByRef AccessToken, scope)
'oauth2.ListenPort = 3017
''oauth2.AuthorizationEndpoint = "https://test-api.service.hmrc.gov.uk/oauth/authorize"
''oauth2.TokenEndpoint = "https://test-api.service.hmrc.gov.uk/oauth/token"
'oauth2.AuthorizationEndpoint = API_STRING & "/oauth/authorize"
'oauth2.TokenEndpoint = API_STRING & "/oauth/token"
'oauth2.ClientId = "xybTOMaQWcuifeW5xnGggojlACWC"
'oauth2.ClientSecret = "bf1cfb6e-1bcb-4282-b7a0-3d3ccb2b1dc1"
''oauth2.Scope = "read:vat write:vat" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'oauth2.Scope = scope '"write:goods-movement-system"
'Dim url As String = oauth2.StartAuth()
' Refer to the documentation for more information on how to get the client id/secret
'Dim clientId As String = "xybTOMaQWcuifeW5xnGggojlACWC"
' Dim clientSecret As String = "bf1cfb6e-1bcb-4282-b7a0-3d3ccb2b1dc1"
' Refer to the documentation for more information on how to get the tokens
'Dim accessToken As String = "" '"OaOXXXXTaSucp8XXcgXXH"
' Dim refreshToken As String = "kE4HXXXXXXXhxvtUHlboSF"
' -- Refresh the access token
Dim request As System.Net.WebRequest = System.Net.HttpWebRequest.Create(API_STRING & "/oauth/token")
'oauth2.AuthorizationEndpoint = API_STRING & "/oauth/authorize"
' oauth2.TokenEndpoint = API_STRING & "/oauth/token"
request.Method = "POST"
request.ContentType = "application/x-www-form-urlencoded"
'request.ContentType = "application/json"
Dim outgoingQueryString As NameValueCollection = HttpUtility.ParseQueryString(String.Empty)
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("scope", scope) '"write:goods-movement-system")
Dim postBytes As Byte() = New ASCIIEncoding().GetBytes(outgoingQueryString.ToString())
Dim postStream As Stream = request.GetRequestStream()
postStream.Write(postBytes, 0, postBytes.Length)
postStream.Flush()
postStream.Close()
Try
Using response As System.Net.WebResponse = request.GetResponse()
Using streamReader As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
' Parse the JSON the way you prefer
'FFFFFFFFFFFFFFFFFFALSE:::::::::::::::::::::::: Dim jsonResult As RefreshTokenResultJSON = New System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(streamReader.ReadToEnd(), GetType(RefreshTokenResultJSON))
'FFFFFFFFFFFFFFFFFFALSE:::::::::::::::::::::::: AccessToken = jsonResult.access_token
' For more information, refer to the documentation
End Using
End Using
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
'' -- Get current user profile
'request = System.Net.HttpWebRequest.Create("https://api.clicdata.com/profile/user")
'request.Method = "GET"
'request.Headers.Add("Authorization", "Bearer " & accessToken)
'Using response As System.Net.WebResponse = request.GetResponse()
' Using streamReader As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
' Dim jsonResponseText = streamReader.ReadToEnd()
' ' Parse the JSON the way you prefer
' ' In this example the JSON will be something Like:
' ' {"email_address" "john.smith@clicdata.com", "first_name": "John", "last_login_date": "20160426T14:24:58+00:00", "last_name": "Smith", ...
' ' For more information, refer to the documentation
' End Using
'End Using
'' -- List the current data
'request = System.Net.HttpWebRequest.Create("https://api.clicdata.com/data/")
'request.Method = "GET"
'request.Headers.Add("Authorization", "Bearer " & accessToken)
'Using response As System.Net.WebResponse = request.GetResponse()
' Using streamReader As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
' Dim jsonResponseText = streamReader.ReadToEnd()
' ' Parse the JSON the way you prefer
' ' In this example the JSON will be something Like:
' ' { "count" 265, "data": [{ "description": "","source": "merge", "creation_date": "20150610T12:47:32+02:00", "last_data_update_date": "20150610T12:47:49+02:00", ...
' ' For more information, refer to the documentation
' End Using
'End Using
'' -- Create some new data
'Dim dataId As Integer = 0
'request = System.Net.HttpWebRequest.Create("https://api.clicdata.com/data/")
'request.Method = "POST"
'request.ContentType = "application/json"
'request.Headers.Add("Authorization", "Bearer " & accessToken)
'Using tStreamWriter As System.IO.StreamWriter = New System.IO.StreamWriter(request.GetRequestStream())
' tStreamWriter.Write(New System.Web.Script.Serialization.JavaScriptSerializer().Serialize(New With {Key .name = "my test data " & Guid.NewGuid().ToString(), Key .description = "some description for my test data", Key .columns = {New With {Key .name = "column 1", Key .data_type = "text"}, New With {Key .name = "column 2", Key .data_type = "number"}}}))
'End Using
'Using response As System.Net.WebResponse = request.GetResponse()
' Using streamReader As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
' Dim jsonResponseText = streamReader.ReadToEnd()
' ' The JSON returned in this example is the ID of our newly created data
' dataId = Integer.Parse(jsonResponseText)
' ' For more information, refer to the documentation
' End Using
'End Using
'' -- Add a few rows of data
'request = System.Net.HttpWebRequest.Create("https://api.clicdata.com/data/" & dataId & "/rows")
'request.Method = "POST"
'request.ContentType = "application/json"
'request.Headers.Add("Authorization", "Bearer " & accessToken)
'Using tStreamWriter As System.IO.StreamWriter = New System.IO.StreamWriter(request.GetRequestStream())
' tStreamWriter.Write(New System.Web.Script.Serialization.JavaScriptSerializer().Serialize(New With {Key .data = New Object() {New Object() {"one", 1}, New Object() {"two", 2}}}))
'End Using
'Using response As System.Net.WebResponse = request.GetResponse()
' Using streamReader As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
' Dim jsonResponseText = streamReader.ReadToEnd()
' ' The JSON returned in this example tells us if the rows were inserted successfully:
' ' { "success" true }
' ' For more information, refer to the documentation
' End Using
'End Using
End Sub
Public Shared Function getTOKEN(APPLICATION, Optional forceNewToken = False, Optional saveAPPLICATION_NAME = "", Optional otherHMRCAPPLICATION_NAME = "") As cHMRCToken
If saveAPPLICATION_NAME = "" Then saveAPPLICATION_NAME = APPLICATION
Dim TOKEN = New cHMRCToken(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA, saveAPPLICATION_NAME)
Try
Dim appl = ""
Dim HMRC_APPLICATION = "AVISO"
Select Case APPLICATION
Case "HELLOWORLD" '"EORI_CHECK"
'appl = "write:import-control-system+read:import-control-system"
appl = "applicationRestricted"
HMRC_APPLICATION = "AVISO"
Case "GVMS"
appl = "write:goods-movement-system+read:pull-notifications"
HMRC_APPLICATION = "AVISO"
Case "VAT_CHECK" '"EORI_CHECK"
appl = "read:vat write:vat"
HMRC_APPLICATION = "AVISO"
Case "ENS" '"EORI_CHECK"
'appl = "write:import-control-system+read:import-control-system"
appl = "write:import-control-system"
HMRC_APPLICATION = "AVISO_ENS"
Case "ENS_HELLOWORLD" '"EORI_CHECK"
'appl = "write:import-control-system+read:import-control-system"
appl = "hello"
HMRC_APPLICATION = "AVISO_ENS"
Case Else
appl = "hello"
HMRC_APPLICATION = "AVISO_ENS"
End Select
If otherHMRCAPPLICATION_NAME <> "" Then
HMRC_APPLICATION = otherHMRCAPPLICATION_NAME
End If
If forceNewToken OrElse TOKEN.hasEntry = False OrElse TOKEN.token_BEARER_TOKEN Is Nothing OrElse TOKEN.token_BEARER_TOKEN = "" Then
'Neuer Token
Dim AccessToken = ""
Dim RefreshToken = ""
grantAccess(AccessToken, RefreshToken, appl, HMRC_APPLICATION)
TOKEN.token_Application = saveAPPLICATION_NAME
TOKEN.token_BEARER_TOKEN = AccessToken
TOKEN.token_REFRESH_TOKEN = RefreshToken
TOKEN.token_refresh_datetime = Now
TOKEN.token_accestoken_datetime = Now
TOKEN.SAVE()
Else
'Refresh
HMRC_RefreshToken(TOKEN, HMRC_APPLICATION)
End If
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
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 " & TOKEN.token_BEARER_TOKEN)
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
End Class
'Public Class Startup
' Public Sub New(ByVal configuration As IConfiguration)
' configuration = configuration
' End Sub
' Public ReadOnly Property Configuration As IConfiguration
' Public Sub ConfigureServices(ByVal services As IServiceCollection)
' services.Configure(Configuration)
' services.Configure(Of CookiePolicyOptions)(Function(options)
' options.CheckConsentNeeded = Function(context) True
' options.MinimumSameSitePolicy = SameSiteMode.None
' End Function)
' services.AddSession(Function(options)
' options.IdleTimeout = TimeSpan.FromSeconds(10)
' options.Cookie.HttpOnly = True
' options.Cookie.IsEssential = True
' End Function)
' services.AddAuthentication(Function(options)
' options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme
' options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme
' options.DefaultChallengeScheme = "HMRC"
' End Function).AddCookie().AddOAuth("HMRC", Function(options)
' options.ClientId = Configuration("clientId")
' options.ClientSecret = Configuration("clientSecret")
' options.CallbackPath = New PathString(Configuration("oauthCallbackUri"))
' options.Scope.Add("hello")
' options.SaveTokens = True
' options.AuthorizationEndpoint = Configuration("uri") & "/oauth/authorize"
' options.TokenEndpoint = Configuration("uri") & "/oauth/token"
' End Function)
' services.AddRazorPages(Function(options)
' options.Conventions.AddPageRoute("/HelloWorld/Index", "")
' End Function)
' End Sub
' Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
' If env.IsDevelopment() Then
' app.UseDeveloperExceptionPage()
' Else
' app.UseExceptionHandler("/Error")
' app.UseHsts()
' End If
' app.UseHttpsRedirection()
' app.UseStaticFiles()
' app.UseRouting()
' app.UseAuthorization()
' app.UseAuthentication()
' app.UseSession()
' app.UseCookiePolicy()
' app.UseEndpoints(Function(endpoints)
' endpoints.MapRazorPages()
' endpoints.MapControllerRoute(name:="default", pattern:="{controller=HelloWorld}/{action=Index}")
' End Function)
' End Sub
'End Class
Public Class VATResponse
Public Class Address
Public Property line1 As String
Public Property postcode As String
Public Property countryCode As String
End Class
Public Class Target
Public Property name As String
Public Property vatNumber As String
Public Property address As Address
End Class
Public Class Root
Public Property target As Target
Public Property processingDate As DateTime
End Class
End Class