Имя: Пароль:
1C
1С v8
ХешСумма в POST запрос
0 OnePrg
 
22.06.22
14:06
СтруктураPOSТ_Запрос = Новый Структура;
    
СтруктураPOSТ_Запрос.Вставить("request",    СтрокаJSON_Запрос);
    
ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5);
ХешированиеДанных.Добавить(СтрокаJSON_Запрос+api_ключ);
СтруктураPOSТ_Запрос.Вставить("sign",        ХешированиеДанных.ХешСумма);    
    
ЗаписатьJSON(ЗаписьJSON_POSТ_Запрос,СтруктураPOSТ_Запрос);   <---------- Передано значение недопустимого типа
1 arsik
 
гуру
22.06.22
14:08
2 OnePrg
 
22.06.22
14:11
СтруктураPOSТ_Запрос.Вставить("sign",        СокрЛП(ХешированиеДанных.ХешСумма));   ?
3 arsik
 
гуру
22.06.22
14:16
Может так?
СтрЗаменить(НРег(СокрЛП(Хеш.ХешСумма))," ","")
4 OnePrg
 
22.06.22
14:18
(3) попробую
5 Garykom
 
гуру
22.06.22
14:23
XMLСтрока(ХешированиеДанных.ХешСумма)
6 arsik
 
гуру
22.06.22
14:29
(5) Тут ты неправ
7 OnePrg
 
22.06.22
14:35
ЗаписьJSON_Запрос = Новый ЗаписьJSON;
ЗаписьJSON_Запрос.ПроверятьСтруктуру = Ложь;
ЗаписьJSON_Запрос.УстановитьСтроку();
ЗаписьJSON_Запрос.ЗаписатьНачалоМассива();
    
СтруктураЗаказа = Новый Структура;
СтруктураЗаказа.Вставить("product_order","55555");             //(required) – номер заказа
СтруктураЗаказа.Вставить("contact","Ивано");                 //(required)  – фио получателя
СтруктураЗаказа.Вставить("tel","0502224455");                     // (required) – телефон

.....

МассивЗаказы = Новый Массив;
МассивЗаказы.Добавить(СтруктураЗаказа);
    
МассивПараметры = Новый Массив;
МассивПараметры.Добавить(МассивЗаказы);
    
СтруктураЗапроса = Новый Структура;
СтруктураЗапроса.Вставить("client",        id_клиента);
СтруктураЗапроса.Вставить("object",        "order");    
СтруктураЗапроса.Вставить("method",        "create");
СтруктураЗапроса.Вставить("parameters",    МассивПараметры);
    
ЗаписатьJSON(ЗаписьJSON_Запрос,СтруктураЗапроса);
ЗаписьJSON_Запрос.ЗаписатьКонецМассива();
СтрокаJSON_Запрос = ЗаписьJSON_Запрос.Закрыть();           <--- вот тут нормальная строка JSON
    
    
ЗаписьJSON_POSТ_Запрос = Новый ЗаписьJSON;
ЗаписьJSON_POSТ_Запрос.ПроверятьСтруктуру = Ложь;
ЗаписьJSON_POSТ_Запрос.УстановитьСтроку();
ЗаписьJSON_POSТ_Запрос.ЗаписатьНачалоМассива();
    
СтруктураPOSТ_Запрос = Новый Структура;
СтруктураPOSТ_Запрос.Вставить("request",    СтрокаJSON_Запрос);
    
ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5);
ХешированиеДанных.Добавить(СтрокаJSON_Запрос+api_ключ);
СтруктураPOSТ_Запрос.Вставить("sign",СтрЗаменить(НРег(СокрЛП(ХешированиеДанных.ХешСумма))," ",""));    
    
ЗаписатьJSON(ЗаписьJSON_POSТ_Запрос,СтруктураPOSТ_Запрос);
ЗаписьJSON_POSТ_Запрос.ЗаписатьКонецМассива();
POSТ_Запрос = ЗаписьJSON_POSТ_Запрос.Закрыть();    <---- а вот тут добавляет по всей строке символы "\r\n{\r\n\"
8 arsik
 
гуру
22.06.22
14:39
(7) ЗаписьJSON_POSТ_Запрос.УстановитьСтроку();
9 OnePrg
 
