2

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);

では、どのようにして戻り値を変数に書き込むのでしょうか。

私はもう試した:

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

ただし、これにより変数は空になります。シンプルなものが欠けているような気がします。

4

1 に答える 1

2

の構造を確認するには、またはの$parsedresponseいずれprint_r($parsedresponse)かを実行しますvar_dump($parsedresponse)。そこから、配列がどのように構造化されているかを確認し、そこから値を取得できます。

参考までに、支払いプロファイルは配列になっているため、値を取得するにはそれらをループする必要があります。ルートXMLノードであると仮定するparsedresponseと、次のように取得できます。

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

参考までに、これはこの応答のサンプル配列構造です(AuthnetXMLサンプルコードから。私はこのライブラリの作成者です):

<?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>user@example.com</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>
于 2012-07-20T22:56:32.577 に答える