Получение данных из печати слова - PullRequest
0 голосов
/ 08 ноября 2019

Я создал собственный файл PHP в WordPress для отправки данных заказа на сервер учета через его веб-сервис.

Теперь мне нужно взять количество товаров с этого сервера учета и обновить запасы каждого продукта.

У меня нет доступа к этому серверу, и у них нет документов для их веб-службы.

Я попытался найти некоторую информацию об использовании веб-службы для этого, но единственное, чтоя получил, чтобы отправить (не получать) данные сайта WordPress через веб-сервис.

Это мой код, который отправляет детали заказа на сервер учета:

<?php
require_once('../wp-config.php');
require_once('../wp-content/plugins/woocommerce/includes/abstracts/abstract-wc-order.php');

$today =  new DateTime();
$today->setTime( 0, 0, 0 );

$args = array(
    'limit' => 9999,
    'return' => 'ids',
    'date_completed' => $today,
    'status' => 'completed'
);

$query = new WC_Order_Query( $args );
$orders = $query->get_orders();

$url = "http://###.###.###.###:8081/Service1.svc/InsertInvoice";

foreach( $orders as $order_id ) {
    $order = wc_get_order( $order_id );
    $order_date_completed = $order->get_date_completed();
    if (false === strtotime($order_date_completed)) {
        echo 'Invalid date for order number '.$order_id.'<br>';
    }else {
        $order_date_completed->setTime( 0, 0, 0 );
        $diff = $today->diff( $order_date_completed );
        $diffDays = (integer)$diff->format( "%R%a" );

        if($diffDays == 0){

            $items = $order->get_items();
            $InvoiceInfo = array();

            foreach( $items as $item ){

                $product = $item->get_product();

                $item_sku  = $product->get_sku();
                $saleType  = substr($item_sku, 1, 2);
                $item_code = substr($item_sku, 3, 8);
                $user_id   = substr($item_sku, 11, 6);

                $data2 = array(
                    'CustomerCode' => $user_id,
                    'SaleTypeNumber' => $saleType,
                    'ItemCode' => $item_code,
                    'Quantity' => $item->get_quantity(),
                    'Fee' => $product->get_price(),
                    'Discount' => 0,
                    'Addition' => 0,
                    'Tax' => 0,
                    'Duty' => 0,
                    'Rate' => 1,
                    'StockCode' => 5,
                );
                array_push($InvoiceInfo,$data2);
            }

            $postdata = json_encode($InvoiceInfo);
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
            $result = curl_exec($ch);
            curl_close($ch);
        }
    }
}
?>

1 Ответ

0 голосов
/ 09 ноября 2019

Для отправки данных в WooCommerce вы можете использовать настраиваемую конечную точку API WordPress REST, которая может получать данные из любого места.

Но, поскольку вы не указали имя сервера учета или даже какую-либо информацию о приложении учета, вы должны проверить, можно ли отправлять данные из приложения учета в веб-крючок (ссервис, как Zapier).

...