Я работаю над приложением PHP, интегрированным в магазин. В основном информация о продукте должна быть синхронизирована между «магазином» и приложением. Внутри продуктов у нас есть варианты (аналогичные подпродуктам). Shopify использовался для отправки веб-перехватчиков с данными json, чтобы сообщить об этих изменениях. Каждый раз, когда я изменяю / добавляю / удаляю вариант, shopify отправляет веб-перехватчик «обновления продукта», который изменяет только содержимое json. Это пример:
{
...
"variants": [{
"id": 279656846,
"position": 1,
"price": "80.00",
"product_id": 123022448,
"sku": "1000",
"option1": "30 cm",
"inventory_quantity": 10
},
{
"id": 291321287,
"position": 2,
"price": "15.00",
"product_id": 123022448,
"sku": "1003",
"option1": "15 cm",
"inventory_quantity": 23
}],
...
}
Если я создаю новый вариант, он отправляет мне «обновление продукта» с текущим статусом и содержит новый вариант в json. Точно так же, если я удаляю, он отправляет мне только «обновление продукта» с текущим статусом, но без удаленного варианта в json.
Я создал следующий код, который может правильно обрабатывать случай изменения / добавления:
foreach ($jsonArr['variants'] as $rows) {
$variant = $rows['option1'];
$sku = $rows['sku'];
$salesPrice = $rows['price'];
$stockQty = $rows['inventory_quantity'];
$idVar = $rows['id'];
$dupchk = mysql_query("SELECT * FROM `variants` WHERE `idVar`='$idVar'",$con) or die (mysql_error());
$num_rows = mysql_num_rows($dupchk);
if ($num_rows > 0) {
$sql = "UPDATE `variants` SET `variant`='$variant',`sku`='$sku',`salesPrice`='$salesPrice',`stockQty`='$stockQty' WHERE `idVar`='$idVar'";
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
}
else {
$sql = "INSERT INTO `variants`(`idVariant`, `idProduct`, `variant`, `sku`, `salesPrice`, `stockQty`, `comments`, `idVar`) VALUES ('','$idProduct','$variant','$sku','$salesPrice','$stockQty','','$idVar')";
if (!mysql_query($sql,$con)) {
die('Error: ' . mysql_error());
}
}
}
Проблема в том, что этот код не обрабатывает вариант удаления. Я пытался это сделать, но до сих пор создавал только "большой сбивающий с толку" код, который не мог работать. Пожалуйста, посоветуйте, есть ли у вас какие-либо предложения, как с этим справиться.