Sample code for 30+ languages & platforms
PHP ActiveX

Xero Get Receipts

Demonstrates how to get all receipts from Xero accounting.

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

Chilkat PHP ActiveX Downloads

PHP ActiveX
<?php

$success = 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.

$rest = new COM("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.
$sbXml = new COM("Chilkat.StringBuilder");
$success = $rest->FullRequestNoBodySb('GET','/api.xro/2.0/Receipts',$sbXml);
if ($success != 1) {
    print $rest->LastErrorText . "\n";
    exit;
}

// A 200 response is expected for actual success.
if ($rest->ResponseStatusCode != 200) {
    print $sbXml->getAsString() . "\n";
    exit;
}

// Iterate over the receipts and get some information..

$bAutoTrim = 0;
$xml = new COM("Chilkat.Xml");
$xml->LoadSb($sbXml,$bAutoTrim);
$xml->SaveXml('qa_cache/xero_receipts.xml');

// How many records exist?
$recordCount = $xml->NumChildrenAt('Receipts');
print 'numRecords = ' . $recordCount . "\n";

$i = 0;
while ($i < $recordCount) {
    $xml->I = $i;
    print 'ReceiptID: ' . $xml->getChildContent('Receipts|Receipt[i]|ReceiptID') . "\n";
    print 'UserID: ' . $xml->getChildContent('Receipts|Receipt[i]|User|UserID') . "\n";
    print 'ReceiptNumber: ' . $xml->GetChildIntValue('Receipts|Receipt[i]|ReceiptNumber') . "\n";
    print '----' . "\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>

?>