ottscho
Goto Top

POST per PHP und die URL danach aufrufen

Hallo,

ich habe einen Zahlungsanbieter, welche die Daten per POST übermittlen benötigt.
Als Beispiel gibt es dies hier:

<?php
	include("PlatiOnlineRo/clspo.php");  
	include("PlatiOnlineRo/RSALib.php");  
	$my_class = new PO3();

	$my_class->LoginID = "test";  
	$my_class->KeyEnc = $ke;
	$my_class->KeyMod = $km;

	$my_class->amount = "1.00";  
	$my_class->currency = "RON";  
	$my_class->OrderNumber = "1";  
	$my_class->action = "2";  
	$ret = $my_class->InsertHash_Auth();

?>

	<form id="registerForm" autocomplete="off" method="post" action="https://url">  
		<?php echo $ret;?>
		<input type="hidden" name="f_login" value="<?php echo $my_class->LoginID;?>">  
		<input type="hidden" name="f_show_form" value="1">  
		<input type="hidden" name="f_amount" value="<?php echo $my_class->amount;?>">  
		<input type="hidden" name="f_currency" value="<?php echo $my_class->currency;?>">  
		<input type="hidden" name="f_order_number" value="<?php echo $my_class->OrderNumber;?>">  
		<input type="hidden" name="F_Language" value="ro" >  
		<input type="hidden" name="F_Lang" value="ro">  
		<input type="hidden" name="f_order_string" value="<descriere">  
		<input type="hidden" name="f_first_name" id="f_first_name" value="">  
		<input type="hidden" name="f_last_name" id="f_last_name" value="">  
		<input type="hidden" name="f_cnp" value="-">  
		<input type="hidden" name="f_address" id="f_address" value="">  
		<input type="hidden" name="f_city" id="f_city" value="">  
		<input type="hidden" name="f_state" id="f_state" value="">  
		<input type="hidden" name="f_zip" id="f_zip" value="">  
		<input type="hidden" name="f_country" id="f_country" value="">  
		<input type="hidden" name="f_phone" id="f_phone" value="">  
		<input type="hidden" name="f_email" id="f_email" value="">  
		<input type="hidden" name="f_company" value="">  
		<input type="hidden" name="f_reg_com" value="">  
		<input type="hidden" name="f_cui" value="">  
<!-- daca e test mode START here -->
		<input type="hidden" name="f_Test_Request" value="1">  
<!-- daca e test mode END here -->
		<input type="submit" value="Plateste" />  
	</form>

Nun muss ich das aber in PHP machen. Soweit konnte ich mir helfen, aber ich weiß nicht wie ich nach dem übermittlen der Daten die URL öffnen kann:

				
$fp = fsockopen($host,80);
fputs($fp, "POST $path HTTP/1.1\n" );  
fputs($fp, "Host: $host\n" );  
fputs($fp, "Content-type: application/x-www-form-urlencoded\n" );  
fputs($fp, "Content-length: ".strlen($data_to_send)."\n" );  
fputs($fp, "Connection: close\n\n" );  
fputs($fp, $data_to_send);
fclose($fp);

Bin für jeden Tipp dankbar.

Content-ID: 174718

Url: https://administrator.de/contentid/174718

Ausgedruckt am: 25.11.2024 um 15:11 Uhr

dog
dog 15.10.2011 um 22:24:14 Uhr
Goto Top
Spar dir lieber die Bastelei mit fsock und nimm die cURL-Funktionen, das hat alle Funktionen schon die man braucht.
ottscho
ottscho 16.10.2011 um 15:39:29 Uhr
Goto Top
Danke, ich bin gerade dran. Aber mein Problem bleibt gleich.

Wie wechsle ich danach auf die Seite, so dass die Paramter benutzt werden?

define('POSTURL', 'https://secure2.plationline.ro//trans30.asp');  
define('POSTVARS', 'f_login=DEMO&f_amount=1');  // POST VARIABLES TO BE SENT  
  
 $ch = curl_init(POSTURL);
 curl_setopt($ch, CURLOPT_POST      ,1);
 curl_setopt($ch, CURLOPT_POSTFIELDS    ,POSTVARS.$Email);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION  ,1); 
 curl_setopt($ch, CURLOPT_HEADER      ,0);  // DO NOT RETURN HTTP HEADERS 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);  // RETURN THE CONTENTS OF THE CALL
 $Rec_Data = curl_exec($ch);
 
 ob_start();
 header("Content-Type: text/html");  
 $Temp_Output = ltrim(rtrim(trim(strip_tags(trim(preg_replace ( "/\s\s+/" , " " , html_entity_decode($Rec_Data)))),"\n\t\r\h\v\0 ")), "%20");  
 $Temp_Output = ereg_replace (' +', ' ', trim($Temp_Output));  
 $Temp_Output = ereg_replace("[\r\t\n]","",$Temp_Output);  
 $Temp_Output = substr($Temp_Output,307,200);
 echo $Temp_Output;
 $Final_Out=ob_get_clean();
 echo $Final_Out;  
 curl_close($ch);

 header("Location:https://secure2.plationline.ro//trans30.asp");  

