我刚刚完成了支持Paypal的支付网关服务器。该网关还具有用于Paypal和Skrill通知的自适应IPN服务器。在实施和测试期间,我使用了Paypal的IPN manual提供的文档。在测试期间,一切都进行了#34; All Okay"。我用文档给出的例子来测试它," All Okay":
mc_gross=19.95&protection_eligibility=Eligible&address_status=confirmed&payer_id=LPLWNMTBWMFAY&tax=0.00&address_street=1+Main+St&payment_date=20%3A12%3A59+Jan+13%2C+2009+PST&payment_status=Completed&charset=windows-1252&address_zip=95131&first_name=Test&mc_fee=0.88&address_country_code=US&address_name=Test+User¬ify_version=2.6&custom=&payer_status=verified&address_country=United+States&address_city=San+Jose&quantity=1&verify_sign=AtkOfCXbDm2hu0ZELryHFjY-Vb7PAUvS6nMXgysbElEn9v-1XcmSoGtf&payer_email=gpmac_1231902590_per%40paypal.com&txn_id=61E67681CH3238416&payment_type=instant&last_name=User&address_state=CA&receiver_email=gpmac_1231902686_biz%40paypal.com&payment_fee=0.88&receiver_id=S8XGHLYDW9T3S&txn_type=express_checkout&item_name=&mc_currency=USD&item_number=&residence_country=US&test_ipn=1&handling_amount=0.00&transaction_subject=&payment_gross=19.95&shipping=0.00
当我们将网关部署到我们的生产服务器并使用Paypal的IPN Simulator提供的模拟表单进行测试时,问题就出现了。好吧,当我点击Send IPN
按钮时,消息没有到达我的服务器,几秒钟后(更像是分钟),出现HTTP错误状态响应:
是 502 Bad Gateway !那是什么呀?!?消息甚至没有到达服务器。一些评论,我们没有使用标准的80/443端口,我们只支持" POST"消息。 IPN消息再次进入我们的服务器,我们使用其他测试工具对其进行测试,并且消息成功到达。
请帮忙!
>>我们正在使用Express Checkout!
答案 0 :(得分:-1)
您应该避免将主机放入标题中 更改此内容:
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: www.paypal.com\r\n"; *****DELETE THIS LINE*****
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
为此:
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";