22.06.22
14:43
(8) не понял
10 unenu
 
22.06.22
14:46
(8) СП: В "JSON могут быть записаны значения следующих типов: Неопределено, Null, Булево, Число, Строка, Дата, Тип, УникальныйИдентификатор, ДвоичныеДанные, ХранилищеЗначения, ОписаниеТипов, а также ссылки объектов данных и сами объекты данных, наборы записей регистров, менеджер значения константы. В дальнейшем список может пополняться.
При попытке записи значения неподходящего типа будет вызвано исключение."
11 arsik
 
гуру
22.06.22
14:47
(7) Это вообще какое то издевательство на работой с json в 1с. Иди читай про json в 1с.
12 unenu
 
22.06.22
14:49
(11) у любого программиста обязательно наличие кррепких нервов и желание много и вдумчиво читать.
если вам ближе истерики, то еще не поздно попробовать себе на сцене.
13 Garykom
 
гуру
22.06.22
15:05
Достаточно
СтруктураPOSТ_Запрос.Вставить("sign", ""+ХешированиеДанных.ХешСумма);
Но вероятно пробелы надо будет убрать, зависит от сервера
14 Garykom
 
гуру
22.06.22
15:06
(13)+ Для надежности лучше
СтруктураPOSТ_Запрос.Вставить("sign", XMLСтрока(ХешированиеДанных.ХешСумма));

Ив целом все строковые лучше оборачивать в XMLСтрока, хз что там внутри
15 arsik
 
гуру
22.06.22
15:50
(14) XMLСтрока(ХешированиеДанных.ХешСумма) - бинарные данные неправильно интерпретирует
16 OnePrg
 
22.06.22
16:09
Разобрался. Всем спасибо!


ЗаписьJSON_Запрос = Новый ЗаписьJSON;
ЗаписьJSON_Запрос.ПроверятьСтруктуру = Ложь;
ЗаписьJSON_Запрос.УстановитьСтроку();
ЗаписьJSON_Запрос.ЗаписатьНачалоМассива();
    
СтруктураЗаказа = Новый Структура;
СтруктураЗаказа.Вставить("product_order","55555");             //(required) – номер заказа
СтруктураЗаказа.Вставить("contact","Иванов");                 //(required)  – фио получателя

...

МассивЗаказы = Новый Массив;
МассивЗаказы.Добавить(СтруктураЗаказа);
    
МассивПараметры = Новый Массив;
СтруктураЗаказы = Новый Структура;
СтруктураЗаказы.Вставить("orders",СтруктураЗаказа);
МассивПараметры.Добавить(СтруктураЗаказы);
    
СтруктураЗапроса = Новый Структура;
СтруктураЗапроса.Вставить("client",        id_клиента);
СтруктураЗапроса.Вставить("object",        "order");    
СтруктураЗапроса.Вставить("method",        "create");
СтруктураЗапроса.Вставить("parameters",    МассивПараметры);
    
ЗаписатьJSON(ЗаписьJSON_Запрос,СтруктураЗапроса);
ЗаписьJSON_Запрос.ЗаписатьКонецМассива();
СтрокаJSON_Запрос = ЗаписьJSON_Запрос.Закрыть();
    
ЗаписьJSON_POSТ_Запрос = Новый ЗаписьJSON;
ЗаписьJSON_POSТ_Запрос.ПроверятьСтруктуру = Ложь;
ЗаписьJSON_POSТ_Запрос.УстановитьСтроку();
ЗаписьJSON_POSТ_Запрос.ЗаписатьНачалоМассива();
    
СтруктураPOSТ_Запрос = Новый Структура;
    
СтруктураPOSТ_Запрос.Вставить("request",    СтруктураЗапроса);
    
ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5);
ХешированиеДанных.Добавить(СтрокаJSON_Запрос+api_ключ);
СтруктураPOSТ_Запрос.Вставить("sign",СтрЗаменить(НРег(СокрЛП(ХешированиеДанных.ХешСумма))," ",""));    
    
ЗаписатьJSON(ЗаписьJSON_POSТ_Запрос,СтруктураPOSТ_Запрос);
ЗаписьJSON_POSТ_Запрос.ЗаписатьКонецМассива();
POSТ_Запрос = ЗаписьJSON_POSТ_Запрос.Закрыть();
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший