Search code examples
phpxmlauthorize.netauthorize.net-cim

Pulling values from CIM - authorize.net


I've got my script worked out to grab information from the CIM:

$content = 
  "<?xml version=\"1.0\" encoding=\"utf-8\"?>" .
  "<getCustomerProfileRequest xmlns=\"AnetApi/xml/v1/schema/AnetApiSchema.xsd\">" .
  merchantAuthenticationBlock().
  "<customerProfileId>$cid</customerProfileId>" .
  "</getCustomerProfileRequest>";

$response = send_xml_request($content);
$parsedresponse = parse_api_response($response);

So how, now, do I write the returned value to a variable?

I've tried:

$customerPaymentProfileId = $parsedresponse->customerPaymentProfileId;
$customerShippingAddressId = $parsedresponse->customerShippingAddressId;

But this returns the variables empty. I feel like I'm missing something simple.


Solution

  • To see the structure of $parsedresponse do either print_r($parsedresponse) or var_dump($parsedresponse). From there you can see how the array is structured and get your values from there.

    FYI, the payment profiles are in an array so you will need to loop through them to get their values. Assuming parsedresponse is the root XML node you can get them like this:

    foreach ($parsedresponse->profile->paymentProfiles as $profile)
    {
        echo $profile->customerPaymentProfileId;
    }
    

    FYI, this is a sample array structure for this response (From the AuthnetXML Sample Code. I am the author of this library):

    <?xml version="1.0" encoding="utf-8"?>
    <getCustomerProfileResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
      <messages>
        <resultCode>Ok</resultCode>
        <message>
          <code>I00001</code>
          <text>Successful.</text>
        </message>
      </messages>
      <profile>
        <merchantCustomerId>12345</merchantCustomerId>
        <email>[email protected]</email>
        <customerProfileId>5427896</customerProfileId>
        <paymentProfiles>
          <billTo>
            <firstName>John</firstName>
            <lastName>Smith</lastName>
            <address>123 Main Street</address>
            <city>Townsville</city>
            <state>NJ</state>
            <zip>12345</zip>
            <phoneNumber>800-555-1234</phoneNumber>
          </billTo>
          <customerPaymentProfileId>4796541</customerPaymentProfileId>
          <payment>
            <creditCard>
              <cardNumber>XXXX1111</cardNumber>
              <expirationDate>XXXX</expirationDate>
            </creditCard>
          </payment>
        </paymentProfiles>
        <paymentProfiles>
          <billTo>
            <firstName>John</firstName>
            <lastName>Doe</lastName>
            <company/>
            <address>123 Main St.</address>
            <city>Bellevue</city>
            <state>WA</state>
            <zip>98004</zip>
            <country>USA</country>
            <phoneNumber>800-555-1234</phoneNumber>
            <faxNumber>800-555-1234</faxNumber>
          </billTo>
          <customerPaymentProfileId>4796585</customerPaymentProfileId>
          <payment>
            <creditCard>
              <cardNumber>XXXX1111</cardNumber>
              <expirationDate>XXXX</expirationDate>
            </creditCard>
          </payment>
        </paymentProfiles>
        <shipToList>
          <firstName>John</firstName>
          <lastName>Smith</lastName>
          <address>123 Main Street</address>
          <city>Townsville</city>
          <state>NJ</state>
          <zip>12345</zip>
          <phoneNumber>800-555-1234</phoneNumber>
          <customerAddressId>4907537</customerAddressId>
        </shipToList>
        <shipToList>
          <firstName>John</firstName>
          <lastName>Doe</lastName>
          <company/>
          <address>123 Main St.</address>
          <city>Bellevue</city>
          <state>WA</state>
          <zip>98004</zip>
          <country>USA</country>
          <phoneNumber>800-555-1234</phoneNumber>
          <faxNumber>800-555-1234</faxNumber>
          <customerAddressId>4907591</customerAddressId>
        </shipToList>
      </profile>
    </getCustomerProfileResponse>