Форум программистов, компьютерный форум, киберфорум
PHP: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 2

Отправка всех товаров в json-формате через PHP

07.10.2018, 11:06. Показов 821. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем!
Прошу помочь с решением одной задачи, уже второй день не знаю, что делать.
Есть строка вида
HTML5
1
http://test3.ru/novonovo.php?InvoiceId=105050&Amount=7450&invoice=Tovar1:2:100:200//Tovar2:4:40:160//Tovar3:5:103:515
Вытаскиваю из нее все данные. Разбил как мне нужно. Больше всего интересуют Tovar1, Tovar2, Tovar3.
Необходимо запросом в json формате отправить эти данные. Получается отправить только один товар, а не все три.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
$InvoiceId = (int)$_GET['InvoiceId'];
$amount=(float)$_GET['Amount'];
$invoice=(string)$_GET['invoice'];
 
 
 
 
$_GET['invoice'] = strip_tags( urldecode($_GET['invoice']) );
    if(empty($_GET['invoice']))
        return;
 
$_GET['invoice'] = explode('//',$_GET['invoice']);
foreach($_GET['invoice'] as $key => $val){
 
        //отделяем товар от количества
        $valArr = explode(':',$val);
 
        $purchases[$key][0] = $valArr[0];
        $purchases[$key][1] = $valArr[1];
        $purchases[$key][2] = $valArr[2];
        $purchases[$key][3] = $valArr[3];
        
        
        echo $valArr[0];
        echo " ";
        echo " ";
        echo $valArr[1];
        echo " ";
        echo " ";
        echo $valArr[2];
        echo " ";
        echo " ";
        echo $valArr[3];
        echo " ";
        echo " ";
        echo "<hr>";
    
        
        
        
    }
    
    
 
 
 
$curl = curl_init();
 
curl_setopt_array($curl, array(
  CURLOPT_URL => "ссылку убрал, чтобы не отправлялись запросы просто так",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_SSL_VERIFYPEER => false,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\r\n\"amount\": \"".$amount."\",\r\n\"InvoiceId\": \"".$InvoiceId."\",\r\n\"Currency\": \"RUB\",\r\n\"SendEmail\": true,\r\n\"Description\": \"Оплата на сайте\",\r\n\"JsonData\": \"{\\\"Payments\\\":\r\n{\\\"customerReceipt\\\":\r\n{\\\"Items\\\":\r\n[\r\n{\\\"label\\\":\\\"".$valArr[0]."\\\",\r\n\\\"price\\\":".$valArr[2].",\r\n\\\"quantity\\\":".$valArr[1].",\r\n\\\"amount\\\":".$valArr[3].",\r\n\\\"vat\\\":18,\r\n\\\"method\\\":0,\r\n\\\"object\\\":0,\r\n\\\"measurementUnit\\\":\\\"\\u0448\\u0442\\\"}],\r\n\\\"taxationSystem\\\":0,\r\n\\\"email\\\":\\\"cherepushka@mail.ru\\\",\r\n\\\"phone\\\":\\\"\\\",\r\n\\\"amounts\\\":{\\\"electronic\\\":".$amount."}}}}\"\r\n}",
  CURLOPT_HTTPHEADER => array(
    
  ),
));
 
$response = curl_exec($curl);
$err = curl_error($curl);
 
curl_close($curl);
 
if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

Пример запроса из документации

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"Items": [//товарные позициии
                {
                    "label": "Наименование товара 1", //наименование товара
                    "price": 100.00, //цена
                    "quantity": 1.00, //количество
                    "amount": 100.00, //сумма
                    "vat": 18, //ставка НДС
                    
                }, {
                    "label": "Наименование товара 2", //наименование товара
                    "price": 200.00, //цена
                    "quantity": 2.00, //количество
                    "amount": 300.00, //сумма
                    "vat": 18, //ставка НДС
                    
                }, {
                    "label": "Наименование товара 3", //наименование товара
                    "price": 300.00, //цена
                    "quantity": 3.00, //количество
                    "amount": 900.00, //сумма
                    "vat": 18, //ставка НДС
                    
                }
            ],
            "taxationSystem": 0, //
            "email": "user@example.com", //
            "phone": "", //
            "amounts":
            {
                "electronic": 9.00, // 
                "advancePayment": 0.00, // 
                "credit": 0.00, // 
                "provision": 0.00 // 
            }
        }
Spasibo
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.10.2018, 11:06
Ответы с готовыми решениями:

Отправка данных в формате JSON
Как с сервера отправить данные клиенты в формате json? string reply = &quot;Привет&quot;; string serialized =...

Отправка ответа в json формате от службы asmx
Imports System.Web.Services Imports System.Web.Services.Protocols Imports System.ComponentModel Imports System.Web.Script.Services ...

Передача данных из PHP в JS в формате json
Извиняюсь за два вопроса в одной теме, но они небольшие. 1) Почему при указание dataType у меня не получается получить данные? Не...

1
98 / 64 / 36
Регистрация: 04.12.2018
Сообщений: 158
05.12.2018, 09:29
Цитата Сообщение от cherepushka Посмотреть сообщение
Получается отправить только один товар
Потому что в CURLOPT_POSTFIELDS применяется $valArr вместо $purchases. Смотрим строку 58. И даже для одного товара строка непомерно сложная. Логичнее собирать значения в двумерный массив, сразу задавая нужные ключи:

PHP
1
2
3
4
        $purchases[$key]['label'] = $valArr[0];
        $purchases[$key]['quantity'] = $valArr[1];
        $purchases[$key]['price'] = $valArr[2];
        $purchases[$key]['amount'] = $valArr[3];
Далее можно не клеить JSON руками, а составить требуемую по документации структуру $data, при этом код будет в несколько строк, так удобнее читать:
PHP
1
2
3
4
5
6
$data = [
    'Items' => $purchases,
    'taxationSystem' => 0,
    'email' => 'user@example.com',
. . .
];
...и потом
PHP
1
CURLOPT_POSTFIELDS => json_encode($data),
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.12.2018, 09:29
Помогаю со студенческими работами здесь

Передача переменных из JS в PHP в формате JSON
Здравствуйте, мне нужно передать данные на сервер в формате JSON и потом полученный результат вернуть обратно... Вот кусочек кода простой...

JavaScript не получает массивы PHP в формате JSON
Добрый день форумчане, Создал две файлы: index.php (клиентская сторона) и server.php (сервер). Код следующая: Клиентская сторона: ...

Необходимо отправить данные БД в формате json из PHP в JS (ajax)
$.ajax({ type: 'POST', url: 'index.php', dataType: 'JSON', data: ({ Tabl: 'Tab1' }), error: function (xhr,...

Передать массив в формате JSON из AJAX в PHP и обратно
Здравствуйте! Помогите пожалуйста разобраться. Нужно передать массив из AJAX в PHP, а потом другой массив из PHP обратно в AJAX. ...

Ajax берет запрос из php файла в формате JSON и возвращает undefined
&lt;?php header(&quot;Access-Control-Allow-Origin: *&quot;); $mysqli = mysqli_connect('localhost', 'root', '', 'kursovaya'); if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru