Ich bin ein Benutzer übergeben und übergeben von einem Telefongerät zu einer .php-Seite. Das funktioniert gut. Dann nehme ich diesen Benutzernamen und Kennwort und setze sie in eine Funktion, die in eine Datenbank eincheckt, wenn sie richtig sind. Das funktioniert auch gut. Der nächste Schritt ist, wenn die Authentifizierung korrekt ist, muss ich ein Formular senden. Um dies zu tun, ich habe den folgenden Code tryed, die nicht die Form zu senden:Senden Sie das Formular nach dem Login Authentifizierung
$login = \Fr\LS::login($user, $pass, false, false);
if($login === true){
//Some database stuff
$amount = "$price";
$id = "$num_fact";
$terminal = "01";
$moneda = "978";
$trans = "0";
$fuc = "335814141";
$urlOK = "https://www..com/.php";
$miObj = new RedsysAPI;
$miObj->setParameter("DS_MERCHANT_AMOUNT",$amount);
$miObj->setParameter("DS_MERCHANT_ORDER",$id);
$miObj->setParameter("DS_MERCHANT_MERCHANTCODE",$fuc);
$miObj->setParameter("DS_MERCHANT_CURRENCY",$moneda);
$miObj->setParameter("DS_MERCHANT_TRANSACTIONTYPE",$trans);
$miObj->setParameter("DS_MERCHANT_TERMINAL",$terminal);
$miObj->setParameter("DS_MERCHANT_MERCHANTURL",$url);
$miObj->setParameter("DS_MERCHANT_URLOK",$urlOK);
$miObj->setParameter("DS_MERCHANT_URLKO",$urlKO);
$params = $miObj->createMerchantParameters();
$claveModuloAdmin = '';
$signature = $miObj->createMerchantSignature($claveModuloAdmin);
?>
<form name="form_tpv" id="form_tpv" style="display:none" action="https://sis-t.redsys.es:/sis/realizarPago" method="POST">
<input type="text" name="Ds_SignatureVersion" value="HMAC_SHA256_V1"/>
<input type="text" name="DS_MerchantParameters" value="<?php echo $params; ?>"/>
<input type="text" name="Ds_Signature" value="<?php echo $signature; ?>"/>
<input type="submit" value="Realizar Pago"/>
</form>
<script>
setTimeout(function(){
document.getElementById('form_tpv').submit();
}, 1000);
</script>
Was ich mit dem Timeout tryed ist, dass, wenn es geladen wird (das Formular wird noch geladen), in einer Sekunde des Formular würde gesendet werden.
AKTUALISIERUNG: Dies ist, wie der Code wie jetzt aussieht:
$login = \Fr\LS::login($user, $pass, false, false);
if($login === true){
$amount = "120";
$id = "gr";
$terminal = "01";
$moneda = "978";
$trans = "0";
$fuc = "335814141";
$urlOK = "https://www..com/.php";
$miObj = new RedsysAPI;
$miObj->setParameter("DS_MERCHANT_AMOUNT",$amount);
$miObj->setParameter("DS_MERCHANT_ORDER",$id);
$miObj->setParameter("DS_MERCHANT_MERCHANTCODE",$fuc);
$miObj->setParameter("DS_MERCHANT_CURRENCY",$moneda);
$miObj->setParameter("DS_MERCHANT_TRANSACTIONTYPE",$trans);
$miObj->setParameter("DS_MERCHANT_TERMINAL",$terminal);
$miObj->setParameter("DS_MERCHANT_MERCHANTURL",$url);
$miObj->setParameter("DS_MERCHANT_URLOK",$urlOK);
$miObj->setParameter("DS_MERCHANT_URLKO",$urlKO);
$params = $miObj->createMerchantParameters();
$claveModuloAdmin = '';
$signature = $miObj->createMerchantSignature($claveModuloAdmin);
$url = 'https://sis-t.redsys.es:/sis/realizarPago';
$data = array(
'Ds_SignatureVersion'=> 'HMAC_SHA256_V1',
'DS_MerchantParameters' => $params,
'Ds_Signature' => $signature
);
//url-ify the data for the POST
foreach($data as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($data));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//YOUR LINK IS HTTPS
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);`
Vielen Dank für Ihren Kommentar und die Antwort zu vervollständigen. Aber wie würden Sie alle "$ Daten" im Array an "https://sis-t.redsys.es:25443/sis/realizarPago" senden? Ich kann es nicht – alberzyzz
Wenn das System nicht das gleiche ist, verwenden Sie cURL, um Daten zu senden, werde ich meine Antwort bearbeiten. – calexandre
Sorry, ich bin ein bisschen verloren und versuche es zu verstehen. Welchen Code soll ich verwenden? – alberzyzz