Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Perl) Quickbooks Query an InvoiceDemonstrates how to query for invoices matching a SELECT statement via the Quickbooks REST API. For more information, see https://www.developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/invoice#query-an-invoice
use chilkat(); # This example requires the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. # First get our previously obtained OAuth2 access token. $jsonToken = chilkat::CkJsonObject->new(); $success = $jsonToken->LoadFile("qa_data/tokens/qb-access-token.json"); $rest = chilkat::CkRest->new(); $bTls = 1; $port = 443; $bAutoReconnect = 1; $success = $rest->Connect("sandbox-quickbooks.api.intuit.com",$port,$bTls,$bAutoReconnect); $sbAuth = chilkat::CkStringBuilder->new(); $sbAuth->Append("Bearer "); $sbAuth->Append($jsonToken->stringOf("access_token")); $rest->put_Authorization($sbAuth->getAsString()); # -------------------------------------------------------------------------- # Note: The above REST connection and setup of the AWS credentials # can be done once. After connecting, any number of REST calls can be made. # The "auto reconnect" property passed to rest.Connect indicates that if # the connection is lost, a REST method call will automatically reconnect # if needed. # -------------------------------------------------------------------------- # This is a GET request, so there should be no Content-Type # This line of code is just to make sure.. $rest->RemoveHeader("Content-Type"); $rest->AddHeader("Accept","application/json"); $rest->put_AllowHeaderFolding(0); # Add a SELECT statement $rest->AddQueryParam("query","select * from Invoice where id = '239'"); $sbResponseBody = chilkat::CkStringBuilder->new(); $success = $rest->FullRequestNoBodySb("GET","/v3/company/<realmID>/invoice",$sbResponseBody); if ($success != 1) { print $rest->lastErrorText() . "\r\n"; exit; } $respStatusCode = $rest->get_ResponseStatusCode(); if ($respStatusCode >= 400) { print "Response Status Code = " . $respStatusCode . "\r\n"; print "Response Header:" . "\r\n"; print $rest->responseHeader() . "\r\n"; print "Response Body:" . "\r\n"; print $sbResponseBody->getAsString() . "\r\n"; exit; } # Success is indicated by a 200 response status. print "response status code = " . $respStatusCode . "\r\n"; $json = chilkat::CkJsonObject->new(); $json->LoadSb($sbResponseBody); $json->put_EmitCompact(0); print $json->emit() . "\r\n"; # Sample output: # Use the this online tool to generate parsing code from sample JSON: # Generate Parsing Code from JSON # { # "QueryResponse": { # "startPosition": 1, # "totalCount": 1, # "maxResults": 1, # "Invoice": [ # { # "DocNumber": "1070", # "SyncToken": "0", # "domain": "QBO", # "Balance": 150.0, # "BillAddr": { # "City": "Bayshore", # "Line1": "4581 Finch St.", # "PostalCode": "94326", # "Lat": "INVALID", # "Long": "INVALID", # "CountrySubDivisionCode": "CA", # "Id": "2" # }, # "TxnDate": "2015-07-24", # "TotalAmt": 150.0, # "CustomerRef": { # "name": "Amy's Bird Sanctuary", # "value": "1" # }, # "ShipAddr": { # "City": "Bayshore", # "Line1": "4581 Finch St.", # "PostalCode": "94326", # "Lat": "INVALID", # "Long": "INVALID", # "CountrySubDivisionCode": "CA", # "Id": "109" # }, # "LinkedTxn": [], # "DueDate": "2015-08-23", # "PrintStatus": "NeedToPrint", # "Deposit": 0, # "sparse": false, # "EmailStatus": "NotSet", # "Line": [ # { # "LineNum": 1, # "Amount": 150.0, # "SalesItemLineDetail": { # "TaxCodeRef": { # "value": "NON" # }, # "ItemRef": { # "name": "Services", # "value": "1" # } # }, # "Id": "1", # "DetailType": "SalesItemLineDetail" # }, # { # "DetailType": "SubTotalLineDetail", # "Amount": 150.0, # "SubTotalLineDetail": {} # } # ], # "ApplyTaxAfterDiscount": false, # "CustomField": [ # { # "DefinitionId": "1", # "Type": "StringType", # "Name": "Crew #" # } # ], # "Id": "239", # "TxnTaxDetail": { # "TotalTax": 0 # }, # "MetaData": { # "CreateTime": "2015-07-24T10:35:08-07:00", # "LastUpdatedTime": "2015-07-24T10:35:08-07:00" # } # } # ] # }, # "time": "2015-07-24T10:38:50.01-07:00" # } $QueryResponseStartPosition = $json->IntOf("QueryResponse.startPosition"); $QueryResponseTotalCount = $json->IntOf("QueryResponse.totalCount"); $QueryResponseMaxResults = $json->IntOf("QueryResponse.maxResults"); $time = $json->stringOf("time"); $i = 0; $count_i = $json->SizeOfArray("QueryResponse.Invoice"); while ($i < $count_i) { $json->put_I($i); $DocNumber = $json->stringOf("QueryResponse.Invoice[i].DocNumber"); $SyncToken = $json->stringOf("QueryResponse.Invoice[i].SyncToken"); $domain = $json->stringOf("QueryResponse.Invoice[i].domain"); $Balance = $json->stringOf("QueryResponse.Invoice[i].Balance"); $BillAddrCity = $json->stringOf("QueryResponse.Invoice[i].BillAddr.City"); $BillAddrLine1 = $json->stringOf("QueryResponse.Invoice[i].BillAddr.Line1"); $BillAddrPostalCode = $json->stringOf("QueryResponse.Invoice[i].BillAddr.PostalCode"); $BillAddrLat = $json->stringOf("QueryResponse.Invoice[i].BillAddr.Lat"); $BillAddrLong = $json->stringOf("QueryResponse.Invoice[i].BillAddr.Long"); $BillAddrCountrySubDivisionCode = $json->stringOf("QueryResponse.Invoice[i].BillAddr.CountrySubDivisionCode"); $BillAddrId = $json->stringOf("QueryResponse.Invoice[i].BillAddr.Id"); $TxnDate = $json->stringOf("QueryResponse.Invoice[i].TxnDate"); $TotalAmt = $json->stringOf("QueryResponse.Invoice[i].TotalAmt"); $CustomerRefName = $json->stringOf("QueryResponse.Invoice[i].CustomerRef.name"); $CustomerRefValue = $json->stringOf("QueryResponse.Invoice[i].CustomerRef.value"); $ShipAddrCity = $json->stringOf("QueryResponse.Invoice[i].ShipAddr.City"); $ShipAddrLine1 = $json->stringOf("QueryResponse.Invoice[i].ShipAddr.Line1"); $ShipAddrPostalCode = $json->stringOf("QueryResponse.Invoice[i].ShipAddr.PostalCode"); $ShipAddrLat = $json->stringOf("QueryResponse.Invoice[i].ShipAddr.Lat"); $ShipAddrLong = $json->stringOf("QueryResponse.Invoice[i].ShipAddr.Long"); $ShipAddrCountrySubDivisionCode = $json->stringOf("QueryResponse.Invoice[i].ShipAddr.CountrySubDivisionCode"); $ShipAddrId = $json->stringOf("QueryResponse.Invoice[i].ShipAddr.Id"); $DueDate = $json->stringOf("QueryResponse.Invoice[i].DueDate"); $PrintStatus = $json->stringOf("QueryResponse.Invoice[i].PrintStatus"); $Deposit = $json->IntOf("QueryResponse.Invoice[i].Deposit"); $sparse = $json->BoolOf("QueryResponse.Invoice[i].sparse"); $EmailStatus = $json->stringOf("QueryResponse.Invoice[i].EmailStatus"); $ApplyTaxAfterDiscount = $json->BoolOf("QueryResponse.Invoice[i].ApplyTaxAfterDiscount"); $Id = $json->stringOf("QueryResponse.Invoice[i].Id"); $TxnTaxDetailTotalTax = $json->IntOf("QueryResponse.Invoice[i].TxnTaxDetail.TotalTax"); $MetaDataCreateTime = $json->stringOf("QueryResponse.Invoice[i].MetaData.CreateTime"); $MetaDataLastUpdatedTime = $json->stringOf("QueryResponse.Invoice[i].MetaData.LastUpdatedTime"); $j = 0; $count_j = $json->SizeOfArray("QueryResponse.Invoice[i].LinkedTxn"); while ($j < $count_j) { $json->put_J($j); $j = $j + 1; } $j = 0; $count_j = $json->SizeOfArray("QueryResponse.Invoice[i].Line"); while ($j < $count_j) { $json->put_J($j); $LineNum = $json->IntOf("QueryResponse.Invoice[i].Line[j].LineNum"); $Amount = $json->stringOf("QueryResponse.Invoice[i].Line[j].Amount"); $SalesItemLineDetailTaxCodeRefValue = $json->stringOf("QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.TaxCodeRef.value"); $SalesItemLineDetailItemRefName = $json->stringOf("QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.ItemRef.name"); $SalesItemLineDetailItemRefValue = $json->stringOf("QueryResponse.Invoice[i].Line[j].SalesItemLineDetail.ItemRef.value"); $Id = $json->stringOf("QueryResponse.Invoice[i].Line[j].Id"); $DetailType = $json->stringOf("QueryResponse.Invoice[i].Line[j].DetailType"); $j = $j + 1; } $j = 0; $count_j = $json->SizeOfArray("QueryResponse.Invoice[i].CustomField"); while ($j < $count_j) { $json->put_J($j); $DefinitionId = $json->stringOf("QueryResponse.Invoice[i].CustomField[j].DefinitionId"); $invType = $json->stringOf("QueryResponse.Invoice[i].CustomField[j].Type"); $Name = $json->stringOf("QueryResponse.Invoice[i].CustomField[j].Name"); $j = $j + 1; } $i = $i + 1; } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.