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变成整数,浮点数进行比较会出现错误