195 lines
7.1 KiB
VB.net
195 lines
7.1 KiB
VB.net
Imports System.Net
|
|
|
|
Public Class cMSEAPI
|
|
|
|
Public API_STRING
|
|
Dim API As New DataTable
|
|
Dim rest As New Chilkat.Rest
|
|
Dim SQL As New SQL
|
|
Dim apiSettingsloaded As Boolean = False
|
|
|
|
|
|
Sub New(program As String)
|
|
VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
|
|
API = SQL.loadDgvBySql("SELECT top(1) * FROM tblAPIEinstellungen WHERE api_program='" & program & "' and api_productive ='" & IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM, "0", "1") & "'", "ADMIN")
|
|
If API.Rows.Count = 0 Then
|
|
MsgBox("keine gültigen API-Einstellungen für " & program & " gefunden!")
|
|
Else
|
|
apiSettingsloaded = True
|
|
API_STRING = API.Rows(0).Item("api_url")
|
|
End If
|
|
|
|
End Sub
|
|
|
|
|
|
Public Function createJWT(ByRef failureText As String) As String
|
|
Try
|
|
|
|
Dim jwt As New Chilkat.Jwt
|
|
Dim jose As New Chilkat.JsonObject
|
|
Dim success As Boolean = jose.AppendString("alg", "HS256")
|
|
success = jose.AppendString("typ", "JWT")
|
|
|
|
' Now build the JWT claims (also known as the payload)
|
|
Dim claims As New Chilkat.JsonObject
|
|
success = claims.AppendString("iss", API.Rows(0).Item("api_user"))
|
|
Dim curDateTime As Integer = jwt.GenNumericDate(0)
|
|
|
|
' Set the timestamp defining an expiration time (end time) for the token
|
|
' to be now + 1 hour (3600 seconds)
|
|
success = claims.AddIntAt(-1, "exp", curDateTime + 3600)
|
|
|
|
jwt.AutoCompact = True
|
|
|
|
Dim strJwt As String = jwt.CreateJwt(jose.Emit(), claims.Emit(), API.Rows(0).Item("api_password"))
|
|
|
|
Debug.WriteLine(strJwt)
|
|
Return strJwt
|
|
|
|
Catch ex As WebException
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
|
|
End Function
|
|
|
|
Public Function getNewestTransactions(jwt As String, dt As DataTable) As String
|
|
Try
|
|
Dim returnText As String = ""
|
|
Dim failureText As String = ""
|
|
|
|
Dim success As Boolean
|
|
|
|
rest.VerboseLogging = True
|
|
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)
|
|
failureText = rest.LastErrorText
|
|
Return False
|
|
End If
|
|
|
|
If (success <> True) Then
|
|
Debug.WriteLine("BAFailReason: " & rest.ConnectFailReason)
|
|
Debug.WriteLine(rest.LastErrorText)
|
|
failureText = rest.LastErrorText
|
|
Return False
|
|
End If
|
|
|
|
rest.ClearAllQueryParams()
|
|
|
|
rest.AddHeader("X-API-Key", jwt)
|
|
|
|
rest.IdleTimeoutMs = 500000
|
|
|
|
Dim responseJson As String = rest.FullRequestNoBody("GET", "/v1/transactions/new")
|
|
If (rest.LastMethodSuccess <> True) Then
|
|
Debug.WriteLine(rest.LastErrorText)
|
|
rest.IdleTimeoutMs = 30000 'defualt
|
|
Return "rest.LastErrorText"
|
|
End If
|
|
|
|
If (rest.ResponseStatusCode <> 200) Then
|
|
Debug.WriteLine(rest.ResponseHeader)
|
|
Return "rest.LastErrorText"
|
|
End If
|
|
|
|
Debug.WriteLine(responseJson)
|
|
|
|
|
|
Dim json As New Chilkat.JsonObject
|
|
success = json.Load(responseJson)
|
|
If (success <> True) Then
|
|
Debug.WriteLine(json.LastErrorText)
|
|
End If
|
|
|
|
Debug.WriteLine(json)
|
|
|
|
|
|
Dim jsonArray As New Chilkat.JsonArray
|
|
success = jsonArray.Load(responseJson)
|
|
If (success <> True) Then
|
|
Return jsonArray.LastErrorText
|
|
End If
|
|
|
|
|
|
Dim num As Integer = jsonArray.Size
|
|
If num = -1 Then
|
|
Return "FEHLER"
|
|
End If
|
|
|
|
|
|
Dim j As Integer = 0
|
|
|
|
If dt IsNot Nothing And Not dt.Columns.Contains("transaction_id") Then
|
|
|
|
dt.Columns.Add("transaction_id", GetType(String))
|
|
dt.Columns.Add("partner_haulier_id", GetType(Integer))
|
|
dt.Columns.Add("supplier_name", GetType(String))
|
|
dt.Columns.Add("transaction_country", GetType(String))
|
|
dt.Columns.Add("transaction_domain", GetType(String))
|
|
|
|
dt.Columns.Add("purchase_datetime", GetType(DateTime))
|
|
dt.Columns.Add("entry_point_name", GetType(String))
|
|
dt.Columns.Add("entry_datetime", GetType(DateTime))
|
|
dt.Columns.Add("exit_point_name", GetType(String))
|
|
dt.Columns.Add("exit_datetime", GetType(DateTime))
|
|
|
|
dt.Columns.Add("device_product_type", GetType(String))
|
|
dt.Columns.Add("device_product_number", GetType(String))
|
|
dt.Columns.Add("transaction_product_id", GetType(Integer))
|
|
dt.Columns.Add("transaction_product_name", GetType(String))
|
|
dt.Columns.Add("license_plate_number", GetType(String))
|
|
|
|
dt.Columns.Add("vehicle_country", GetType(Integer))
|
|
dt.Columns.Add("original_currency", GetType(String))
|
|
dt.Columns.Add("original_net_amount", GetType(String))
|
|
dt.Columns.Add("original_gross_amount", GetType(String))
|
|
dt.Columns.Add("original_vat_percentage", GetType(Boolean))
|
|
|
|
dt.Columns.Add("transaction_net_amount", GetType(Integer))
|
|
dt.Columns.Add("transaction_gross_amount", GetType(String))
|
|
dt.Columns.Add("exempt_amount", GetType(String))
|
|
dt.Columns.Add("msts_fee_amount", GetType(String))
|
|
dt.Columns.Add("msts_vat_amount", GetType(Boolean))
|
|
|
|
dt.Columns.Add("msts_vat_percentage", GetType(Integer))
|
|
dt.Columns.Add("total_gross_amount", GetType(String))
|
|
dt.Columns.Add("transaction_status", GetType(String))
|
|
dt.Columns.Add("original_transaction_id", GetType(String))
|
|
dt.Columns.Add("credit_comment", GetType(Boolean))
|
|
dt.Columns.Add("loading_date", GetType(Date))
|
|
dt.Columns.Add("batch_seq_nr", GetType(Integer))
|
|
|
|
|
|
While j < num
|
|
|
|
Dim transaction As Chilkat.JsonObject = jsonArray.ObjectAt(j)
|
|
|
|
Dim R As DataRow = dt.NewRow
|
|
'R("id") = groups.IntOf("id")
|
|
'R("name") = groups.StringOf("name")
|
|
'R("groupType") = groups.StringOf("groupType")
|
|
'R("info") = groups.StringOf("info")
|
|
|
|
dt.Rows.Add(R)
|
|
j = j + 1
|
|
End While
|
|
|
|
|
|
dt = dt.DefaultView.ToTable()
|
|
|
|
End If
|
|
|
|
|
|
|
|
|
|
Catch ex As WebException
|
|
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
|
|
End Try
|
|
|
|
End Function
|
|
|
|
End Class |