· 6 years ago · Oct 04, 2019, 06:56 AM
1Imports System
2Public Module modmain
3 Sub Main()
4 ' add your data here:
5 Dim userId As String = "" 'login name / your email
6 Dim password As String = "" 'your API key/password
7 Dim version As String = "1.0"
8 Dim action As String = "ProductCreate"
9 Dim url As String = ""
10 'e.g.: "https://sellercenter-api-linio-co.sellercenter.net/"
11 Dim result As String
12
13 ' this is where the magic happens:
14 result = generateRequest(url, userId, password, version, action)
15 Console.WriteLine (result)
16 End Sub
17
18 Function generateRequest(Url As String, user As String, key as String, version As String, action As
19String) As String
20 Dim timeStamp as String = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss-0000")
21 ' ATTENTION: parameters must be in alphabetical order
22 Dim stringToHash As String = _
23 "Action=" + URLEncode(action) + _
24 "&Timestamp=" + URLEncode(timeStamp) + _
25 "&UserID=" + URLEncode(user) + _
26 "&Version=" + URLEncode(version)
27 Dim hash As String = HashString(stringToHash, key)
28 ' ATTENTION: parameters must be in alphabetical order
29 Dim request As String = _
30 "Action=" + URLEncode(action) + _
31 "&Signature=" + URLEncode(hash) + _
32 "&Timestamp=" + URLEncode(timeStamp) + _
33 "&UserID=" + URLEncode(user) + _
34 "&Version=" + URLEncode(version)
35 return url + "?" + request
36 End Function
37
38 ' use this function instead of HttpServerUtility.UrlEncode()
39 ' because we need uppercase letters
40 Function URLEncode(EncodeStr As String) As String
41 Dim i As Integer
42 Dim erg As String
43 erg = EncodeStr
44 erg = Replace(erg, "%", Chr(1))
45 erg = Replace(erg, "+", Chr(2))
46 For i = 0 To 255
47 Select Case i
48 ' *** Allowed 'regular' characters
49 Case 37, 43, 45, 46, 48 To 57, 65 To 90, 95, 97 To 122, 126
50 Case 1 ' *** Replace original % erg = Replace(erg, Chr(i), "%25")
51 Case 2 ' *** Replace original + erg = Replace(erg, Chr(i), "%2B")
52 Case 32 erg = Replace(erg, Chr(i), "+")
53 Case 3 To 15 erg = Replace(erg, Chr(i), "%0" & Hex(i))
54 Case Else
55 erg = Replace(erg, Chr(i), "%" & Hex(i))
56 End Select
57 Next
58 return erg
59 End Function
60
61 Function HashString(ByVal StringToHash As String, ByVal HachKey As String) As String
62 Dim myEncoder As New System.Text.UTF8Encoding
63 Dim Key() As Byte = myEncoder.GetBytes(HachKey)
64 Dim Text() As Byte = myEncoder.GetBytes(StringToHash)
65 Dim myHMACSHA256 As New System.Security.Cryptography.HMACSHA256(Key)
66 Dim HashCode As Byte() = myHMACSHA256.ComputeHash(Text)
67 Dim hash As String = Replace(BitConverter.ToString(HashCode), "-", "")
68 Return hash.ToLower
69 End Function
70End Module