Передача JSON urlencode через restsharp
У меня есть этот код, который я пытаюсь использовать для связи с API через RestSharp.
const string task = "pay"; const string command_api_token = "9ufks6FjffGplu9HbaN7uq6XXPPVQXBP"; const string merchant_email_on_voguepay = "mymail@mail.com"; Random rnd = new Random(); string refl = DateTime.Now + rnd.Next(0,9999999).ToString(); byte[] hash_target = Encoding.Default.GetBytes(command_api_token + task + merchant_email_on_voguepay + refl); string hashD = BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(hash_target)).Replace("-", string.Empty).ToUpper(); var keyValues = new Dictionary<string, string> { { "task", "pay"}, { "merchant", "3333-4444"}, { "ref",refl}, { "hash",hashD}, { "amount", "20"}, { "seller", "seller@mail.com"}, { "remarks", "payment"}, }; //serialization using Newtonsoft JSON string json = JsonConvert.SerializeObject(keyValues); //url encode the json var postString = Server.UrlEncode(json); //calling API with Restsharp var client = new RestClient("https://voguepay.com/api/"); var request = new RestRequest(Method.POST); request.AddParameter("json",json); IRestResponse response = client.Execute(request); Textbox1.Text = response.Content;
Я думаю, что расположение моего кода на самом деле не в порядке, потому что я продолжаю получать сообщение об ошибке при каждом моем движении.
Если я попытаюсь опубликовать его так, как это указано выше, я получу
"ответ": "X006","описание": "недопустимый хэш"...
Если попытаться получить "в URL закодировать в JSON" участвующие в "вызов API с помощью Restsharp", Я получаю сообщение об ошибке как
"ответ": "X001","описание": "неверный идентификатор продавца"...
Я думаю, что я не правильно расставляю вещи, может кто-нибудь посмотреть на мою работу и указать, в чем может быть проблема с этим кодом?
Что я уже пробовал:
Я попробовал изменить код, чтобы посмотреть, не исчезнет ли ошибка, но она все равно осталась
Richard MacCutchan
Проблема не в вашем коде, а в плохих значениях, которые вы отправляете, как показано в сообщениях об ошибках. Вам необходимо обратиться за помощью в службу поддержки voguepay.
Graeme_Grant
Использует ли API OAuth 1.0 a? Похоже, что так... [edit] проверьте кодировку, которую вы используете. Большинство ожидает UTF8.
Kornfeld Eliyahu Peter
Понятно, что проблема с тем, как вы вычисляете хэш...
Проблема в том, что документация API не является общедоступной, поэтому вы по большей части остаетесь сами по себе...
Пожалуйста, вернитесь к документации и перечитайте ту часть, где говорится о хэше... Если вы можете, вы можете поделиться им здесь... Кто-то может заметить проблему...