PHP PayPal错误-MALFORMED_REQUEST-传入的JSON请求未映射到API请求

迪伦·拉森(Dylan Larsen)

使用PayPal REST API时出现错误,但在任何地方都找不到解决方案。我正在尝试将用户发送到PayPal,以为会话数组中的指定项目付款。我尝试更改付款方式,付款意向和网址。

    $this->setupCurl();
    $this->setupPayPal();

    $this->payer = new Payer();
    $this->details = array();
    $this->amount = array();
    $this->transaction = array();
    $this->redirectUrls = new RedirectUrls();
    $this->payment = new Payment();

    $this->payer->setPaymentMethod('paypal'); // TODO paypal . credit_card

    foreach ($cart as $id => $item) {
        $this->details[$id] = new Details();
        $this->amount[$id] = new Amount();
        $this->transaction[$id] = new Transaction();

        $this->details[$id]->setShipping('0.00')
                      ->setTax('0.00')
                      ->setSubtotal(formatMoney($this->products[$id]['price'] * $item['quantity'], '', 2)); // TODO

        $this->amount[$id]->setCurrency('AUD')
                     ->setTotal(formatMoney($this->products[$id]['price'] * $item['quantity'], '', 2))
                     ->setDetails($this->details[$id]);

        $this->transaction[$id]->setAmount($this->amount[$id])
                          ->setDescription($this->products[$id]['name']); // TODO
    }

    $this->redirectUrls->setReturnUrl('https://warsentech.com/pay?approved=true')
                       ->setCancelUrl('https://warsentech.com/pay?approved=false');

    $this->payment->setIntent('authorize') // TODO sale . buy
                  ->setPayer($this->payer)
                  ->setRedirectUrls($this->redirectUrls)
                  ->setTransactions($this->transaction); // TODO - add transactions into array from the cart items

    try {
        $this->payment->create($this->paypal);

        $hash = md5($this->payment->getId());
        $_SESSION['paypal_hash'] = $hash;
        if ($this->databaseConnection()) {
            $result = $this->db_connection->prepare('INSERT INTO transactions_paypal (user_id, payment_id, hash, complete) VALUES (:user_id, :payment_id, :hash, 0)');
            $result->execute([
                'user_id' => $_SESSION['user_id'],
                'payment_id' => $this->payment->getId(),
                'hash' => $hash
            ]);
        }
    } catch (Exception $e) {
        die(paypalError($e));
    }

    foreach ($this->payment->getLinks() as $link) {
        if ($link->getRel() == 'approval_url') {
            $redirectUrl = $link->getHref();
        }
    }

完整的错误消息:

访问https://api.sandbox.paypal.com/v1/payments/payment时出现异常“ PayPal \ Exception \ PayPalConnectionException”,并显示消息“ Got Http响应代码400”。” 在/var/www/html/vendor/paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php:177堆栈跟踪中:#0 / var / www / html / vendor / paypal / rest-api -sdk-php / lib / PayPal / Transport / PayPalRestCall.php(74):PayPal \ Core \ PayPalHttpConnection-> execute('{“ intent”:“ auth ...')#1 / var / www / html / vendor /paypal/rest-api-sdk-php/lib/PayPal/Common/PayPalResourceModel.php(103):PayPal \ Transport \ PayPalRestCall-> execute(Array,'/ v1 / payments / pa ...','POST' ,'{“ intent”:“ auth ...',NULL)#2 /var/www/html/vendor/paypal/rest-api-sdk-php/lib/PayPal/Api/Payment.php(424): PayPal \ Common \ PayPalResourceModel :: executeCall('/ v1 / payments / pa ...','POST','{“ intent”:“ auth ...',NULL,Object(PayPal \ Rest \ ApiContext),NULL )#3 /var/www/html/classes/PayPal.php(168):

杰伊·帕特尔(Jay Patel)-PayPal

我建议您解决以下两个问题:

  1. 从错误消息中,您看到的错误类型为PayPal\Exception\PayPalConnectionException我们有一种特殊的方法getData()来检索有关该错误的确切详细信息。

您可以通过执行以下操作来做到这一点:

try {
    $this->payment->create($this->paypal);

    $hash = md5($this->payment->getId());
    $_SESSION['paypal_hash'] = $hash;
    if ($this->databaseConnection()) {
        $result = $this->db_connection->prepare('INSERT INTO transactions_paypal (user_id, payment_id, hash, complete) VALUES (:user_id, :payment_id, :hash, 0)');
        $result->execute([
            'user_id' => $_SESSION['user_id'],
            'payment_id' => $this->payment->getId(),
            'hash' => $hash
        ]);
    }
} catch (PayPal\Exception\PayPalConnectionException $e) {
    echo $e->getData(); // This will print a JSON which has specific details about the error.
    die(paypalError($e));
}
  1. 如果您希望在集成我们的SDK方面获得帮助,有很多文档可以为您提供帮助。这是您应该关注的最有趣的一个:

特别是,您应该查看该示例,该示例演示了您正在尝试做的事情:http : //paypal.github.io/PayPal-PHP-SDK/sample/doc/payments/CreatePaymentUsingPayPal.html

让我知道这是否有助于您解决所面临的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PayPal请求不断获取MALFORMED_REQUEST

来自分类Dev

PHP Paypal支付请求中的错误

来自分类Dev

PayPal API格式错误的请求

来自分类Dev

PayPal API格式错误的请求

来自分类Dev

PayPal Rest API PHP服务端点错误

来自分类Dev

PHP Paypal REST 创建付款错误的 JSON 响应

来自分类Dev

在WebResponse响应处获得的Paypal 400错误请求错误响应= request.GetResponse();

来自分类Dev

带角度的Paypal API | 400(错误请求)

来自分类Dev

Paypal Rest Api错误

来自分类Dev

贝宝(PayPal)休息api,PHP SDK,计费,我收到错误REQUIRED_SCOPE_MISSING

来自分类Dev

PayPal 400错误请求,更具体吗?

来自分类Dev

与PayPal连接:获取状态400(错误请求)

来自分类Dev

PayPal IPN PHP握手错误

来自分类Dev

使用PHP的POST CURL请求获取错误``未传递授权标头''-Envato API

来自分类Dev

Paypal API错误请求传递了多个项目

来自分类Dev

Paypal PHP API集成

来自分类Dev

如何在请求json中收到未映射的字段时强制Web API引发错误

来自分类Dev

PHP fsockopen 400错误请求

来自分类Dev

PHP curl Soap请求错误

来自分类Dev

php-检测错误请求

来自分类Dev

HTTP请求在PHP错误请求中失败

来自分类Dev

OAuth,PHP,Rest API和curl发出400错误请求

来自分类Dev

在PHP中缓存JSON请求-缓存文件错误

来自分类Dev

json api获取请求错误

来自分类Dev

从PayPal API错误获取访问令牌

来自分类Dev

PayPal REST API OAuth响应错误

来自分类Dev

Paypal Masspay API Masspay输入解析错误

来自分类Dev

在PayPal REST API中出现500错误

来自分类Dev

PayPal TLS测试URL-PHP curl SSL协议错误