<html>

<?php

function GenerateSaleRequest($merchantId, $merchantPassword, $cardNumber, $expiry, $cvv2, $brand, $amountType,$amountCode, $amount, $eci, $cavv)
{

                $xmlDocument = new DOMDocument( "1.0", "UTF-8" );


                $posRequest = $xmlDocument->createElement( "PosRequest" );
                $originator = $xmlDocument->createElement( "Originator" );
                $acquirer = $xmlDocument->createElement( "Acquirer" );

                $acquirer->setAttribute( "ID", "1" );

                $merchant = $xmlDocument->createElement( "Merchant" );

                $merchant->setAttribute( "HostMerchantId", $merchantId);
                $merchant->setAttribute( "Password", $merchantPassword );

                $trnx = $xmlDocument->createElement( "Trnx" );
                $trnx->setAttribute( "Type", "Sale" );

                $payment = $xmlDocument->createElement( "Payment" );

                $pan = $xmlDocument->createElement( "PAN" );

                $pan->setAttribute( "PAN", $cardNumber); // Kart Numarası
                $pan->setAttribute( "Expiry", $expiry);
                $pan->setAttribute( "CVV2",$cvv2);
                $pan->setAttribute( "Brand", $brand);

                $pamount = $xmlDocument->createElement("Amount");
                $pamount->setAttribute( "Amount", $amount); // 10,25 YTL
                $pamount->setAttribute( "Type", $amountType);
                $pamount->setAttribute( "Code", $amountCode);

                $originator->appendChild($acquirer);
                $originator->appendChild($merchant);

                $payment->appendChild($pan);
                $payment->appendChild($pamount);

                if( $eci != "" )
                {
                               
                               $options = $xmlDocument->createElement("Options");
                               
                               $peci = $xmlDocument->createElement("Item");
                    $peci->setAttribute("Name", "ECI");
                    $peci->setAttribute("Value", $eci);

                                               
                               $pcavv = $xmlDocument->createElement("Item");
                    $pcavv->setAttribute("Name", "CAVV");
                    $pcavv->setAttribute("Value", $cavv);
                        
                               $options->appendChild($peci);
                               $options->appendChild($pcavv);
                               $payment->appendChild($options);                     
                }

                $posRequest->appendChild($originator);
                $posRequest->appendChild($trnx);
                $posRequest->appendChild($payment);
                $xmlDocument->appendChild($posRequest);
                
                return $xmlDocument->saveXML();
}

$request = GenerateSaleRequest("000000000070780", "", "4446760000012552", "200910", "123", "Visa", "1","949", "1100", "", "");

// print $request;

$client = new SoapClient("https://sanalpos-test.ziraatbank.com.tr/?WSDL"); 
$param=array('parameters' => array('xmlRequest'=>$request));
$result = $client->__call("Process",$param);
print($result->ProcessResult);

$resultDocument = new DOMDocument();
$resultDocument->loadXML($result->ProcessResult);
$resultNode = $resultDocument->getElementsByTagName("Result")->item(0);
$code = $resultNode->getElementsByTagName("Code")->item(0)->nodeValue;
$trnxId = $resultDocument->getElementsByTagName("TrnxID")->item(0)->nodeValue;  
$host = $resultDocument->getElementsByTagName("Host")->item(0);
$RC = null;
$message = null;
$authCode = null;
$RRN = null;


if($host != null ) 
{             
                foreach($host->childNodes as $node)
                {
                               switch($node->localName)
                               {
                                               case "RC":
                                                               $RC = $node->nodeValue;
                                               break;
                                               case "Message":
                                                               $message = $node->nodeValue;
                                               break;
                                               case "AuthCode":
                                                               $authCode = $node->nodeValue;
                                               break;
                                               case "RRN":
                                                               $RRN = $node->nodeValue;
                                               break;
                               }
                }

}


if( $code == 0 )
                print("<br>İşlem Başarılı<br>");
else
                print("İşlem İsteği Reddedildi <br>");    


                print("İşlem Numarası :");print($trnxId);print("<br>");
                print("Sanal Pos Cevabı :");print($code);print("<br>"); 
                print("Provizyon Cevabı :");print($RC);print("<br>");
                print("Provizyon Mesajı :");print($message);print("<br>");
                print("Provizyon Kodu :");print($authCode);print("<br>");
                print("Provizyon İşlem No :");print($RRN);print("<br>");

?>
</html>
Daha önce Ziraat Bankası sanal pos entegrasyonu yapmadım bu yüzden netten biraz araştırma yaptım yukarıdaki kodları buldum bunları kendinize göre düzenleyip test edebilirsiniz.