Unicode C++
Unicode C++
Xero Get Receipts
Demonstrates how to get all receipts from Xero accounting.Note: This example requires Chilkat v9.5.0.64 or greater.
Chilkat Unicode C++ Downloads
#include <CkRestW.h>
#include <CkStringBuilderW.h>
#include <CkXmlW.h>
void ChilkatSample(void)
{
bool success = false;
// 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.
CkRestW 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.
CkStringBuilderW sbXml;
success = rest.FullRequestNoBodySb(L"GET",L"/api.xro/2.0/Receipts",sbXml);
if (success != true) {
wprintf(L"%s\n",rest.lastErrorText());
return;
}
// A 200 response is expected for actual success.
if (rest.get_ResponseStatusCode() != 200) {
wprintf(L"%s\n",sbXml.getAsString());
return;
}
// Iterate over the receipts and get some information..
bool bAutoTrim = false;
CkXmlW xml;
xml.LoadSb(sbXml,bAutoTrim);
xml.SaveXml(L"qa_cache/xero_receipts.xml");
// How many records exist?
int recordCount = xml.NumChildrenAt(L"Receipts");
wprintf(L"numRecords = %d\n",recordCount);
int i = 0;
while (i < recordCount) {
xml.put_I(i);
wprintf(L"ReceiptID: %s\n",xml.getChildContent(L"Receipts|Receipt[i]|ReceiptID"));
wprintf(L"UserID: %s\n",xml.getChildContent(L"Receipts|Receipt[i]|User|UserID"));
wprintf(L"ReceiptNumber: %d\n",xml.GetChildIntValue(L"Receipts|Receipt[i]|ReceiptNumber"));
wprintf(L"----\n");
i = i + 1;
}
// 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>
}