1.sandbox下payment status为pending,pending reason为payment review 解决办法:
 这个原因是买方或卖房开启了付款审核,将付款审核关闭,payment status就会变成Completed
 
 
 在http://developer.paypal.com/ 登陆
 在Dashboard页面的左侧菜单中点击Sandbox的Accounts
 编辑买方或者卖方的个人设置Profile 
 选择settings,把payment review的设置改成off
 
 
 
 
 2.有的空间不支持fsockopen函数,可以使用pfsockopen函数
 $fp = pfsockopen (‘www.sandbox.paypal.com‘, 80, $errno, $errstr, 60);
 网址是www.sandbox.paypal.com,端口号是80,不是443
 经过反复测试,pfsockopen应该使用ssl网址,并且端口是443
 $fp = pfsockopen (‘ssl://www.sandbox.paypal.com‘, 443, $errno, $errstr, 60); 
 
 
 
 
 3.paypal身份标记获得
 在paypal用户中心,点击我的销售工具-》网站习惯设定-》更新
 将网站付款的自动返回设置成自动返回,并输入返回url地址
 并把付款数据传输设置成开启
 设置完毕,返回,再重新点击更新,可以在付款数据传输下边找到身份标记
 
 
 www.daurkuu.com/paypal/return.php
 商家名称: firstYh lastYh
 安全的商家账号 A3UN44WEK54L4
 身份标记:Qoc5A3z7roYZu_nU-LdCOPj80OTlcUST1zwrUExom1ycWuJM1l8STyTi6Hi
 
 
 
 
 4.paypal验证返回值是如下情况:
     HTTP/1.0 302 Found
     Location: https://www.sandbox.paypal.com
     Server: BigIP
     Connection: close
     Content-Length: 0
 
 
     fsockopen使用ssl网址,并且端口号为443,
     $header应该如下拼接
     $header ="POST /cgi-bin/webscr HTTP/1.1\r\n";
     $header .="Content-Type: application/x-www-form-urlencoded\r\n";
     $header .="Host: www.sandbox.paypal.com\r\n";
     $header .= "Content-Length: " . strlen($req) . "\r\n";
     $header .="Connection: close\r\n\r\n";
 
 
     再次测试,成功通过
     注意:检验总价时,应该将价格乘上100变成整数,浮点数进行比较会出现错误
 
 
 
 
paypal IPN 接口小结
原文:http://my.oschina.net/u/946060/blog/382371