Sau nhiều giờ làm phiền và cố gắng thiết lập quy trình tương đối đơn giản để gửi thanh toán đến www.sandbox.paypal.com và được chuyển hướng trở lại trang trên trang web của tôi bằng giao dịch id trong chuỗi truy vấn, cuối cùng tôi đã đạt được nó.Lỗi PDT Paypal 4003
Tôi hiện đang nhận được thông báo lỗi 'FAIL Error 4003'.
Đây là mã tôi đang sử dụng. Đó là khá nhiều giống như ví dụ paypal (tất cả những gì đã làm được echo ra các câu trả lời):
<?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.
Tôi đã thực hiện chắc chắn để xác nhận địa chỉ email cho cả hai tài khoản thương gia và người mua trong sandbox của tôi và kích hoạt PDT.
Các khách hàng được chuyển hướng một cách chính xác trở lại 'cảm ơn' trang của tôi với paramaters chuỗi truy vấn sau đây - ?tx=4FU63684496248523&st=Pending&amt=29.90&cc=EUR&cm=&item_number=
Đã có người khác gặp phải thông báo lỗi này? Nếu vậy, nguyên nhân thông thường là gì?
Tôi thực sự gọi là paypal về lỗi đó và họ đã cho tôi một câu trả lời khó hiểu, nói rằng các lỗi xuất phát từ một số cấu hình sai trong giỏ hàng của tôi (Tôi đang sử dụng ubercart). Không hữu ích chút nào ... – Jukebox
Đây là một Câu hỏi thường gặp khác để đưa vào danh sách kết hợp: https://ppmts.custhelp.com/app/answers/detail/a_id/13 – Jukebox
Tôi đang sử dụng biểu mẫu đơn giản để gửi yêu cầu thanh toán đến paypal và am thực sự sử dụng mã riêng của họ để xử lý phản hồi. Tôi đã phát triển các trang web và ứng dụng trong một thời gian khá dài nhưng đã cố gắng tránh xa paypal trong hầu hết thời gian. Tôi kinh ngạc như thế nào xấu tài liệu của họ, thiết lập thử nghiệm và dịch vụ chung là. – TGuimond