-1

カスタム getaway のコールバック関数で無効な XML タグを防ぐにはどうすればよいですか?

$h = fopen("banks/Mybank/log.txt", 'a');
        fwrite($h, 'ConfirmRequest: '.print_r($_REQUEST['ConfirmRequest'],true)."\n");  
        fclose($h);

出力は次のとおりです。

ConfirmRequest: <ConfirmRequest><TransactionId> Cool Attitude  #89</TransactionId><PaymentId>327600020200</PaymentId><PaymentDate>02.10.2013 23:41:26</PaymentDate><Amount>7000</Amount><CardType>VISA!472291******9871</CardType><Status>N</Status><Reason>Declined by merchant</Reason></ConfirmRequest>

結果は同じです

$_REQUEST['ConfirmRequest'];

$this->resuest->request['ConfirmRequest'];

==========================

gloomy.penguin に多大な感謝を!教えてください、私はここで何が間違っていましたか?

if(
        !openssl_verify(
                       'ConfirmRequest='.$ConfirmRequest,
                        base64_decode($signature),
                        openssl_get_publickey($cert)
                       )
            ) 
            die("signature error");




  $parser = xml_parser_create('');
        xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8");
        xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
            xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
        xml_parse_into_struct($parser, $ConfirmRequest, $vals);
        xml_parser_free($parser); 


            foreach ($vals as $data)
                  {
                   if ($data['tag']=='STATUS')
                   $Status=$data['value'];
                   if ($data['tag']=='PAYMENTID')
                   $PaymentId=$data['value'];
                   if ($data['tag']=='PAYMENTDATE')
                   $PaymentDate=$data['value'];
                   if ($data['tag']=='TRANSACTIONID')
                   $TransactionId=$data['value'];
                   if ($data['tag']=='AMOUNT')
                   $Amount=$data['value'];
                   if ($data['tag']=='REASON')
                   $Reason=$data['value'];
               if ($data['tag']=='CARDTYPE')
                   $CardType=$data['value'];

                  }


            $sta = fopen("banks/MyBank/status.txt", 'a');
            fwrite($sta, .print_r($data)."\n"); 
            fclose($sta);   

出力値は「1」です...

4

1 に答える 1

0

これが最初の問題に対する答えです。 html_entity_decode()

最初の問題とは関係のない新しい問題が発生したため、(質問に対する回答を選択して) この質問を閉じ、新しい問題についてまったく新しい投稿を作成することをお勧めします。人々があなたを助けることができるように、使用しているコードと変数の内容を含めてください。

于 2013-10-02T22:19:43.830 に答える