我们已经用Paypal沙盒尝试并测试了我们的网站,它可以完全扣除金额。
我们将API的详细信息切换到Paypal和链接。我们已经尝试了几个贝宝账户,看看它是否有效(他们都有足够的资金进行交易)。
我们通过我们的returnUrl页面上的API收到此回复-API调用失败的
Array ( [TIMESTAMP] => 2012%2d07%2d15T19%3a31%3a43Z [CORRELATIONID] => 927a89205e54a
[ACK] => Failure [VERSION] => 65%2e1 [BUILD] => 3300093 [L_ERRORCODE0] => 13113
[L_SHORTMESSAGE0] => Buyer%20Cannot%20Pay%2e [L_LONGMESSAGE0] =>
The%20Buyer%20cannot%20pay%20with%20PayPal%20for%20this%20Transaction%2e [L_SEVERITYCODE0] => Error )
进行最后API调用的Php-
$APIUSERNAME="*****";
$APIPASSWORD="***";
$APISIGNATURE="*****";
$ENDPOINT = "https://api-3t.paypal.com/nvp";
//$ENDPOINT = "https://api-3t.sandbox.paypal.com/nvp";
$VERSION = "64";
//Build the Credential String:
$cred_str = "USER=" . $APIUSERNAME . "&PWD=" . $APIPASSWORD . "&SIGNATURE=" .
$APISIGNATURE . "&VERSION=" . $VERSION;
//Build NVP String for GetExpressCheckoutDetails
$nvp_str = "&METHOD=GetExpressCheckoutDetails&TOKEN=" . urldecode($token);
//Lets combine both strings then make the API call
$req_str = $cred_str . $nvp_str; $response = PPHttpPost($ENDPOINT, $req_str);
上面的数组来自于我从贝宝收到我的最后确认。
//check Response
if($doresponse['ACK'] == "Success" || $doresponse['ACK'] == "SuccessWithWarning") {
echo "completed"; //just put to test
include "finishtransaction.php"; //cancels my cart sessions
} else{
echo "The API Call Failed"; print_r($doresponse);
}
谷歌上没有太多关于这个错误的信息,甚至在API错误代码中也没有。以前有人来过这里吗?
贝宝API错误代码显然没有太大帮助。
错误代码13113,或"买方无法使用PayPal支付这笔交易"意味着PayPal拒绝处理交易,从而采取了安全措施。这可能是由于以下原因之一(还有更多,但这里有一些):
- 买家的账户里没有足够的钱
- 买家的账户中没有足够的钱,并且他们的信用卡收费有问题(如果他们在设置中设置了信用卡)
- 买家要求卖家退还另一件商品的退款,因此PayPal阻止了买家的账户向卖家转账,直到情况得到解决
- 买家涉嫌欺诈,因此他们的账户被冻结
- 由于其他原因,买方的账户仅限于向特定卖方汇款
- 由于某些特定原因,买方的账户被完全冻结
不幸的是,如果不仔细查看您的代码,任何人都无法告诉您太多信息。我会检查我的代码,并确保设置了所有合适的标志和未设置的标志。如果你等了几个小时,仍然收到错误(尤其是在多个/新账户上),那么你需要联系PayPal。
我知道这很糟糕,但只有PayPal才能告诉你交易失败的确切原因。