Как подписать POST-запрос с помощью CoinEX API - PullRequest
0 голосов
/ 28 декабря 2018

Я могу подписать каждый отдельный вызов API, кроме ордера на покупку / продажу.Это единственный вызов с запросом JSON.Все остальные звонки имеют форму URL в кодировке.Всегда возвращается «ошибка подписи» или «невозможно сериализовать в JSON».

Конечная точка информации о балансе «/ баланс / информация»

Конечная точка ордера размещения «/ ордер / лимит»

ref: Документ CoinEx API doc

Ключ API: 09D8485F15B145F5B48D79B8E0FF4C8D

Секрет API: 2F27E476B09140AA8E0B0F80CA4832A5F013 * 1401мой ключ.Я удалю его после, но ключ / секрет действителен

 Private CoinEXAPIurl As String = "https://api.coinex.com/v1"

     Private Function PrivateApiAsync(ByVal requestEndPoint As String, ByVal RequestType As HttpMethod, ByVal Params As Dictionary(Of String, String), Optional ByVal IncludeST As Boolean = True) As CallResult
                Dim ErrMSG As String = "Unknown Error"
                Try
                    Dim xhttp As New HttpClient()
                    Dim request As New HttpRequestMessage
                    Dim sign As String = ""
                    Dim Parameters As String = ""
                    Dim tonce = Int(DateTime.Now.ToUniversalTime.Subtract(New DateTime(1970, 1, 1)).TotalMilliseconds)
                    Dim newparam As New Dictionary(Of String, String)
                    newparam.Add("access_id", _Credentials.APIKey)
                    For Each entry In Params
                        newparam.Add(entry.Key, entry.Value)
                    Next
                    newparam.Add("tonce", tonce)

                    Dim FormURLEncodedSTR = New FormUrlEncodedContent(newparam).ReadAsStringAsync.Result
                    sign = GetHash(FormURLEncodedSTR & "&" & "secret_key=" & _Credentials.APISecret)

                    With request
                        .Headers.Add("authorization", sign)
                        .Headers.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36")
                        .Method = RequestType
                        If RequestType = HttpMethod.Post Then
                            .RequestUri = New Uri(CoinEXAPIurl & requestEndPoint)
                            .Content = New StringContent(Json_.Serialize(newparam), Encoding.UTF8, "application/json")
                        Else
                            .RequestUri = New Uri(CoinEXAPIurl & requestEndPoint & "?" & FormURLEncodedSTR)
                        End If
                    End With

                    Dim result = xhttp.SendAsync(request).Result
                    Dim xcontent = result.Content.ReadAsStringAsync.Result
                    Dim jData = Json_.DeserializeObject(xcontent)
                    Dim Success As Boolean = False
                    If jData("code") <> 0 Then
                        ErrMSG = jData("message")
                    Else
                        Success = True
                        Return New CallResult With {.Data = Json_.Serialize(jData("data")), .ErrorMSG = "", .Success = Success}
                    End If
                Catch ex As Exception
                    Return New CallResult With {.Data = "", .ErrorMSG = ex.Message.ToString, .Success = False}
                End Try
                Return New CallResult With {.Data = "", .ErrorMSG = ErrMSG, .Success = False}
            End Function
...