· 6 years ago · Aug 15, 2019, 04:34 PM
1<?php
2include_once plugin_dir_path( __FILE__ ) . 'include/business_ru_api.php';
3
4function initial_api_settings()
5{
6 //params for api
7 $app_id = "943908";
8 $address = 'https://a93803.business.ru';
9 $secretKey = "cOwXG6CeDjjCad1N8cmIPNka8eBwbDpe"; // секретный ключ
10
11 $api = new Business_ru_api_lib( $app_id, "", $address );
12 $api->setSecret($secretKey); // устанавливаем секретный ключ
13 $api->repair(); //устанавливаем token
14
15 return $api;
16}
17
18function api_sync_product($product)
19{
20 $table_posts = "goods"; //с какой таблицей в api работаем
21
22 if (empty($product)) {
23 return false;
24 }
25
26
27 $api = initial_api_settings();
28
29 $isCreateProduct = true; //создавать ли товар
30 $page = 1;
31
32 $postMetaVolume = get_post_meta($product->get_id(), "attribute_pa_volume");
33 $volume = $postMetaVolume!= null
34 ? preg_replace("/[^0-9\.]/", '', $postMetaVolume[0])
35 : "";
36
37 $new_product_params = [
38 "name" => $product->get_name(),
39 "cost" => get_post_meta($product->get_id(), "_price")[0],
40 "code" => $product->get_id(), //Идентификатор товара
41 'part' => $product->get_sku(), //Артикул
42 'volume' => $volume,
43 'images' => [
44 [
45 'name' => 'american-crew-beard-serum-syvorotka-dlya-borody-50-ml7240169000.250x250.jpg',
46 'url' => 'https://a93803.class365.ru/file/get/?id=14020'
47 ]
48 ]
49 ];
50
51 if ($product->is_type('simple')) {
52 do {
53 $goods = $api->request("get", $table_posts, ["page" => $page++]); //api
54
55 if ($goods["status"] == "ok") {
56
57 // $image_path = explode("/", get_the_post_thumbnail_url($product->get_id(), 'thumbnail'));
58
59 foreach ($goods["result"] as $good) {
60 if (is_null($good["part"])) {
61 if ($good["code"] == $product->get_id()) {
62 $isCreateProduct = false;
63 break;
64 } elseif ($good["name"] == $new_product_params["name"]) {
65 $isCreateProduct = false;
66 break;
67 } elseif ($good["cost"] == $new_product_params["cost"]) {
68 $isCreateProduct = false;
69 break;
70 }
71 } else {
72 if ($good["part"] == $new_product_params["part"]) {
73 $isCreateProduct = false;
74 break;
75 }
76 }
77 }
78 }
79 } while (count($goods['result']) > 0); // делаем это до тех пор пока не проверим все продукты
80
81 if ($isCreateProduct) {
82 $response = $api->request("post", $table_posts, $new_product_params); //создаем товар
83 if ($response["status"] == "error") {
84 return "Ошибка! Артикул: {$new_product_params["part"]}; " . $response["error_text"] . "\n";
85 } else {
86 return "Добавили! Имя товара: {$new_product_params["name"]}; Артикул: {$new_product_params["part"]} " . "\n";
87 }
88 } else {
89 return "Уже есть такой товар! Артикул: {$new_product_params["part"]} " . "\n";
90 }
91
92 } elseif ($product->is_type('variable')) {
93
94 $good = $api->request("get", $table_posts, ["part" => $new_product_params["part"]]); //api
95 $good_id = $good["result"];
96
97 $table_api_modifications = "goodsmodifications";
98 // $goods_modifications = $api->request("get", $table_api_modifications, ["good_id" => $good_id]); //api
99 $available_variations = $product->get_available_variations();
100
101 var_dump($new_product_params["part"]);
102
103 }
104}
105
106function sync()
107{
108 $skus = [
109 //"6159084266385",
110 //"615908950991",
111 "615908426670"
112 ];
113
114 foreach ($skus as $sku){
115 // api_sync_product($sku);
116 }
117
118}