访问https://api.sandbox.paypal.com/v1/payments/payment时获得Http响应代码400

时间:2015-03-20 07:58:43

标签: paypal-rest-sdk

我正在使用PayPal休息sdk / api并向我的客户收费,但之后我在循环中多次调用收费部分然后在我的客户的帐户第一次被借记但其他客户的帐户没有借记我试图调试我发现此错误“访问https://api.sandbox.paypal.com/v1/payments/payment时获得Http响应代码400”

当循环第一次调用Rest sdk / api charge函数时,它会成功,但是当循环进一步运行时它会显示错误。

如果您需要我方提供的任何其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:2)

如果在try / catch块中包装任何需要$apiContext的调用并检查SDK抛出的异常,那么调试问题会更好。我有一个我一直在使用的功能,这对我很有用。

function PaypalError($e){

    $err = "";

    do {
        if (is_a($e, "PayPal\Exception\PayPalConnectionException")){
            $data = json_decode($e->getData(),true);
            $err .= $data['name'] . " - " . $data['message'] . "<br>";
            if (isset($data['details'])){
                $err .= "<ul>";
                foreach ($data['details'] as $details){
                    $err .= "<li>". $details['field'] . ": " . $details['issue'] . "</li>";
                }
                $err .= "</ul>";
            }
        }else{
            //some other type of error
            $err .= sprintf("%s:%d %s (%d) [%s]\n", $e->getFile(), $e->getLine(), $e->getMessage(), $e->getCode(), get_class($e));
        }
    } while($e = $e->getPrevious());

    return $err;
}

因此使用:

try{
    $Payment->create($apiContext); //or any similar calls
}catch(Exception $e){
    echo PaypalError($e);
}