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 秒)到我们的网站

为啥 main 的默认返回值为 0 而不是 EXIT_SUCCESS?

PayPal\Api\Payment - getState()