Dopo molte ore di incasinare e tentare di impostare quale dovrebbe essere il processo relativamente semplice di inviare un pagamento a www.sandbox.paypal.com e di essere reindirizzati a una pagina del mio sito con una transazione id in the querystring, l'ho finalmente raggiunto.Paypal errore PDT 4003
Ora ricevo un messaggio di errore "FAIL Error 4003".
Ecco il codice che sto usando. E 'praticamente la stessa come l'esempio PayPal (tutto ciò che ho fatto è eco le risposte):
<?php
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-synch';
$tx_token = $_GET['tx'];
$auth_token = "ZdoN6q4GLiRniR2BbOzEEF22GJOWHpVOXRtP7fAhBpvwwm5GyWcTzO_sSSO";
$req .= "&tx=$tx_token&at=$auth_token";
// post back to PayPal system to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
// If possible, securely post back to paypal using HTTPS
// Your PHP server will need to be SSL enabled
// $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
if (!$fp)
{
// HTTP ERROR
echo "HTTP Error";
}
else
{
fputs ($fp, $header . $req);
// read the body data
$res = '';
$headerdone = false;
while (!feof($fp))
{
$line = fgets ($fp, 1024);
if (strcmp($line, "\r\n") == 0) {
// read the header
$headerdone = true;
}
else if ($headerdone)
{
// header has been read. now read the contents
$res .= $line;
echo $line;
}
}
// parse the data
$lines = explode("\n", $res);
$keyarray = array();
if (strcmp ($lines[0], "SUCCESS") == 0)
{
for ($i=1; $i<count($lines);$i++)
{
list($key,$val) = explode("=", $lines[$i]);
$keyarray[urldecode($key)] = urldecode($val);
}
// check the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your Primary PayPal email
// check that payment_amount/payment_currency are correct
// process payment
$firstname = $keyarray['first_name'];
$lastname = $keyarray['last_name'];
$itemname = $keyarray['item_name'];
$amount = $keyarray['payment_gross'];
echo ("<p><h3>Thank you for your purchase!</h3></p>");
echo ("<b>Payment Details</b><br>\n");
echo ("<li>Name: $firstname $lastname</li>\n");
echo ("<li>Item: $itemname</li>\n");
echo ("<li>Amount: $amount</li>\n");
echo ("");
}
else if (strcmp ($lines[0], "FAIL") == 0) {
echo "Failure: " . $lines[0];
// log for manual investigation
}
}
fclose ($fp);
?>
<br />
Thank you for your payment. Your transaction has been completed, and a receipt for your purchase has been emailed to you. You may log into your account at <a href="http://www.sandbox.paypal.com/ie">www.sandbox.paypal.com/ie</a> to view details of this transaction.
ho fatto in modo di confermare gli indirizzi email per entrambi i miei conti commerciante e acquirente sandbox e attivato PDT.
Il cliente viene reindirizzato correttamente di nuovo al mio 'grazie' pagina con il seguente paramaters querystring - ?tx=4FU63684496248523&st=Pending&amt=29.90&cc=EUR&cm=&item_number=
Qualcun altro ha incontrato questo messaggio di errore? Se sì, quali sono le solite cause?
realtà ho chiamato paypal su tale errore e mi hanno dato una risposta criptica, dicendo che l'errore viene da alcuni errori di configurazione nel mio carrello (sto usando ubercart). Non molto utile a tutti ... – Jukebox
Ecco un'altra FAQ da inserire nel mix: https://ppmts.custhelp.com/app/answers/detail/a_id/13 – Jukebox
Sto usando un semplice modulo per inviare la richiesta di pagamento a paypal e sto effettivamente usando il proprio codice per elaborare la risposta. Ho sviluppato siti web e applicazioni per un tempo abbastanza lungo ma sono riuscito a stare alla larga da paypal per la maggior parte del tempo. Sono sbalordito di quanto sia pessima la loro documentazione, la configurazione dei test e il servizio generale. – TGuimond