0

PHP XML のリクエストとレスポンスに少し戸惑っています。USPS の料金計算 API を Web サイトに適合させる必要がありますが、私が知っているのは、USPS が提供する XML だけです。ここで、PHP を使用してアイテムの ZIP と WEIGHT を API に送信する方法を考えました。

今のところ、これは私が持っているものです:

  • ZIP と WEIGHT を uspsRateCalculator.php に送信する checkout.php
  • uspsRateCalculator.php は ZIP と WEIGHT を受け取り、USPS API に要求する必要があります (ここで迷っています)

uspsRateCalculator.php のコードは次のとおりです。

$xml = rawurlencode('http://SERVER/PATH?API=RateV4&XML=<RateV4Request USERID="023TAHAR4995" ><Revision/>
     <Package ID="1ST">
          <Service>PRIORITY</Service>
          <ZipOrigination>44106</ZipOrigination>
          <ZipDestination>'.$zip.'</ZipDestination>
          <Pounds>'.$pounds.'</Pounds>
          <Container>NONRECTANGULAR</Container>
          <Size>LARGE</Size>
          <Width>15</Width>
          <Length>30</Length>
          <Height>15</Height>
          <Girth>55</Girth>
     </Package>
</RateV4Request>');

これをどのように「リクエスト」しますか?そして、どうすればこのようなレスポンスを取得できますか?

<?xml version="1.0" encoding="UTF-8"?>
<RateV4Response>
     <Package ID="1ST">
          <ZipOrigination>44106</ZipOrigination>
          <ZipDestination>20770</ZipDestination>
          <Pounds>1</Pounds>
          <Ounces>8</Ounces>
          <Container>NONRECTANGULAR</Container>
          <Size>LARGE</Size>
          <Width>15</Width>
          <Length>30</Length>
          <Height>15</Height>
          <Girth>55</Girth>
          <Zone>3</Zone>
          <Postage CLASSID="1">
               <MailService>Priority Mail&lt;sup&gt;&amp;reg;&lt;/sup&gt;</MailService>
               <Rate>24.85</Rate>
          </Postage>
     </Package>
</RateV4Response>

最後に、checkout.php ページで を取得する必要があります。

4

1 に答える 1

0

おそらく cURL を使用したいと思うでしょう。

http://www.php.net/manual/en/function.curl-exec.php

$xml 変数は、クエリする URL を生成するようです (SERVER/PATH をクエリする適切な usps サーバー/場所に置き換えた後)。リンクされたページの cURL の例に示されているように、それを URL として渡します。

curl_exec から返される XML は、含めた応答 XML のようになります。そこから、PHP には、必要な情報を抽出するために使用できる xml リーダー クラスがあります (または、単に「レート」を取得したい場合は、正規表現がもう少し軽量になる可能性があります)。

編集:そのドキュメントページで見逃した場合は、curl-exec が「SUCCESS」だけでなくコンテンツを返すように CURLOPT_RETURNTRANSFER フラグを設定する必要があります。

于 2013-06-07T19:42:45.527 に答える