Paypal Success 交易返回值为空 - 有时
Posted
技术标签:
【中文标题】Paypal Success 交易返回值为空 - 有时【英文标题】:Paypal Success transation return values empty-- sometimes 【发布时间】:2013-10-22 07:10:42 【问题描述】:我的实时网站中的贝宝集成存在问题。
对于 90% 的交易,我没有遇到任何问题。有时只有我面临以下问题。
问题:交易成功后,我没有收到诸如交易 ID、消息等 Pay pal 值。所有值都显示为空。它仅适用于 10% 的交易。请告诉我可能是什么问题。查不出原因
提前致谢..
【问题讨论】:
这是用于 API 还是 IPN? 仅限 API。我观察到的另一件事是,从最后几笔交易中,paypal 在成功交易后甚至没有发送回我的网站。我检查了我的贝宝交易记录,一切都成功了。但在我的网站上没有更新。我的商家帐户有什么需要更改的吗? 您能否发布一些电话或详细说明失败的原因?您的问题仍然含糊不清。 感谢 Machavity 的快速回复。问题是交易完成后我无法自动重定向到我的网站。但是,有时它会使用空数组值。这适用于测试帐户,但不适用于真实帐户 你能发布你的SetExpressCheckout
电话吗?
【参考方案1】:
$paypal_email = '5345345345345f';
$cur_dir='http://'.$_SERVER['SERVER_NAME'] . dirname($_SERVER['REQUEST_URI']);
$return_url = $cur_dir.'/paymentsucess.php';
$cancel_url = $cur_dir.'/payment-not-sucess.php';
$notify_url = $cur_dir.'/payments.php';
extract($_POST);
$item_name = $exam_name;
$item_amount = $amount;
$userid=$userid;
if (!isset($_POST["txn_id"]) && !isset($_POST["txn_type"]))
$querystring = "?business=".urlencode($paypal_email)."&";
$querystring .= "item_name=".urlencode($item_name)."&";
$querystring .= "amount=".urlencode($item_amount)."&";
//loop for posted values and append to querystring
foreach($_POST as $key => $value)
$value = urlencode(stripslashes($value));
$querystring .= "$key=$value&";
$querystring .= "return=".urlencode(stripslashes($return_url))."&";
$querystring .= "cancel_return=".urlencode(stripslashes($cancel_url))."&";
$querystring .= "notify_url=".urlencode($notify_url);
header('location:https://www.paypal.com/cgi-bin/webscr'.$querystring);
exit();
else
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value)
$value = urlencode(stripslashes($value));
$value = preg_replace('/(.*[^%^0^D])(%0A) (.*)/i','$1%0D%0A$3',$value);// IPN fix
$req .= "&$key=$value";
$data['item_name'] = $_POST['item_name'];
$data['item_number'] = $_POST['item_number'];
$data['payment_status'] = $_POST['payment_status'];
$data['payment_amount'] = $_POST['mc_gross'];
$data['payment_currency'] = $_POST['mc_currency'];
$data['txn_id'] = $_POST['txn_id'];
$data['receiver_email'] = $_POST['receiver_email'];
$data['payer_email'] = $_POST['payer_email'];
$data['custom'] = $_POST['custom'];
$data['userid'] = $_POST['userid'];
// 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 ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
if (!$fp)
// HTTP ERROR
else
fputs ($fp, $header . $req);
while (!feof($fp))
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0)
// Validate payment (Check unique txnid & correct price)
$valid_txnid = check_txnid($data['txn_id']);
$valid_price = check_price($data['payment_amount'], $data['item_number']);
// PAYMENT VALIDATED & VERIFIED!
if($valid_txnid && $valid_price)
$orderid = updatePayments($data);
if($orderid)
else
else
else if (strcmp ($res, "INVALID") == 0)
fclose ($fp);
【讨论】:
以上是关于Paypal Success 交易返回值为空 - 有时的主要内容,如果未能解决你的问题,请参考以下文章
PayPal PaymentDetails getReceiverList() 为空。为啥?
有啥方法可以在 php 的返回页面中从 PayPal 获取交易详细信息?
Paypal 交易完成后立即自动返回(无需 10 秒)到我们的网站