259 lines
12 KiB
VB.net
259 lines
12 KiB
VB.net
Imports Newtonsoft.Json
|
|
|
|
Public Class cRelayHub
|
|
|
|
Public Class cRelayHubDocument
|
|
Public Property type As String
|
|
Public Property base64String As String
|
|
Public Property filename As String
|
|
Public Property fileType As String
|
|
End Class
|
|
|
|
Public Class cRelayHubTransaction
|
|
Public Property ioPartner As String
|
|
Public Property ioDivision3 As String
|
|
Public Property ioReference As String
|
|
End Class
|
|
|
|
Public Class cRelayHubObjectIdentification
|
|
Public Property objectName As String
|
|
Public Property objectAlias As String
|
|
Public Property declarationType As String
|
|
Public Property referenceNumberOverlay As String
|
|
Public Property username As String
|
|
|
|
End Class
|
|
|
|
Public Class cRelayHubAgentContact
|
|
Public Property contactPersonName As String
|
|
Public Property contactPersonPhoneNumber As String
|
|
Public Property contactPersonPosition As String
|
|
End Class
|
|
|
|
Public Class cRelayHubCost
|
|
Public Property costAmount As String
|
|
Public Property costCurrency As String
|
|
End Class
|
|
|
|
Public Class cRelayHubHeaderData
|
|
Public Property agentContact As cRelayHubAgentContact
|
|
Public Property declarantIsConsignee As Boolean
|
|
Public Property representationRelationshipCode As String
|
|
Public Property inputTaxDeduction As String
|
|
Public Property procedureCodeRequested As String
|
|
Public Property goodsStatus As String
|
|
Public Property costs As List(Of cRelayHubCost)
|
|
Public Property transportMeansArrivalIdentity As String
|
|
Public Property transportMeansNationalityCode As String
|
|
Public Property previousAdministrativeReferenceType As String
|
|
Public Property previousAdministrativeReferenceNumber As String
|
|
Public Property destinationFederalState As String
|
|
Public Property destinationCountry As String
|
|
Public Property departureCountry As String
|
|
Public Property addressedCustomsOffice As String
|
|
End Class
|
|
|
|
Public Class cRelayHubAddress
|
|
Public Property addressType As String
|
|
Public Property participantEORI As String
|
|
Public Property participantSubsidiaryNumber As String
|
|
Public Property companyName As String
|
|
Public Property streetAndNumber As String
|
|
Public Property countryCode As String
|
|
Public Property postalCode As String
|
|
Public Property city As String
|
|
End Class
|
|
|
|
Public Class cRelayHubDeclaration
|
|
Public Property objectIdentification As cRelayHubObjectIdentification
|
|
Public Property headerData As cRelayHubHeaderData
|
|
Public Property addresses As List(Of cRelayHubAddress)
|
|
End Class
|
|
|
|
Public Class cRelayHubAdditionalData
|
|
Public Property transaction As cRelayHubTransaction
|
|
Public Property declaration As List(Of cRelayHubDeclaration)
|
|
End Class
|
|
|
|
Public Class cRelayHubJobOrderRequest
|
|
Public Property referenceNo As String
|
|
Public Property dispatchCountry As String
|
|
Public Property destinationCountry As String
|
|
Public Property regimeType As String
|
|
Public Property customer As String
|
|
Public Property documents As List(Of cRelayHubDocument)
|
|
Public Property additionalData As cRelayHubAdditionalData
|
|
End Class
|
|
|
|
Public Class cRelayHubJobOrderResponse
|
|
Public Property id As String
|
|
Public Property status As String
|
|
Public Property createdAt As String
|
|
Public Property referenceNo As String
|
|
End Class
|
|
|
|
Public Class cRelayHubApiResult
|
|
Public Property Success As Boolean
|
|
Public Property StatusCode As Integer
|
|
Public Property Message As String ' Zusammenfassung
|
|
Public Property Details As String ' Volltext/Fehlermeldung
|
|
Public Property Data As cRelayHubJobOrderResponse ' Nur bei 201
|
|
End Class
|
|
|
|
Public Class cRelayHub_sendToRelayHub_JobOrderRequest
|
|
|
|
'Shared API_KEY = "2a6fe6bf-6547-4d56-b14a-8a18f94f9e94"
|
|
Shared API_URL = "dev-relayhub.singlewindow.io/api"
|
|
|
|
Public Shared Function query_declarations(request As cRelayHubJobOrderRequest) As cRelayHubApiResult
|
|
Dim result As New cRelayHubApiResult()
|
|
Try
|
|
' This example assumes the Chilkat API to have been previously unlocked.
|
|
' See Global Unlock Sample for sample code.
|
|
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
|
|
|
|
Dim success As Boolean
|
|
|
|
|
|
' HTTP-Client initialisieren
|
|
Dim http As New Chilkat.Http
|
|
' JSON vorbereiten
|
|
|
|
' Request-Objekt in JSON-String umwandeln
|
|
Dim jsonPayload As String = JsonConvert.SerializeObject(request)
|
|
' MsgBox(jsonPayload)
|
|
|
|
|
|
' Größe in Bytes
|
|
Dim payloadSizeBytes As Integer = System.Text.Encoding.UTF8.GetByteCount(jsonPayload)
|
|
|
|
' Größe in Kilobytes (1 KB = 1024 Bytes)
|
|
Dim payloadSizeKb As Double = payloadSizeBytes / 1024.0
|
|
|
|
Console.WriteLine("📦 Größe des JSON-Payload:")
|
|
Console.WriteLine(payloadSizeBytes & " Bytes (" & Math.Round(payloadSizeKb, 2) & " KB)")
|
|
|
|
' Anfrage senden
|
|
Dim response As Chilkat.HttpResponse = http.PostJson2(API_URL & "/job-orders/init", "application/json", jsonPayload)
|
|
|
|
If http.LastMethodSuccess <> True Then
|
|
result.Success = False
|
|
result.StatusCode = 0
|
|
result.Message = "Verbindungsfehler"
|
|
result.Details = http.LastErrorText
|
|
Return result
|
|
End If
|
|
|
|
result.StatusCode = response.StatusCode
|
|
|
|
Select Case response.StatusCode
|
|
Case 201
|
|
Try
|
|
Dim jobResponse As cRelayHubJobOrderResponse = JsonConvert.DeserializeObject(Of cRelayHubJobOrderResponse)(response.BodyStr)
|
|
result.Success = True
|
|
result.Message = "Job Order erfolgreich erstellt"
|
|
result.Data = jobResponse
|
|
result.Details = $"ID: {jobResponse.id}, Referenz: {jobResponse.referenceNo}"
|
|
Catch ex As Exception
|
|
result.Success = False
|
|
result.Message = "Antwort konnte nicht gelesen werden"
|
|
result.Details = ex.Message
|
|
End Try
|
|
|
|
Case 400 To 499
|
|
result.Success = False
|
|
result.Message = "Client-Fehler"
|
|
result.Message = "StatusCode: " & response.StatusCode
|
|
result.Details = "StatusLine: " & response.StatusLine
|
|
result.Details = "StatusText: " & response.StatusText
|
|
result.Details = "BodyStr: " & response.BodyStr
|
|
|
|
Case 500 To 599
|
|
result.Success = False
|
|
result.Message = "Server-Fehler"
|
|
result.Message = "StatusCode: " & response.StatusCode
|
|
result.Details = "StatusLine: " & response.StatusLine
|
|
result.Details = "StatusText: " & response.StatusText
|
|
result.Details = "BodyStr: " & response.BodyStr
|
|
|
|
Case Else
|
|
result.Success = False
|
|
result.Message = $"Unbekannter Fehler (Status {response.StatusCode})"
|
|
result.Details = response.BodyStr
|
|
End Select
|
|
|
|
Console.WriteLine(result.Message)
|
|
Console.WriteLine(result.Details)
|
|
|
|
Return result
|
|
|
|
|
|
Catch ex As Exception
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
|
|
End Try
|
|
Return Nothing
|
|
End Function
|
|
|
|
Function CreateSampleJobOrderRequest() As cRelayHubJobOrderRequest
|
|
Dim request As New cRelayHubJobOrderRequest With {
|
|
.referenceNo = "1001K",
|
|
.dispatchCountry = "TR",
|
|
.destinationCountry = "EN",
|
|
.regimeType = "IM",
|
|
.customer = "AVISO",
|
|
.documents = New List(Of cRelayHubDocument) From {
|
|
New cRelayHubDocument With {.type = "base64", .base64String = "SGVsbG8sIHRoaXMgaXMgYSBzYW1wbGUgYmFzZTY0IHN0cmluZy4=", .filename = "test.txt", .fileType = "invoice"},
|
|
New cRelayHubDocument With {.type = "base64", .base64String = "SGVsbG8sIHRoaXMgaXMgYSBzYW1wbGUgYmFzZTY0IHN0cmluZy4=", .filename = "test2.txt", .fileType = "atr"},
|
|
New cRelayHubDocument With {.type = "base64", .base64String = "SGVsbG8sIHRoaXMgaXMgYSBzYW1wbGUgYmFzZTY0IHN0cmluZy4=", .filename = "test3.txt", .fileType = "cmr"}
|
|
},
|
|
.additionalData = New cRelayHubAdditionalData With {
|
|
.transaction = New cRelayHubTransaction With {
|
|
.ioPartner = "VERA",
|
|
.ioDivision3 = "SUB",
|
|
.ioReference = "4803/25001763_1301250935SS/samimx"
|
|
},
|
|
.declaration = New List(Of cRelayHubDeclaration) From {
|
|
New cRelayHubDeclaration With {
|
|
.objectIdentification = New cRelayHubObjectIdentification With {
|
|
.objectName = "4803/25001763",
|
|
.objectAlias = "1349846",
|
|
.declarationType = "EZA-D"
|
|
},
|
|
.headerData = New cRelayHubHeaderData With {
|
|
.agentContact = New cRelayHubAgentContact With {
|
|
.contactPersonName = "AMANN",
|
|
.contactPersonPhoneNumber = "+49 123 456 789",
|
|
.contactPersonPosition = "Manager"
|
|
},
|
|
.declarantIsConsignee = True,
|
|
.representationRelationshipCode = "1",
|
|
.inputTaxDeduction = "true",
|
|
.procedureCodeRequested = "42",
|
|
.goodsStatus = "EU",
|
|
.costs = New List(Of cRelayHubCost) From {
|
|
New cRelayHubCost With {.costAmount = "25909.92", .costCurrency = "EUR"}
|
|
},
|
|
.transportMeansArrivalIdentity = "PB1552EC",
|
|
.transportMeansNationalityCode = "BG",
|
|
.previousAdministrativeReferenceType = "T1",
|
|
.previousAdministrativeReferenceNumber = "25TR160100001472M0",
|
|
.destinationFederalState = "07",
|
|
.destinationCountry = "DE",
|
|
.departureCountry = "TR"
|
|
},
|
|
.addresses = New List(Of cRelayHubAddress) From {
|
|
New cRelayHubAddress With {.addressType = "CZ", .participantEORI = "EORI12345", .participantSubsidiaryNumber = "001", .companyName = "SISECAM DIS TIC.A.S.", .streetAndNumber = "D-100 KARAYOLU CD.YAYLA MH.NO.70/C", .countryCode = "TR", .postalCode = "34949", .city = "TUZLA ISTANBUL"},
|
|
New cRelayHubAddress With {.addressType = "CN", .participantEORI = "EORI67890", .participantSubsidiaryNumber = "002", .companyName = "POLYNT COMPOSITES GERMANY GMBH", .streetAndNumber = "KIESELSTRASSE 2", .countryCode = "DE", .postalCode = "56357", .city = "MIEHLEN"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Return request
|
|
End Function
|
|
|
|
End Class
|
|
End Class
|