Nun lade ich zwar auf der Seite, an welche ich die POST Variablen geschickt habe, aber ohne Variablen!
dog
dog 16.10.2011 um 17:59:58 Uhr
Goto Top
Nun lade ich zwar auf der Seite, an welche ich die POST Variablen geschickt habe, aber ohne Variablen!

Was meinst du damit?
ottscho
ottscho 16.10.2011 um 18:09:19 Uhr
Goto Top
So sieht das Beispiel als HTML FORM aus.
<html>
<body>
<?php
	include("PlatiOnlineRo/clspo.php");  
	include("PlatiOnlineRo/RSALib.php");  
	$my_class = new PO3();

	$my_class->LoginID = "DEMO";  
	$my_class->KeyEnc = $ke;
	$my_class->KeyMod = $km;

	$my_class->amount = "1.00";  
	$my_class->currency = "RON";  
	$my_class->OrderNumber = "1";  
	$my_class->action = "2";  
	$ret = $my_class->InsertHash_Auth();

?>

	<form id="registerForm" autocomplete="off" method="post" action="https://secure2.plationline.ro/trans30.asp">  
		<?php echo $ret;?>
		<input type="hidden" name="f_login" value="<?php echo $my_class->LoginID;?>">  
		<input type="hidden" name="f_show_form" value="1">  
		<input type="hidden" name="f_amount" value="<?php echo $my_class->amount;?>">  
		<input type="hidden" name="f_currency" value="<?php echo $my_class->currency;?>">  
		<input type="hidden" name="f_order_number" value="<?php echo $my_class->OrderNumber;?>">  
		<input type="hidden" name="F_Language" value="ro" >  
		<input type="hidden" name="F_Lang" value="ro">  
		<input type="hidden" name="f_order_string" value="<descriere">  
		<input type="hidden" name="f_first_name" id="f_first_name" value="">  
		<input type="hidden" name="f_last_name" id="f_last_name" value="">  
		<input type="hidden" name="f_cnp" value="-">  
		<input type="hidden" name="f_address" id="f_address" value="">  
		<input type="hidden" name="f_city" id="f_city" value="">  
		<input type="hidden" name="f_state" id="f_state" value="">  
		<input type="hidden" name="f_zip" id="f_zip" value="">  
		<input type="hidden" name="f_country" id="f_country" value="">  
		<input type="hidden" name="f_phone" id="f_phone" value="">  
		<input type="hidden" name="f_email" id="f_email" value="">  
		<input type="hidden" name="f_company" value="">  
		<input type="hidden" name="f_reg_com" value="">  
		<input type="hidden" name="f_cui" value="">  
<!-- daca e test mode START here -->
		<input type="hidden" name="f_Test_Request" value="1">  
<!-- daca e test mode END here -->
		<input type="submit" value="Plateste" />  
	</form>
</body>
</html>

Klicke ich hier auf SUBMIT so öffnet sich die Seite https://secure2.plationline.ro/trans30.asp (zahlungsanbieter) und ich sehe ein spezielles Formular, welches schon mit den Daten welches ich per POST schicke gefüllt ist.

Nun habe ich aber nicht die Möglichkeit mit hidden From felder zu arbeiten und möchte das über curl machen. Mache ich das aber so wie oben gepostet, kommt die Fehlermeldung auf der Seite, dass keine post Variablen übermittelt werden.

Error !!!
Parameter F_Login is null
dog
dog 16.10.2011 um 18:20:21 Uhr
Goto Top
kommt die Fehlermeldung auf der Seite, dass keine post Variablen übermittelt werden.

Das stimmt ja auch.

Wenn du das mit PHP machst sendet dein Server ein POST.
Du sagst dann aber dem Client er soll die Seite per GET aufrufen:

header("Location: https:/secure2.plationline.ro/trans30.asp");  

Das sind für die Seite zwei völlig verschiedene Nutzer.
ottscho
ottscho 16.10.2011 um 19:53:38 Uhr
Goto Top
Ja, aber wie komme ich bei Post request auf die Zielseite?

Das verstehe ich nicht!

Mache ich es über das Formular in der html Seite, so lande ich ja auf der Zielseite.
dog
dog 16.10.2011 um 19:55:36 Uhr
Goto Top
Du musst dich entscheiden ob der Benutzer auf die Zielseite soll oder das ganze im Hintergrund über den Server ablaufen soll.
ottscho
ottscho 16.10.2011 um 20:06:59 Uhr
Goto Top
Der Benutzer muss auf die Zielseite, da dies die Zahlungseite des Zahlungsanbieter ist.
Und an diese muss ich eben die Post Variablennübermitteln, wie in dem Beispiel oben mit Formular.
dog
dog 16.10.2011 um 20:13:25 Uhr
Goto Top
Dann ist auch die einzige Möglichkeit die im Originalbeispiel.
ottscho
ottscho 16.10.2011 um 20:20:34 Uhr
Goto Top
Mhh, okay danke. Dann muss ich schauen, wie ich das mache.