尝试通过paypal的REST API(php)退款时TRANSACTION_REFUSED

时间:2014-07-10 15:06:30

标签: php rest paypal

我正在尝试使用REST API和沙盒帐户退款。我做了以下事情:

$payment = \PayPal\Api\Payment::get("PAY-97Y13156VA872894FKO7Kxxx", $apiContext);
$resources = $payment->transactions[0]->getRelatedResources();
$saleId = $resources[0]->getSale()->getId();
$amt = new \PayPal\Api\Amount();
$amt->setCurrency('EUR')->setTotal('6.00');
$refund = new \PayPal\Api\Refund();
$refund->setAmount($amt);

$sale = new \PayPal\Api\Sale();
$sale->setId($saleId);
try {
    $sale->refund($refund, $apiContext);
} catch (\PayPal\Exception\PPConnectionException $ex) {
    var_dump($ex);
    exit;
}

这会出现以下错误:

  

{“name”:“TRANSACTION_REFUSED”,“message”:“请求是   拒绝{0}”, “information_link。”: “https://developer.paypal.com/webapps/developer/docs/api/#TRANSACTION_REFUSED”, “debug_id”: “2334757d51bcd”}

文档对于此错误可归因于什么没有帮助。原始交易金额为16欧元。有没有办法进一步调试这个或任何可能出错的提示?

2 个答案:

答案 0 :(得分:1)

我现在面临同样的问题。试图退还全部16欧元?就我而言,这是我可以退还“PayPal销售交易”的唯一方式。我真的很想知道为什么在特定情况下不能部分退还销售交易。文档在这里说的是交易结束被拒绝的10个可能原因,但不完全是为什么。

修改: 因此,经过一些挖掘,我认为问题(在我的情况下)存在于我的'辅助者'帐户的配置中。

假设您正在使用沙箱,请转到:[仪表板]并单击[帐户](标题为“沙盒”下方列出)。单击左侧的(辅助器)帐户,然后单击配置文件以查看帐户的设置。确保您具有与下图中相同的设置

Account settings

例如,我将“付款审核”选项设置为“开启”,因此我无法在销售中获得部分退款。

出于调试目的

查找您的销售对象(PayPal Sale Object)以查看其eligibility
在销售对象中查找属性protection_eligibilityprotection_eligibility_type

我希望这会有所帮助

-G。

答案 1 :(得分:0)

经常导致问题的一件事是买家&卖家帐户必须不同。在沙盒中,这意味着创建两个测试帐户:' -facilitator'帐户对应于客户端凭据。您必须创建另一个代表虚假消费者。