微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Square API从Order Object中获取一个工作日内的商品销售数据并将其插入到MySQL数据库中

如何解决如何使用Square API从Order Object中获取一个工作日内的商品销售数据并将其插入到MySQL数据库中

所以现在我正在尝试从 Square 的 Order API 获取每天销售的不同商品。但是,我不知道如何将所售商品的名称、商品的catalog_id 和已售出的数量放入三个不同的数组中,以便我将其插入到 MysqL 数据库中。我已将我的 accesstoken 和 locationId 替换为“XXXX”。

<?PHP
require_once(__DIR__ . '/vendor/autoload.PHP');

use Square\SquareClient;
use Square\Exceptions\ApiException;
use Square\Http\ApiResponse;
use Square\Models\ListLocationsResponse;
use Square\Environment;
use Square\Orders;

$client = new SquareClient([
    'accesstoken' => 'XXXX','environment' => Environment::PRODUCTION,]);

SquareConnect\Configuration::getDefaultConfiguration()->setAccesstoken('XXXX');

$body = new Square\Models\SearchOrdersRequest;
$ordersApi = $client->getordersApi();
$apiResponse = $ordersApi->searchOrders($body);

$location_ids = ['XXXX'];
$created_at = new \Square\Models\TimeRange();
$created_at->setStartAt('2021-04-10T00:00:00+08:00');
$created_at->setEndAt('2021-04-10T23:59:59+08:00'); 

$date_time_filter = new \Square\Models\SearchOrdersDateTimeFilter();
$date_time_filter->setCreatedAt($created_at);

$filter = new \Square\Models\SearchOrdersFilter();
$filter->setDateTimeFilter($date_time_filter);

$sort = new \Square\Models\SearchOrdeRSSort('CREATED_AT');
$sort->setSortOrder('DESC');

$query = new \Square\Models\SearchOrdersQuery();
$query->setFilter($filter);
$query->setSort($sort);

$body = new \Square\Models\SearchOrdersRequest();
$body->setLocationIds($location_ids);
$body->setQuery($query);
$body->setLimit(500);
$body->setReturnEntries(false);

$api_response = $client->getordersApi()->searchOrders($body);

if ($api_response->isSuccess()) {
    $result = $api_response->getResult();
    //print_r($result);
    var_export($result);
} else {
    $errors = $api_response->getErrors();
}

?>

这是上面代码输出

