• 21-03-2015, 18:07:16
    #1
    Sanal pos uygulaması için en son bankaya veri gönderiyorum ve cevap dönüyor ama bu gelen cevabın içinden message verisini almam gerekiyor ama bu veriyi alamıyorum.



         $ch=curl_init();
            curl_setopt($ch, CURLOPT_URL, $strHostAddress);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_POST, 1) ;
            curl_setopt($ch, CURLOPT_POSTFIELDS, "data=".$strXML);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
            $result = curl_exec($ch);
        	 
           if (curl_errno($ch)) {
               print curl_error($ch);
           } else {
               curl_close($ch);
           }
    	   
    
    $cek=explode("<message>",$result);
    $cek2=explode("</message>",$cek[1]);
    $mesaj=$cek2[0];
    
    echo $mesaj;

    yapıyorum ama hiç bir şey olmuyor nerde hata yapıyor olabilirim, bu arada echo $result yaptığımda aşağıdaki gibi bir veri alıyorum.

    <gvpsresponse>
    <mode></mode>
    <terminal>
      <provuserid>PROVAUT</provuserid>
      <userid>4444444</userid>
      <id>4444444</id>
      <merchantid>444444</merchantid>
    </terminal>
    <customer>
     <ipaddress>845.45.4.5</ipaddress>
    <emailaddress>eticaret@garanti.com.tr</emailaddress></customer>
    <order><orderid>555555</orderid>
    <groupid></groupid></order>
    <transaction>
    <response>
       <source>HOST
       <code>00</code>
       <reasoncode>00</reasoncode>
        <message>Approved</message>
        <errormsg></errormsg>
       <syserrmsg></syserrmsg>
    </response>
    <retrefnum>1111</retrefnum>
    <authcode>1111</authcode>
    <batchnum>1111</batchnum>
    <sequencenum>1111</sequencenum>
    <provdate>20150321 14:16:05</provdate>
    <cardnumbermasked>44444******4444</cardnumbermasked>
    <cardholdername>hh*** hh***</cardholdername>
    <cardtype>BONUS</cardtype>
    <hashdata>444444</hashdata>
    <hostmsglist></hostmsglist>
    <rewardinqresult><rewardlist></rewardlist><chequelist></chequelist></rewardinqresult>
    </transaction>
    </gvpsresponse>
  • 21-03-2015, 18:58:59
    #2
    preg_match('@<message>(.*?)<\/message>@', $result, $message);
    echo $message[1];
  • 21-03-2015, 19:07:03
    #3
    PHPR ile yapıştırdım ama araya javascript fonksiyonu falan giriyordu pastebin'e koydum.
    http://pastebin.com/63iKXwhh
  • 21-03-2015, 19:20:27
    #4
    Çok teşekkürler arkadaşlar ama şöyle bir problemim olduğunu farkettim,

    Kaynak kodda <message>HATA</message> olarak görünüyor ama ekranda sadece HATA yazıyor. Ve ben mesela explode fonksiyonu kullanmıştım.

    $cek=explode("<message>",$results);
    falan gibi ama çalışmadı acaba dedimki sadece ekranda görünen üzerinden mi explode yapmalıyım. Ve denediğimde gerçekten sadece ekranda görünen üzerinden explode yapabiliyorum.

    Bu ayrıntıyı sizinle paylaştım ve şimdi verdiğiniz kodları deniyorum.
  • 23-03-2015, 16:48:58
    #5
    tanermacit adlı üyeden alıntı: mesajı görüntüle
    Çok teşekkürler arkadaşlar ama şöyle bir problemim olduğunu farkettim,

    Kaynak kodda <message>HATA</message> olarak görünüyor ama ekranda sadece HATA yazıyor. Ve ben mesela explode fonksiyonu kullanmıştım.

    $cek=explode("<message>",$results);
    falan gibi ama çalışmadı acaba dedimki sadece ekranda görünen üzerinden mi explode yapmalıyım. Ve denediğimde gerçekten sadece ekranda görünen üzerinden explode yapabiliyorum.

    Bu ayrıntıyı sizinle paylaştım ve şimdi verdiğiniz kodları deniyorum.
    simplexml ile bu söylediklerini çok rahat yapabilirsin. Regex ile tekerleği yeniden icat etmeye gerek yok.

    Kaynak: http://php.net/manual/en/book.simplexml.php