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
(SQL Server) Xero Get ReceiptsDemonstrates how to get all receipts from Xero accounting. Note: This example requires Chilkat v9.5.0.64 or greater.
// Important: See this note about string length limitations for strings returned by sp_OAMethod calls. // CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int DECLARE @sTmp0 nvarchar(4000) -- Note: Requires Chilkat v9.5.0.64 or greater. -- This requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @rest int EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Rest', @rest OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @success int -- Before sending REST API calls, the REST object needs to be -- initialized for OAuth1. -- See Xero 2-Legged OAuth1 Setup for sample code. -- Assuming the REST object's OAuth1 authenticator is setup, and the initial -- connection was made, we may now send REST HTTP requests.. -- Note: If query parameters are to be included, they can be added by calling -- the rest.AddQueryParam method, once per query parameter name/value. -- Do not try to add the query params to the uriPath passed to a method such as FullRequestNoBodySb. -- The reason is that OAuth1 needs to include the query params as part of the OAuth1 signature, -- and the only way it knows about them is if they are explicitly added by calling AddQueryParam. -- (Otherwise you'll get a 403 authentication error response.) -- Get the full list of receipts. DECLARE @sbXml int EXEC @hr = sp_OACreate 'Chilkat_9_5_0.StringBuilder', @sbXml OUT EXEC sp_OAMethod @rest, 'FullRequestNoBodySb', @success OUT, 'GET', '/api.xro/2.0/Receipts', @sbXml IF @success <> 1 BEGIN EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @sbXml RETURN END -- A 200 response is expected for actual success. EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @iTmp0 OUT IF @iTmp0 <> 200 BEGIN EXEC sp_OAMethod @sbXml, 'GetAsString', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @sbXml RETURN END -- Iterate over the receipts and get some information.. DECLARE @bAutoTrim int SELECT @bAutoTrim = 0 DECLARE @xml int EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Xml', @xml OUT EXEC sp_OAMethod @xml, 'LoadSb', @success OUT, @sbXml, @bAutoTrim EXEC sp_OAMethod @xml, 'SaveXml', @success OUT, 'qa_cache/xero_receipts.xml' -- How many records exist? DECLARE @recordCount int EXEC sp_OAMethod @xml, 'NumChildrenAt', @recordCount OUT, 'Receipts' PRINT 'numRecords = ' + @recordCount DECLARE @i int SELECT @i = 0 WHILE @i < @recordCount BEGIN EXEC sp_OASetProperty @xml, 'I', @i EXEC sp_OAMethod @xml, 'GetChildContent', @sTmp0 OUT, 'Receipts|Receipt[i]|ReceiptID' PRINT 'ReceiptID: ' + @sTmp0 EXEC sp_OAMethod @xml, 'GetChildContent', @sTmp0 OUT, 'Receipts|Receipt[i]|User|UserID' PRINT 'UserID: ' + @sTmp0 EXEC sp_OAMethod @xml, 'GetChildIntValue', @iTmp0 OUT, 'Receipts|Receipt[i]|ReceiptNumber' PRINT 'ReceiptNumber: ' + @iTmp0 PRINT '----' SELECT @i = @i + 1 END -- The output looks like this: -- numRecords = 2 -- ReceiptID: c4f40e59-c390-0001-caff-ce731c707d00 -- UserID: d6362594-ffec-4435-abe8-469941ff1501 -- ReceiptNumber: 2 -- ---- -- ReceiptID: 9387dc5d-2adf-4d77-84e1-db693db502bd -- UserID: d6362594-ffec-4435-abe8-469941ff1501 -- ReceiptNumber: 1 -- ---- -- The xero_receipts.xml file contains data that looks like this: -- <?xml version="1.0" encoding="utf-8" ?> -- <Response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> -- <Id>baf5d149-11de-4ba4-ba25-e8729d863812</Id> -- <Status>OK</Status> -- <ProviderName>ChilkatPrivate</ProviderName> -- <DateTimeUTC>2016-11-11T14:03:25.5756186Z</DateTimeUTC> -- <Receipts> -- <Receipt> -- <ReceiptID>c4f40e59-c390-0001-caff-ce731c707d00</ReceiptID> -- <ReceiptNumber>2</ReceiptNumber> -- <Status>DRAFT</Status> -- <User> -- <UserID>d6362594-ffec-4435-abe8-469941ff1501</UserID> -- <FirstName>Matthew</FirstName> -- <LastName>Smith</LastName> -- </User> -- <Contact> -- <ContactID>f817d079-80ba-4a4f-8b57-6171c0cdd14c</ContactID> -- <Name>Epicenter Cafe</Name> -- </Contact> -- <Date>2016-10-13T00:00:00</Date> -- <UpdatedDateUTC>2011-10-07T20:45:16.153</UpdatedDateUTC> -- <LineAmountTypes>Inclusive</LineAmountTypes> -- <SubTotal>0.00</SubTotal> -- <TotalTax>0.00</TotalTax> -- <Total>0.00</Total> -- <HasAttachments>false</HasAttachments> -- </Receipt> -- <Receipt> -- <ReceiptID>9387dc5d-2adf-4d77-84e1-db693db502bd</ReceiptID> -- <ReceiptNumber>1</ReceiptNumber> -- <Status>DRAFT</Status> -- <User> -- <UserID>d6362594-ffec-4435-abe8-469941ff1501</UserID> -- <FirstName>Matthew</FirstName> -- <LastName>Smith</LastName> -- </User> -- <Contact> -- <ContactID>6a31faab-588e-46a1-be9a-bd6d1dd468df</ContactID> -- <Name>Woolworths Market</Name> -- </Contact> -- <Date>2016-10-11T00:00:00</Date> -- <UpdatedDateUTC>2016-06-24T17:15:05.337</UpdatedDateUTC> -- <LineAmountTypes>Inclusive</LineAmountTypes> -- <SubTotal>35.20</SubTotal> -- <TotalTax>0.00</TotalTax> -- <Total>35.20</Total> -- <HasAttachments>false</HasAttachments> -- </Receipt> -- </Receipts> -- </Response> EXEC @hr = sp_OADestroy @rest EXEC @hr = sp_OADestroy @sbXml EXEC @hr = sp_OADestroy @xml END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.