Square\Models\SearchOrdersResponse::__set_state(array( 'orderEntries' => NULL,'orders' => array ( 0 => Square\Models\Order::__set_state(array( 'id' => 'rOWGPV4K7Zoctgv1qRNPcH5eV'),'locationId' => 'XXXX','referenceId' => NULL,'source' => NULL,'customerId' => NULL,'lineItems' => 数组 ( 0 => Square\Models\OrderLineItem::__set_state( array( 'uid' => '0bb50124-0732-4382-9733-40dea49ae8b5','name' => 'Rojak $3.50 罗惹','quantity' => '2','quantityUnit' => NULL,'note' => NULL,'catalogobjectId' => 'LHXXXX4VXLMQ3SHRUBWN32QA','variationName' => 'Regular','Metadata' => NULL,'modifiers' => NULL,'appliedTaxes' => NULL,'applieddiscounts' => 'basePriceMoney' => Square\Models\Money::__set_state(array( 'amount' => 350,'currency' => 'SGD',)),'variationTotalPriceMoney' => Square\Models\Money::__set_state(array ( 'amount' => 700,'grossSalesMoney' => Square\Models\Money::__set_state(array('amount' => 700,'currency' => 'SGD ','totalTaxMoney' => Square\Mo dels\Money::__set_state(array('amount' => 0,'totaldiscountMoney' => Square\Models\Money::__set_state(array('amount' => 0),'totalMoney' => Square\Models\Money::__set_state(array( 'amount' => 700,'pricingBlocklists ' => NULL,),'taxes' => NULL,'discounts' => NULL,'serviceCharges' => NULL,'fulfillments' => NULL,'returns' => NULL,'returnAmounts' => Square\Models\OrderMoneyAmounts::__set_state(array('totalMoney' => Square\Models\Money::__set_state(array('amount' => 0,'taxMoney' = > Square\Models\Money::__set_state(array('amount' => 0,'discountMoney' => Square\Models\Money::__set_state(array( 'amount' => 0,'tipMoney' => Square\Models\Money::__set_state(array('amount' => 0,'serviceChargeMoney' => Square\Models\Money::__set_state(array('amount' => 0,'netAmounts' => Square \Models\OrderMoneyAmounts::__set_state(array('totalMoney' => Square\Models\Money::__set_state(array('amount' => 700,'taxMoney' => Square\Models\Money::__set_state(array('amount' => 0,'discountMoney' => Square\Models\Money::__set_state(array('amount' = > 0,'tipMoney' => Square\Models\Money::__set_state(array( 'amount' => 0,'roundingAdjustment' => NULL,'tenders' =>数组 (0 => Square\Models\Tender::__set_state(array('id' => '9S81AplaU3qfu65tljyTvqiNvaB','transactionId' => 'rOWGPV4K7Zoctgv1qRNPcH1>'create2eVaB' -04-10T10:43:42Z','amountMoney' => Square\Models\Money::__set_state(array('amount' => 700,) ),'tipMoney' => NULL,'processingFeeMoney' => Square\Models\Money::__set_state(array('amount' => 0,'type' => 'CASH','cardDetails' => NULL,'cashDetails' => Square\Models\TenderCashDetails::__set_state(array ( 'buyerTenderedMoney' => Square\Models\Money::__set_state(array( 'amount' => 800,'changeBackMoney' => Square\Models\Money::__set_state( array( 'amount' => 100,'additionalRecipients' => NULL,'paymentId' => NULL,'refunds' => NULL,'元数据' => NULL,'createdAt' => '2021-04-10T10:43:42Z','updatedAt' => '2021-04-10T10:43:42Z','closedAt' => '2021-04 -10T10:43:42Z','state' => 'COMPLETED','version' => NULL,'totalMoney' => Square\Models\Money::__set_state(array('amount' => 700,'totalTaxMoney' => Square\Models\Money::__set_state(array('amount' => 0,'totaldiscountMoney' => Square \Models\Money::__set_state(array('amount' => 0,'totalTipMoney' => Square\Models\Money::__set_state(array('amount' =>0,'totalServiceChargeMoney' => Square\Models\Money::__set_state(array( 'amount' => 0,' pricingOptions' => NULL, '奖励'=> NULL,)),), '光标'=> 'QYBs4K60vfdftVQa4hjeBXqmIGHFjKaXIEWHdD2qKrscX8LUwY95QN4abLC1A8ARzG081WckPLHa6jmgWWwRpS6u8eyXZiWcUGLYUBiiP2RPlDeuvo2qq19DJOhKsKWbXirv4neORr5ahFJeeTnvpxfBkTRr3J8MU6yI3it2cQyfPI34dOcm9Yh0TsdZk6gEdkNUs2LY9jOLVpdJ6yPZd2uFZ9S8SrQ08twBo7PT9p5Rxq81dlw8PZbFrbONhr9xQi1uxY9vxmssllstKbmOcw0DXT7NRSimkrY0wvF5uAFRK352tSteU0enswtljUGgDxnZMNwUFxiMzewagb6iKvRaqPJ4ymu4lYMLvj6NMItEY9HJ1yjKlkXolYIksIvAFYG7Qdc3m', '错误'=> NULL))

解决方法

<html>
<?php
require_once(__DIR__ . '/vendor/autoload.php');

use Square\SquareClient;
use Square\Exceptions\ApiException;
use Square\Http\ApiResponse;
use Square\Models\ListLocationsResponse;
use Square\Environment;
use Square\Orders;

$client = new SquareClient([
    'accessToken' => 'XXXX','environment' => Environment::PRODUCTION,]);

SquareConnect\Configuration::getDefaultConfiguration()->setAccessToken('XXXX');

$location_ids = ['XXXX'];
$created_at = new \Square\Models\TimeRange();
$created_at->setStartAt('2021-04-14T00:00:00+08:00');
$created_at->setEndAt('2021-04-14T23:59:59+08:00'); 

$date_time_filter = new \Square\Models\SearchOrdersDateTimeFilter();
$date_time_filter->setCreatedAt($created_at);

$filter = new \Square\Models\SearchOrdersFilter();
$filter->setDateTimeFilter($date_time_filter);

$sort = new \Square\Models\SearchOrdersSort('CREATED_AT');
$sort->setSortOrder('DESC');

$query = new \Square\Models\SearchOrdersQuery();
$query->setFilter($filter);
$query->setSort($sort);

$body = new \Square\Models\SearchOrdersRequest();
$body->setLocationIds($location_ids);
$body->setQuery($query);
$body->setLimit(500);
$body->setReturnEntries(false);

$api_response = $client->getOrdersApi()->searchOrders($body);

if ($api_response->isSuccess()) {
    $result = $api_response->getResult();
    $orders = $result->getOrders();
    
    //INSERT INTO DB
       //include db connect class
       require_once __DIR__ . '/db_connect.php';
       // connecting to db
       $myConnection= new DB_CONNECT();
       $myConnection->connect();
       
       $sql="INSERT INTO sale_item(order_id,item_name,item_quantity) VALUES";
    
    foreach($orders as $x => $val) {
    $lineItems = $result->getOrders()[$x]->getLineItems();
    $orderid = $result->getOrders()[$x]->getId();
    
    foreach($lineItems as $q => $val2){
        //$lineItemsID = $lineItems[$q]->getUid();
        $itemName = $lineItems[$q]->getName();
        $itemQty = $lineItems[$q]->getQuantity();
        
        $sql .="('".$orderid."','".$itemName."','".$itemQty."'),";
    }   
    }
    
    $sql= rtrim( $sql,',');
    $result =mysqli_query($myConnection->myconn,"$sql");

    // check if row inserted or not
    if ($result) {
     // successfully inserted into database
      echo "Product successfully created.";       
      }  
    else {
      // failed to insert row
      echo "Oops! An error occurred.";
    }
    
} else {
    $errors = $api_response->getErrors();
}



?>
</html>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。