Разбор JSON WooCommerce Webhooks с использованием объекта PHP - массив


Я создаю сценарий PHP, который получает перехватчики от WooCommerce, создает PDF-файл с полученными данными и отправляет электронное письмо, но у меня проблема с анализом данных JSON ...
Это JSON:

 {"id":128705,"parent_id":0,"number":"128705","order_key":"wc_order_5ae3648deddcd","created_via":"checkout","version":"3.3.5","status":"on-hold","currency":"EUR","date_created":"2018-04-27T19:57:33","date_created_gmt":"2018-04-27T17:57:33","date_modified":"2018-04-27T19:57:34","date_modified_gmt":"2018-04-27T17:57:34","discount_total":"0","discount_tax":"0","shipping_total":"0","shipping_tax":"0","cart_tax":"0","total":"50","total_tax":"0","prices_include_tax":false,"customer_id":7,"customer_ip_address":"79.43.191.213","customer_user_agent":"mozilla/5.0 (x11; linux x86_64) applewebkit/537.36 (khtml, like gecko) chrome/62.0.3202.89 safari/537.36","customer_note":"","billing":{"first_name":"Nicola","last_name":"Giada","company":"","address_1":"V","address_2":"","city":"CANIC","state":"RA","postcode":"48018","country":"IT","email":"[email protected]","phone":"30002222"},"shipping":{"first_name":"","last_name":"","company":"","address_1":"","address_2":"","city":"","state":"","postcode":"","country":""},"payment_method":"bacs","payment_method_title":"Bonifico bancario","transaction_id":"","date_paid":null,"date_paid_gmt":null,"date_completed":null,"date_completed_gmt":null,"cart_hash":"dba69b53a4a39c58c83b3e557e818bb7","meta_data":[{"id":1383502,"key":"_billing_data","value":"00/00/1990"},{"id":1383503,"key":"_billing_codice_fiscale","value":"GDDLLLL333232"},{"id":1383504,"key":"_billing_socio","value":"Sono gi\u00e0 Socio"},{"id":1383505,"key":"_billing_dati","value":"Acconsento"},{"id":1383506,"key":"billing_data","value":"00/00/1990"},{"id":1383507,"key":"billing_codice_fiscale","value":"GDDLLLL333232"},{"id":1383508,"key":"billing_socio","value":"Sono gi\u00e0 Socio"},{"id":1383509,"key":"billing_dati","value":"Acconsento"}],"line_items":[{"id":94,"name":"Object buyed XXXX 2018","product_id":128683,"variation_id":128684,"quantity":1,"tax_class":"","subtotal":"40","subtotal_tax":"0","total":"40","total_tax":"0","taxes":[],"meta_data":[{"id":883,"key":"corso","value":"Object NUED"}],"sku":"","price":40},{"id":95,"name":"SECOND OBJECT","product_id":126454,"variation_id":0,"quantity":1,"tax_class":"","subtotal":"10","subtotal_tax":"0","total":"10","total_tax":"0","taxes":[],"meta_data":[],"sku":"","price":10}],"tax_lines":[],"shipping_lines":[],"fee_lines":[],"coupon_lines":[],"refunds":[]} 

И это часть моего PHP, где я получаю информацию из JSON:

/* Gestione dei dati via JSON */
$year = date('Y'); //Anno validità associativa
$secret = 'xxxxx'; //La chiave per il Webhook generata da Woocommerce 
$JSON = file_get_contents('php://input');
$data = json_decode($JSON);
$sig = base64_encode(hash_hmac('sha256', $data, $secret, true));
if ($sig != $header_sig) print 'Firma invalida'; //Controllo la firma di sicurezza. Mettere die invece di print.

$nome = $data->billing->first_name;
$cognome = $data->billing->last_name;
$nato_luogo = '';
$prov = $data->billing->state;
$cap = $data->billing->postcode;
$indirizzo = $data->billing->address_1;
//$indirizzo .= $data->billing->address_2;
$tel = $data->billing->phone;
$email = $data->billing->email;
$data = date('d/m/Y'); //Data sottoscrizione scheda
$residenza = $data->billing->city;

//Valori dentro i meta_data personalizzati
foreach ($data->meta_data as $datum) {
if ($datum->key == "_billing_data") $nato_data = $datum->value; 
if ($datum->key == "_billing_codice_fiscale") $CF = $datum->value; 
if ($datum->key == "_billing_socio") $checksocio = $datum->value; 
}
if ($check_socio == 'S\u00ec') print 'Giá socio';

Моя проблема заключается в получении значений внутри «meta_data»: foreach вообще не работает.

Спасибо.

Что именно заставляет вас сказать, что он «вообще не работает»? Что у вас ожидать должно случиться? Что происходит фактически? Какую отладку вы сделали? Судя по быстрому тесту, сам foreach работает нормально.

Patrick Q 27.04.2018 20:22
$data = date('d/m/Y'); //Data sottoscrizione scheda TYPO
Patrick Q 27.04.2018 20:23

3 переменные, которые я должен получить внутри foreach ($ nato_data, $ CF, $ checkocio), равны NULL, кажется, я действительно неправильно разбираю код JSON ... но я не могу понять почему. Остальное работает глобально, но foreach не извлекает из JSON то, что я хочу.

brambil 27.04.2018 20:29

См. Мой второй комментарий.

Patrick Q 27.04.2018 20:31

@PatrickQ ... это типографский итальянский стиль для печати данных .. ДД / ММ / ГГГГ ...

brambil 27.04.2018 20:32

Проблема в для каждого, наверное (точно) я ошибаюсь ... но я не мог понять, какой именно.

brambil 27.04.2018 20:36

Скажу еще раз, посмотрите мой второй комментарий. Действительно посмотрите на это. Видите переменную, которую вы используете? Вы понимаете, почему foreach ($data->meta_data as $datum) после этого не работает?

Patrick Q 27.04.2018 20:40

@PatrickQ Я идиот. Большое спасибо.

brambil 28.04.2018 09:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
8
429
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка заключалась в присвоении имени переменной $ data ... TYPO error. Спасибо.

Другие вопросы по теме