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

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

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

Author24 — интернет-сервис помощи студентам
Добрый день всем!
Прошу помочь с решением одной задачи, уже второй день не знаю, что делать.
Есть строка вида
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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2018, 11:06
Ответы с готовыми решениями:

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

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

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

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

1
98 / 64 / 36
Регистрация: 04.12.2018
Сообщений: 158
05.12.2018, 09:29 2
Цитата Сообщение от 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
05.12.2018, 09:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2018, 09:29
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru