get customer payment ids from CIM - php

How can I get customer payment method ids from AuthorizeNetCIM_Response object?
There's a method in AuthorizeNetCIM_Response which is supposed to return payment method ids
public function getCustomerPaymentProfileIds()
{
$ids = (array)$this->xml->customerPaymentProfileIdList;
return $ids["numericString"];
}
but calling this function results in error
Notice: Undefined index: numericString
The response object outputs as:
AuthorizeNet_AuthorizeNetCIMResponse Object
(
[xml] => SimpleXMLElement Object
(
[messages] => SimpleXMLElement Object
(
[resultCode] => Ok
[message] => SimpleXMLElement Object
(
[code] => I00001
[text] => Successful.
)
)
[profile] => SimpleXMLElement Object
(
[merchantCustomerId] => 10
[email] => user#nine.com
[customerProfileId] => 25441529
[paymentProfiles] => Array
(
[0] => SimpleXMLElement Object
(
[billTo] => SimpleXMLElement Object
(
[firstName] =>
[lastName] =>
[address] =>
[city] =>
[zip] =>
[country] =>
[phoneNumber] =>
)
[customerPaymentProfileId] => 23298664
[payment] => SimpleXMLElement Object
(
[creditCard] => SimpleXMLElement Object
(
[cardNumber] => XXXX2224
[expirationDate] => XXXX
)
)
)
[1] => SimpleXMLElement Object
(
[customerType] => individual
[billTo] => SimpleXMLElement Object
(
[firstName] => Test
[lastName] => Individual
[company] => SimpleXMLElement Object
(
)
[address] =>
[city] =>
[state] =>
[zip] =>
[country] =>
[phoneNumber] => SimpleXMLElement Object
(
)
[faxNumber] => SimpleXMLElement Object
(
)
)
[customerPaymentProfileId] => 23299421
[payment] => SimpleXMLElement Object
(
[creditCard] => SimpleXMLElement Object
(
[cardNumber] => XXXX0027
[expirationDate] => XXXX
)
)
)
)
)
)
and I supposed to get the array of paymentProfiles as
$response->xml->profile->paymentProfiles;
but it only returning the first element of paymentProfiles not an array.

Since there can be more then one, as per your example, you need to loop through each profile to get that information:
$paymentProfileIds = array();
foreach ($response->xml->profile->paymentProfiles AS $profile) {
$paymentProfileIds[] = (string) $profile->customerPaymentProfileId;
}
print_r($paymentProfileIds);

Related

SimpleXMLElement Object response for loop

Im trying to return a list of contacts from the Xero API however when getting the response back from there api i cannot run the array through a for each loop.
when trying to loop through nothing is displayed, has anyone had this problem in the past?
im trying to loop through to put each contact within a row inside a table.
if i run
pr($contacts->Contacts[0]);
it returns the list of contacts however it wont display anything with the for loop below
This is my for loop
foreach($contacts->Contacts[0] as $item) {
echo $item['Id'];
echo $item['filepath'];
}
this is the array returned
SimpleXMLElement Object
(
[Id] => 0dcda838-d354-4674-b6eb-d788e166b8dd
[Status] => OK
[ProviderName] => TestIntergration
[DateTimeUTC] => 2017-09-18T01:42:30.7361585Z
[Contacts] => SimpleXMLElement Object
(
[Contact] => Array
(
[0] => SimpleXMLElement Object
(
[ContactID] => 0ae2c0f4-cae9-4431-ab6b-52554f1c7c69
[ContactStatus] => ACTIVE
[Name] => Steve Buscemi
[Addresses] => SimpleXMLElement Object
(
[Address] => Array
(
[0] => SimpleXMLElement Object
(
[AddressType] => STREET
)
[1] => SimpleXMLElement Object
(
[AddressType] => POBOX
)
)
)
[Phones] => SimpleXMLElement Object
(
[Phone] => Array
(
[0] => SimpleXMLElement Object
(
[PhoneType] => DDI
)
[1] => SimpleXMLElement Object
(
[PhoneType] => DEFAULT
)
[2] => SimpleXMLElement Object
(
[PhoneType] => FAX
)
[3] => SimpleXMLElement Object
(
[PhoneType] => MOBILE
)
)
)
[UpdatedDateUTC] => 2017-08-30T08:14:03.88
[IsSupplier] => false
[IsCustomer] => true
[HasAttachments] => false
)
[1] => SimpleXMLElement Object
(
[ContactID] => ab8a9286-740e-4246-876c-9fcac558d600
[ContactStatus] => ACTIVE
[Name] => Martin Hudson
[Addresses] => SimpleXMLElement Object
(
[Address] => Array
(
[0] => SimpleXMLElement Object
(
[AddressType] => STREET
)
[1] => SimpleXMLElement Object
(
[AddressType] => POBOX
)
)
)
[Phones] => SimpleXMLElement Object
(
[Phone] => Array
(
[0] => SimpleXMLElement Object
(
[PhoneType] => DDI
)
[1] => SimpleXMLElement Object
(
[PhoneType] => DEFAULT
)
[2] => SimpleXMLElement Object
(
[PhoneType] => FAX
)
[3] => SimpleXMLElement Object
(
[PhoneType] => MOBILE
)
)
)
[UpdatedDateUTC] => 2017-08-30T08:20:03.263
[IsSupplier] => false
[IsCustomer] => true
[HasAttachments] => false
)
[2] => SimpleXMLElement Object
(
[ContactID] => 463e9f23-d1a1-4d74-b19e-041142c8fd34
[ContactStatus] => ACTIVE
[Name] => Orlena Greenville
[Addresses] => SimpleXMLElement Object
(
[Address] => Array
(
[0] => SimpleXMLElement Object
(
[AddressType] => STREET
)
[1] => SimpleXMLElement Object
(
[AddressType] => POBOX
)
)
)
[Phones] => SimpleXMLElement Object
(
[Phone] => Array
(
[0] => SimpleXMLElement Object
(
[PhoneType] => DDI
)
[1] => SimpleXMLElement Object
(
[PhoneType] => DEFAULT
)
[2] => SimpleXMLElement Object
(
[PhoneType] => FAX
)
[3] => SimpleXMLElement Object
(
[PhoneType] => MOBILE
)
)
)
[UpdatedDateUTC] => 2017-09-01T07:56:32.667
[IsSupplier] => false
[IsCustomer] => false
[HasAttachments] => false
)
[3] => SimpleXMLElement Object
(
[ContactID] => b75bfe5b-cc6e-45ee-b0a1-feafe866088d
[ContactStatus] => ACTIVE
[Name] => asdfasdfasdf454
[Addresses] => SimpleXMLElement Object
(
[Address] => Array
(
[0] => SimpleXMLElement Object
(
[AddressType] => STREET
)
[1] => SimpleXMLElement Object
(
[AddressType] => POBOX
)
)
)
[Phones] => SimpleXMLElement Object
(
[Phone] => Array
(
[0] => SimpleXMLElement Object
(
[PhoneType] => DDI
)
[1] => SimpleXMLElement Object
(
[PhoneType] => DEFAULT
)
[2] => SimpleXMLElement Object
(
[PhoneType] => FAX
)
[3] => SimpleXMLElement Object
(
[PhoneType] => MOBILE
)
)
)
[UpdatedDateUTC] => 2017-09-04T10:34:52.93
[IsSupplier] => false
[IsCustomer] => false
[HasAttachments] => false
)
)
)
)
Code used to get the passed data
$response = $XeroOAuth->request('GET', $XeroOAuth->url('Contacts', 'core'), array());
if ($XeroOAuth->response['code'] == 200) {
$contacts = $XeroOAuth->parseResponse($XeroOAuth->response['response'], $XeroOAuth->response['format']);
pr($contacts);
}

SimpleXMLElement To PHP Variables

I have been trying to get the Amount from the LandedPrice area of this XML that was returned. I have tried this and other code that looks similar. Would anyone have any suggestions of how I would grab that information from this?
$simplexml = new SimpleXMLElement($response); // Is response from server.
$amount = (string) $simplexml->CompetitivePrice[0]->LandedPrice->Price->Amount;
SimpleXMLElement Object
( [GetCompetitivePricingForASINResult] => SimpleXMLElement Object
( [#attributes] => Array ( [ASIN] => B00H9M9B34 [status] => Success ) [Product] => SimpleXMLElement Object
( [Identifiers] => SimpleXMLElement Object
( [MarketplaceASIN] => SimpleXMLElement Object
( [MarketplaceId] => ATVPDKIKX0DER [ASIN] => B00H9M9B34 )
) [CompetitivePricing] => SimpleXMLElement Object
( [CompetitivePrices] => SimpleXMLElement Object
( [CompetitivePrice] => SimpleXMLElement Object
( [#attributes] => Array ( [belongsToRequester] => false [condition] => New [subcondition] => New ) [CompetitivePriceId] => 1 [Price] => SimpleXMLElement Object
( [LandedPrice] => SimpleXMLElement Object
( [CurrencyCode] => USD [Amount] => 75.00 ) [ListingPrice] => SimpleXMLElement Object
( [CurrencyCode] => USD [Amount] => 75.00 ) [Shipping] => SimpleXMLElement Object
( [CurrencyCode] => USD [Amount] => 0.00 )
)
)
) [NumberOfOfferListings] => SimpleXMLElement Object
( [OfferListingCount] => Array ( [0] => 1 [1] => 1 ) )
) [SalesRankings] => SimpleXMLElement Object
( [SalesRank] => SimpleXMLElement Object
( [ProductCategoryId] => sports_display_on_website [Rank] => 625877 )
)
)
)
[ResponseMetadata] => SimpleXMLElement Object
( [RequestId] => 234234343d-bawff3f3-vef5555rrer)
)

Using a PHP for loop to display repeating nodes from a huge external XML feed

I've been at this problem for a week or so and haven't found any information in already exiting questions that have lead to a solution. I am pulling in a very large XML file from a company (it's a MITS Feed) that easily tops a million lines of output. I unfortunately can not give the location of this file due to legal reasons, but i'll explain what I'm trying to do and maybe you all can help me put this issue to rest.
I'm calling in the file as such:
<?php
$xml=simplexml_load_file("location-of-file/feed.xml");
?>
After this I want to run through and pull out pieces of information for each property. Here is the exact schema we are using -
http://www.mitsproject.com/Content/ServeFile.cfm?FileID=4075
I've tried importing this as a DOMDocument and traversing through the XML that way, but have had no luck. Possibly just an example of how to pull all of the Property nodes in a PHP for loop would be the bomb. Thank you in advance.
P.S. I know the file is at least being grabbed, because when I run -
<?php
$xml = simplexml_load_file("location-of-file/feed.xml", null, LIBXML_NOCDATA);
print_r($xml);
?>
I am getting an insanely large output.
UPDATE:
Here is an example of one 'Property' as a SimpleXMLElement, maybe this will help -
[111] => SimpleXMLElement Object
(
[#attributes] => Array
(
[IDValue] => 56bce392-b9fb-4290-97bc-900b9ebf9a1e
)
[PropertyID] => SimpleXMLElement Object
(
[Identification] => Array
(
[0] => SimpleXMLElement Object
(
[#attributes] => Array
(
[IDValue] => 56bce392-b9fb-4290-97bc-900b9ebf9a1e
[OrganizationName] => rentershq
[IDType] => property
)
)
[1] => SimpleXMLElement Object
(
[#attributes] => Array
(
[IDValue] => 1a47b013fa94796a8973a23cc8b01192ba603460
[OrganizationName] => rentershq
[IDType] => Company
)
)
)
[MarketingName] => Clean Older Unit
[WebSite] => http://rentershq.appfolio.com/listings/listings/56bce392-b9fb-4290-97bc-900b9ebf9a1e
[Address] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AddressType] => property
)
[Description] => Address of Available Listing
[AddressLine1] => 2850 PIONEER DRIVE - 17
[City] => REDDING
[State] => CA
[PostalCode] => 96001
[Country] => US
)
[Phone] => SimpleXMLElement Object
(
[#attributes] => Array
(
[PhoneType] => office
)
[PhoneNumber] => (530) 722-0800
)
[Email] => james#rentershq.com
)
[ILS_Identification] => SimpleXMLElement Object
(
[#attributes] => Array
(
[ILS_IdentificationType] => Apartment
[RentalType] => Market Rate
)
[Latitude] => 40.5873599
[Longitude] => -122.41376
[LastUpdate] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Month] => 12
[Day] => 4
[Year] => 2013
)
)
)
[Information] => SimpleXMLElement Object
(
[StructureType] => Standard
[UnitCount] => 1
[ShortDescription] => Clean Older Unit
[LongDescription] => Please drive by property. Please contact onsite manager Joe Skeen to view inside of unit. 530-255-8375
[Rents] => SimpleXMLElement Object
(
[StandardRent] => 500.00
)
[PropertyAvailabilityURL] => http://rentershq.appfolio.com/listings/listings/56bce392-b9fb-4290-97bc-900b9ebf9a1e
)
[Fee] => SimpleXMLElement Object
(
[ProrateType] => Standard
[LateType] => Standard
[LatePercent] => 0
[LateMinFee] => 0
[LateFeePerDay] => 0
[NonRefundableHoldFee] => 0
[AdminFee] => 0
[ApplicationFee] => 15.00
[BrokerFee] => 0
)
[Deposit] => SimpleXMLElement Object
(
[#attributes] => Array
(
[DepositType] => Security Deposit
)
[Amount] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmountType] => Actual
)
[ValueRange] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Exact] => 700.00
[Currency] => USD
)
)
)
)
[Policy] => SimpleXMLElement Object
(
[Pet] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Allowed] => false
)
)
)
[Phase] => SimpleXMLElement Object
(
[#attributes] => Array
(
[IDValue] => 56bce392-b9fb-4290-97bc-900b9ebf9a1e
)
[Name] => SimpleXMLElement Object
(
)
[Description] => SimpleXMLElement Object
(
)
[UnitCount] => 1
[RentableUnits] => 1
[TotalSquareFeet] => 625
[RentableSquareFeet] => 625
)
[Building] => SimpleXMLElement Object
(
[#attributes] => Array
(
[IDValue] => 56bce392-b9fb-4290-97bc-900b9ebf9a1e
)
[Name] => SimpleXMLElement Object
(
)
[Description] => SimpleXMLElement Object
(
)
[UnitCount] => 1
[SquareFeet] => 625
)
[Floorplan] => SimpleXMLElement Object
(
[#attributes] => Array
(
[IDValue] => 56bce392-b9fb-4290-97bc-900b9ebf9a1e
)
[Name] => SimpleXMLElement Object
(
)
[UnitCount] => 1
[Room] => Array
(
[0] => SimpleXMLElement Object
(
[#attributes] => Array
(
[RoomType] => Bedroom
)
[Count] => 2
[Comment] => SimpleXMLElement Object
(
)
)
[1] => SimpleXMLElement Object
(
[#attributes] => Array
(
[RoomType] => Bathroom
)
[Count] => 1
[Comment] => SimpleXMLElement Object
(
)
)
)
[SquareFeet] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Min] => 625
[Max] => 625
)
)
[MarketRent] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Min] => 500
[Max] => 500
)
)
[EffectiveRent] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Min] => 500
[Max] => 500
)
)
)
[ILS_Unit] => SimpleXMLElement Object
(
[#attributes] => Array
(
[IDValue] => 56bce392-b9fb-4290-97bc-900b9ebf9a1e
)
[Units] => SimpleXMLElement Object
(
[Unit] => SimpleXMLElement Object
(
[Identification] => SimpleXMLElement Object
(
[#attributes] => Array
(
[IDValue] => 56bce392-b9fb-4290-97bc-900b9ebf9a1e
[OrganizationName] => RentersHQ
)
)
[MarketingName] => Clean Older Unit
[UnitBedrooms] => 2
[UnitBathrooms] => 1.0
[MinSquareFeet] => 625
[MaxSquareFeet] => 625
[SquareFootType] => internal
[UnitRent] => 500.00
[MarketRent] => 500.00
[Address] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AddressType] => property
)
[AddressLine1] => 2850 PIONEER DRIVE - 17
[City] => REDDING
[PostalCode] => 96001
[Country] => US
)
)
)
[Availability] => SimpleXMLElement Object
(
[VacateDate] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Month] => 7
[Day] => 26
[Year] => 2013
)
)
[VacancyClass] => Unoccupied
[MadeReadyDate] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Month] => 7
[Day] => 26
[Year] => 2013
)
)
)
[Amenity] => Array
(
[0] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Other
)
[Description] => Ground Level Apartment
)
[1] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Other
)
[Description] => HUD Considered
)
[2] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Other
)
[Description] => Month-to-Month Lease
)
[3] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Other
)
[Description] => Credit Check Required
)
[4] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Other
)
[Description] => Stove
)
[5] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Other
)
[Description] => Window Coverings
)
[6] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Carpet
)
[Description] => Tille and Carpet
)
[7] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Other
)
[Description] => Off Street Parking
)
[8] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Dryer
)
[Description] => Coin-Op Washer / Dryer
)
[9] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Washer
)
[Description] => Coin-Op Washer / Dryer
)
[10] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Refrigerator
)
[Description] => Refrigerator
)
[11] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => DishWasher
)
[Description] => Dishwasher
)
[12] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Washer
)
[Description] => Dishwasher
)
[13] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Disposal
)
[Description] => Garbage Disposal
)
[14] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Heat
)
[Description] => Elec. Heating
)
[15] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Other
)
[Description] => Window Cooler
)
[16] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Other
)
[Description] => Dog Not Allowed
)
[17] => SimpleXMLElement Object
(
[#attributes] => Array
(
[AmenityType] => Other
)
[Description] => Cat Not Allowed
)
)
)
[File] => Array
(
[0] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Active] => true
[FileID] => 809492874
)
[FileType] => Photo
[Description] => Unit Photo
[Name] => SimpleXMLElement Object
(
)
[Caption] => SimpleXMLElement Object
(
)
[Format] => image/jpeg
[Src] => http://pa.cdn.appfolio.com/rentershq/images/8ed6dbf4-36cf-47e4-b519-7783bea727dc/medium.jpg
[Width] => 1280
[Height] => 960
[Rank] => 1
)
[1] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Active] => true
[FileID] => 809492885
)
[FileType] => Photo
[Description] => Unit Photo
[Name] => SimpleXMLElement Object
(
)
[Caption] => SimpleXMLElement Object
(
)
[Format] => image/jpeg
[Src] => http://pa.cdn.appfolio.com/rentershq/images/9b6b35e7-0ca1-4c20-a396-4be6fb21bf80/medium.jpg
[Width] => 1280
[Height] => 960
[Rank] => 2
)
[2] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Active] => true
[FileID] => 809492887
)
[FileType] => Photo
[Description] => Unit Photo
[Name] => SimpleXMLElement Object
(
)
[Caption] => SimpleXMLElement Object
(
)
[Format] => image/jpeg
[Src] => http://pa.cdn.appfolio.com/rentershq/images/c6ab69e3-0787-4221-893d-fbd982c2a3bd/medium.jpg
[Width] => 1280
[Height] => 960
[Rank] => 3
)
[3] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Active] => true
[FileID] => 809492889
)
[FileType] => Photo
[Description] => Unit Photo
[Name] => SimpleXMLElement Object
(
)
[Caption] => SimpleXMLElement Object
(
)
[Format] => image/jpeg
[Src] => http://pa.cdn.appfolio.com/rentershq/images/6ac14176-73c3-452b-80ae-b41820887c73/medium.jpg
[Width] => 1280
[Height] => 960
[Rank] => 4
)
[4] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Active] => true
[FileID] => 809492892
)
[FileType] => Photo
[Description] => Unit Photo
[Name] => SimpleXMLElement Object
(
)
[Caption] => SimpleXMLElement Object
(
)
[Format] => image/jpeg
[Src] => http://pa.cdn.appfolio.com/rentershq/images/252a2ae1-66ea-471d-8cf1-48e795add81d/medium.jpg
[Width] => 960
[Height] => 1280
[Rank] => 5
)
[5] => SimpleXMLElement Object
(
[#attributes] => Array
(
[Active] => true
[FileID] => 809492895
)
[FileType] => Photo
[Description] => Unit Photo
[Name] => SimpleXMLElement Object
(
)
[Caption] => SimpleXMLElement Object
(
)
[Format] => image/jpeg
[Src] => http://pa.cdn.appfolio.com/rentershq/images/b93c93f6-b571-4a33-a4e3-e0ac663679bc/medium.jpg
[Width] => 1280
[Height] => 960
[Rank] => 6
)
)
)
try outputting the feed using
echo '<pre>';
print_r($feed);
echo '</pre>';
This should give you a much 'prettier' view of the scheme and what nodes are/aren't accessible!
I'd recommend something similar to this:
$xml = simplexml_load_file("location-of-file/feed.xml", null, LIBXML_NOCDATA);
foreach($xml as $key => $item){
// to select an element do something like this
$item->WebSite;
}
however please note that $item is a copy of the array $xml so to manipulate this object you will need to change $item to &$item or you will need to manipulate the actual value as such in your loop
$test = $item->WebSite;
//do something to $test
$xml->$key->WebSite = $test;
if however you are building a new array/xml document you don't need to worry about this issue
Update:
I have tested this on an example feed and you should be able to get this too work with a little editing
header("Content-Type: application/xml; charset=utf-8");
$xml = simplexml_load_file("test.xml", null, LIBXML_NOCDATA);
$values = array("Belgian Waffles","French Toast");
$new = new SimpleXMLElement("<tester></tester>");
foreach($xml->food as $item){
if(in_array($item->name,$values)){
$type = $new->addChild('type');
$movie = $type->addChild('movie');
$movie->addChild('price', $item->price);
}else{
}
}
echo $new->asXML();
basically give this ago, edit it to use the right nodes and build the feed right for you then this should work. the asXML() has a optional parameter you can pass in to write the file
so changing echo $new->asXML(); to $new->asXML("test.xml"); will instead write the file to test.xml instead of outputting the data. if you do save it make sure you get rid of header("Content-Type: application/xml; charset=utf-8");

How to loop through a LinkedIn API response?

I am retrieving connections via LinkedIn's API.
This is a sample of the response. All I want to do is loop through this using PHP, accessing first and last names. Should be simple, but I am stumped. Thanks.
stdClass Object ( [_total] => 420 [values] => Array ( [0] => stdClass
Object ( [apiStandardProfileRequest] => stdClass Object ( [headers] =>
stdClass Object ( [_total] => 1 [values] => Array ( [0] => stdClass
Object ( [name] => x-li-auth-token [value] => name:AnUY ) ) ) [url] =>
http://api.linkedin.com/v1/people/7yw8k_sjqf ) [firstName] => John
[headline] => Finance Manager at ABC. [id] => 7yw8k_sjqf [industry] =>
Insurance [lastName] => Doe [location] => stdClass Object ( [country]
=> stdClass Object ( [code] => us ) [name] => Greater Atlanta Area ) [pictureUrl] =>
http://m.c.lnkd.licdn.com/mpr/mprx/0_73E_PMM3nzAIZLG03bHpPRo3qvCwZL_0DhYpPRogIxiFs7jUYPVRGNRGC1mGegyyqdihoC
[siteStandardProfileRequest] => stdClass Object ( [url] =>
http://www.linkedin.com/profile/view?id=2633833&authType=name&authToken=AnUY&trk=api*a189561*s197687*
) ) [1] => stdClass Object ( [apiStandardProfileRequest] => stdClass
Object ( [headers] => stdClass Object ( [_total] => 1 [values] =>
Array ( [0] => stdClass Object ( [name] => x-li-auth-token [value] =>
name:tpAo ) ) ) [url] => http://api.linkedin.com/v1/people/FW8obZbI8R
) [firstName] => Jeremy [headline] => Owner, BCD [id] => FW8obZbI8R
[industry] => Computer Software [lastName] => Doe [location] =>
stdClass Object ( [country] => stdClass Object ( [code] => us ) [name]
=> Greater Chicago Area ) [pictureUrl] => http://m.c.lnkd.licdn.com/mpr/mprx/0_Lw2NlImcd1e6LmQpL2mIleOMIcf9LeFpbu4IlexHq-R6V2ryWSpZ0HI6LM7rXeaEYf3Gt69H
[siteStandardProfileRequest] => stdClass Object ( [url] =>
http://www.linkedin.com/profile/view?id=6700159&authType=name&authToken=tpAo&trk=api*a189561*s197687*
) ) [2] => stdClass Object ( [apiStandardProfileRequest] => stdClass
Object ( [headers] => stdClass Object ( [_total] => 1 [values] =>
Array ( [0] => stdClass Object ( [name] => x-li-auth-token [value] =>
name:eETp ) ) ) [url] => http://api.linkedin.com/v1/people/a7-dvlvc7K
) [firstName] => Jane [headline] => Sr. Consultant System Integration
at AT&T [id] => a7-dvlvc7K [industry] => Telecommunications [lastName]
=> Doe [location] => stdClass Object ( [country] => stdClass Object ( [code] => us ) [name] => Greater New York City Area ) [pictureUrl] =>
http://m.c.lnkd.licdn.com/mpr/mprx/0_459zxGU8TBpTZjvisicExTgSSvZCsYXisCGExTR-t1ut5V1_N_6JA37p_Z4gJQqIK653RvmW
[siteStandardProfileRequest] => stdClass Object ( [url] =>
http://www.linkedin.com/profile/view?id=119413921&authType=name&authToken=eETp&trk=api*a189561*s197687*
) ) [3] => stdClass Object ( [apiStandardProfileRequest] => stdClass
Object ( [headers] => stdClass Object ( [_total] => 1 [values] =>
Array ( [0] => stdClass Object ( [name] => x-li-auth-token [value] =>
name:HjUG ) ) ) [url] => http://api.linkedin.com/v1/people/aie8Zpk9Gm
) [firstName] => John [headline] => Financial Information/Market Data
Professional [id] => aie8Zpk9Gm [industry] => Financial Services
[lastName] => Smith [location] => stdClass Object ( [country] =>
stdClass Object ( [code] => gb ) [name] => Glasgow, United Kingdom )
[pictureUrl] =>
http://m.c.lnkd.licdn.com/mpr/mprx/0_N0TLAL3BTlHZCVAbTNTAD03RCjngvsAbCIY-JfOxvg4JldxF9L7MShCp_Avp_ROhKS8LNY
[siteStandardProfileRequest] => stdClass Object ( [url] =>
http://www.linkedin.com/profile/view?id=1562499&authType=name&authToken=HjUG&trk=api*a189561*s197687*
) ) [4] => stdClass Object ( [apiStandardProfileRequest] => stdClass
Object ( [headers] => stdClass Object ( [_total] => 1 [values] =>
Array ( [0] => stdClass Object ( [name] => x-li-auth-token [value] =>
name:aZIS ) ) ) [url] => http://api.linkedin.com/v1/people/XTGgSuagWI
) [firstName] => Bob [headline] => CEO, Nycomed US at NMO [id] =>
XTGgSuagWI [industry] => Pharmaceuticals [lastName] => brown
[location] => stdClass Object ( [country] => stdClass Object ( [code]
=> us ) [name] => Greater New York City Area ) [pictureUrl] => http://m.c.lnkd.licdn.com/mpr/mprx/0_UciCehxmKngbM15je_qytdVG-zSbJrcje_92S7a-DlsFcA1m6iCGyXsjl-uwsq3ybXXbrd1L
[siteStandardProfileRequest] => stdClass Object ( [url] =>
What you have as the response is an stdclass which will have all of its properties public.
This is how you iterate it:
$response = $this->getResponseFromLinkedIn();
foreach ($response->values as $value) {
$firstName = $value->firstName;
$lastName = $value->lastName;
// do something with the extracted values!
}

Freshbooks API show details

I am using the php library from here and I have a small problem.
To get some info for a invoice 118868, I can do this
<?php
$invoice_id=118868;
$invoice=$freshbooks->invoiceGet($invoice_id);
print_r($invoice);
?>
This is the output for print_r
Class Object ( [#attributes] => stdClass Object ( [status] => ok ) [invoice] => stdClass Object ( [invoice_id] => 00000219023 [estimate_id] => stdClass Object ( ) [number] => 8822 [client_id] => 83 [contacts] => stdClass Object ( [contact] => stdClass Object ( [contact_id] => 0 ) ) [recurring_id] => stdClass Object ( ) [organization] => Jimmy Thwart [first_name] => stdClass Object ( ) [last_name] => stdClass Object ( ) [p_street1] => stdClass Object ( ) [p_street2] => stdClass Object ( ) [p_city] => stdClass Object ( ) [p_state] => stdClass Object ( ) [p_country] => stdClass Object ( ) [p_code] => stdClass Object ( ) [po_number] => 10002 [status] => sent [amount] => 16.90 [amount_outstanding] => 16.90 [paid] => 0.00 [date] => 2013-01-31 00:00:00 [notes] => stdClass Object ( ) [terms] => Your slot can only be secured upon payment. Any reservation made before payment will only be guaranteed for 2 days. [discount] => 0 [url] => https://example.freshbooks.com/view/vgPb2TNGCR7n8JV [auth_url] => https://example.freshbooks.com/invoices/219023 [links] => stdClass Object ( [client_view] => https://example.freshbooks.com/view/vgPb2TNGCR7n8JV [view] => https://example.freshbooks.com/invoices/219023 [edit] => https://example.freshbooks.com/invoices/219023/edit ) [return_uri] => stdClass Object ( ) [updated] => 2013-01-31 02:25:13 [currency_code] => SGD [language] => en [vat_name] => stdClass Object ( ) [vat_number] => stdClass Object ( ) [folder] => active [staff_id] => 1 [lines] => stdClass Object ( [line] => stdClass Object ( [line_id] => 1 [name] => Lady 1pax [description] => Services (1 pax) [unit_cost] => 16.90 [quantity] => 1 [amount] => 16.90 [tax1_name] => stdClass Object ( ) [tax2_name] => stdClass Object ( ) [tax1_percent] => 0 [tax2_percent] => 0 [compound_tax] => 0 [type] => Item ) ) [gateways] => stdClass Object ( [gateway] => stdClass Object ( [name] => PayPal ) ) ) )
I hope the output can only be the URL and not this whole chunk of code.
Output wanted:
https://example.freshbooks.com/view/vgPb2TNGCR7n8JV
However, it lists all information of the invoice. How do I get only the invoice URL?
Well, using the output of your code, you can see what the elements of $invoice are. Use the one that you need.
Invoice is an instane of a class. You should treat it like all instances.
To get URL value you can do the next:
<?php
$invoice_id=118868;
$invoice=$freshbooks->invoiceGet($invoice_id);
print $invoice->url;
?>
or there's another possible value you're looking for:
<?php
$invoice_id=118868;
$invoice=$freshbooks->invoiceGet($invoice_id);
print $invoice->links->client_view;
?>
According to official API doc <url> is not supporting any more, so you should use <links> "element to provide your customers with direct links to the invoice for editing, viewing by the client and viewing by an administrator."

Categories