Sample code for 30+ languages & platforms
Visual FoxPro

Xero Get Receipts

Demonstrates how to get all receipts from Xero accounting.

Note: This example requires Chilkat v9.5.0.64 or greater.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loRest
LOCAL loSbXml
LOCAL lnBAutoTrim
LOCAL loXml
LOCAL lnRecordCount
LOCAL i

lnSuccess = 0

* 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.

loRest = CreateObject('Chilkat.Rest')

* 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.
loSbXml = CreateObject('Chilkat.StringBuilder')
lnSuccess = loRest.FullRequestNoBodySb("GET","/api.xro/2.0/Receipts",loSbXml)
IF (lnSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    RELEASE loSbXml
    CANCEL
ENDIF

* A 200 response is expected for actual success.
IF (loRest.ResponseStatusCode <> 200) THEN
    ? loSbXml.GetAsString()
    RELEASE loRest
    RELEASE loSbXml
    CANCEL
ENDIF

* Iterate over the receipts and get some information..

lnBAutoTrim = 0
loXml = CreateObject('Chilkat.Xml')
loXml.LoadSb(loSbXml,lnBAutoTrim)
loXml.SaveXml("qa_cache/xero_receipts.xml")

* How many records exist?
lnRecordCount = loXml.NumChildrenAt("Receipts")
? "numRecords = " + STR(lnRecordCount)

i = 0
DO WHILE i < lnRecordCount
    loXml.I = i
    ? "ReceiptID: " + loXml.GetChildContent("Receipts|Receipt[i]|ReceiptID")
    ? "UserID: " + loXml.GetChildContent("Receipts|Receipt[i]|User|UserID")
    ? "ReceiptNumber: " + STR(loXml.GetChildIntValue("Receipts|Receipt[i]|ReceiptNumber"))
    ? "----"
    i = i + 1
ENDDO

* 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>

RELEASE loRest
RELEASE loSbXml
RELEASE loXml