【问题标题】:Got Http response code 400 when implementing Paypal Sandbox refund实施 Paypal Sandbox 退款时得到 Http 响应代码 400
【发布时间】:2018-10-18 01:32:51
【问题描述】:

我正在尝试实施 Sandbox Paypal 支付网关退款功能。我正在使用 Laravel 5.6.12 和 Package: "paypal/rest-api-sdk-php": "^1.13"

我在付款方面没有问题。以下是支付成功后收到的回复。

{
    "id": "PAY-94141048LX592642PLLYUVMA",
    "transactions": [
        {
            "related_resources": [
                {
                    "sale": {
                        "id": "0KH341752J2209342",
                        "state": "completed",
                        "links": [
                            {
                                "href": "https://api.sandbox.paypal.com/v1/payments/sale/0KH341752J2209342",
                                "rel": "self",
                                "method": "GET"
                            },
                            {
                                "href": "https://api.sandbox.paypal.com/v1/payments/sale/0KH341752J2209342/refund",
                                "rel": "refund",
                                "method": "POST"
                            },
                            {
                                "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-94141048LX592642PLLYUVMA",
                                "rel": "parent_payment",
                                "method": "GET"
                            }
                        ],
                        "soft_descriptor": "PAYPAL *PANKAJGARGS"
                    }
                }
            ]
        }
    ]
}  

从上面的JSON中,我取了Sale_ID = 0KH341752J2209342,写了下面的代码来实现退款。

$refund = new Refund();
$refund->setAmount(200);
$sale = new Sale();
$sale->setId("0KH341752J2209342");
try {
    $apiContext = $this->_api_context;
    $refundedSale = $sale->refund($refund, $apiContext);
} catch (Exception $ex) {
    \Log::info($ex);
    exit(1);
}

并得到以下错误。

访问https://api.sandbox.paypal.com/v1/payments/sale/0KH341752J2209342/refund时得到Http响应码400。

如果有什么问题,你能提出一些建议吗?如果您需要更多信息,请告诉我。我从上面的 JSON 中删除了一些不必要的部分以使其简短

错误详情。

状态代码:400 响应:{"name":"MALFORMED_REQUEST","message":"传入的 JSON 请求未映射到 API 请求"​​,"information_link":"developer.paypal.com/webapps/developer/docs /api/…;}PayPal\Exception\PayPalConnectionException: 访问https://api.sandbox.paypal.com/v1/payments/sale/3FM030155Y9829603/refund时得到Http响应码400

【问题讨论】:

    标签: paypal-rest-sdk laravel-5.6


    【解决方案1】:

    你应该添加以下catch,这样你才能看到真正的错误信息:

    } catch (PayPal\Exception\PayPalConnectionException $ex) {
    echo $ex->getCode();
    echo $ex->getData(); // Prints the detailed error message 
    die($ex);
    }
    

    【讨论】:

    【解决方案2】:

    我在下面三行添加了

    $amt = new Amount();
    $amt->setTotal(10)
        ->setCurrency('INR');
    

    在下面的代码中,现在一切正常。

    $refund = new Refund();
    $refund->setAmount($amt);
    $sale = new Sale();
    $sale->setId("0KH341752J2209342");
    try {
        $apiContext = $this->_api_context;
        $refundedSale = $sale->refund($refund, $apiContext);
    } catch (Exception $ex) {
        \Log::info($ex);
        exit(1);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 2015-02-11
      • 2017-07-26
      • 2021-02-28
      • 2015-05-09
      • 1970-01-01
      • 2011-11-21
      相关资源
      最近更新 更多