我有以下HTML表单
<form action="https://sandbox.paypal.com/cgi-bin/webscr" method="post" id="paypalpost" name="paypalpost">
<input type="hidden" name="rm" value="2"/>
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="vbnetdiscuss@yahoo.com">
<input type="hidden" name="item_name" value="Wedding Gift">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="amount" value="<?php echo $value['total'];?>">
<input type="hidden" name="return" value="http://developwithus.com/wedding/return.php">
<input type="hidden" name="cancel_return" value="http://developwithus.com/wedding/return.php?status=0">
<input onclick="return submitatoc();" disabled type="submit" name="submit" id="pay" class="buttonBlueBg" value="Checkout" style="cursor:pointer;">
</form>
我之前提到过返回网址为http://developwithus.com/wedding/return.php 在哪个,(我从https://cms.paypal.com/cms_content/US/en_US/files/developer/IPN_PHP_41.txt下载了这个并添加
<?php
print_r('<pre>');
print_r($_POST);
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// 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.sandbox.paypal.com', 443, $errno, $errstr, 30);
// assign posted variables to local variables
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
if (!$fp) {
// HTTP ERROR
echo "HTTP Error";
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
echo $res;
if (strcmp ($res, "VERIFIED") == 0) {
// 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
echo("verified");
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
echo ("invalid");
}
}
fclose ($fp);
}
echo "end";
?>
但是我收到Bad Request作为回复,如果我去paypal沙盒帐户并付款并退回。
Array
(
[CONTEXT] => wtgSziM4C5x0SI-9CmKcv2vkSeTLK5P_g6HqzC__YTYkcqziFNcB84p79Ja
[myAllTextSubmitID] =>
[cmd] => _flow
[mc_gross] => 100.00
[protection_eligibility] => Ineligible
[address_status] => confirmed
[payer_id] => Z5NWSYYVZW268
[tax] => 0.00
[address_street] => 1 Main St
[payment_date] => 09:04:08 May 14, 2011 PDT
[payment_status] => Pending
[charset] => windows-1252
[address_zip] => 95131
[first_name] => Test
[address_country_code] => US
[address_name] => Test User
[notify_version] => 3.1
[custom] =>
[payer_status] => verified
[address_country] => United States
[address_city] => San Jose
[quantity] => 1
[payer_email] => sujeet_1302606445_per@gmail.com
[verify_sign] => AozIjtjfCe0jUnbJpR4qPrW54olKAq.SrnEktGSocrk8yYv4bpR4lJX7
[txn_id] => 3HG58230W32603443
[payment_type] => instant
[last_name] => User
[address_state] => CA
[receiver_email] => vbnetdiscuss@yahoo.com
[pending_reason] => unilateral
[txn_type] => web_accept
[item_name] => Wedding Gift
[mc_currency] => EUR
[item_number] =>
[residence_country] => US
[test_ipn] => 1
[transaction_subject] => Wedding Gift
[handling_amount] => 0.00
[payment_gross] =>
[shipping] => 0.00
[merchant_return_link] => click here
[form_charset] => UTF-8
)
HTTP/1.1 400 Bad Request
Date: Sat, 14 May 2011 16:05:20 GMT
Server: Apache
Set-Cookie: c9MWDuvPtT9GIMyPc3jwol1VSlO=%7cgA9mW0Yh7-iBp435VBDwyCqtOtnlE8KAk8fT_sjGXHGx2mDzXgFit5ZdHd3BOOEUt_UDRW%7cRD1g8aAyLevIAP-u4WfCokEQkimrkpQk6v6rLZ_xD-pT1ATWuv5RtcK3NIbPPwfF1cXq3G%7c; domain=.paypal.com; path=/; Secure; HttpOnly
Set-Cookie: cookie_check=yes; expires=Tue, 11-May-2021 16:05:20 GMT; domain=.paypal.com; path=/; Secure; HttpOnly
Set-Cookie: Apache=10.191.196.11.9095130538912094; path=/; expires=Fri, 31-Mar-05 09:37:04 GMT
Connection: close
Content-Type: text/plain; charset=ISO-8859-1
你能告诉我我做错了什么吗?
INVALID响应正在运行
答案 0 :(得分:17)
删除* .paypal.com cookies 这是PayPal系统中的一个令人遗憾的错误,其中cookie过大而服务器出现错误 您可以使用两种不同的浏览器来避免此问题,例如用于PayPal Live的IE和用于PayPal沙箱的FF。
答案 1 :(得分:4)
您正在尝试自己打开套接字,因此您需要在$ header = POST下面自己添加HTTP Host标头。
$header .= "Host: www.sandbox.paypal.com\r\n";
答案 2 :(得分:0)
您可以尝试以下操作:https://www.x.com/thread/47663 那个家伙在paypal postback网址上删除了一些参数。 这个对我有用。 希望这个帮助