br1tas
br1tas

Reputation: 1

PayPal Incoming JSON request does not map to API

I'm trying to create payment with PayPal and I get errors.

Errors:

400{"name":"MALFORMED_REQUEST","message":"Incoming JSON request does not map to API request","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST","debug_id":"f79dc9a739991"}exception 'PayPal\Exception\PayPalConnectionException' with message 'Got Http response code 400 when accessing https://api.sandbox.paypal.com/v1/payments/payment.' in /home/nork/domains/nork.lt/public_html/cms/xxx/system/payments/PayPal-PHP-SDK/paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php:202 Stack trace: #0 /home/nork/domains/nork.lt/public_html/cms/xxx/system/payments/PayPal-PHP-SDK/paypal/rest-api-sdk-php/lib/PayPal/Transport/PayPalRestCall.php(73): PayPal\Core\PayPalHttpConnection->execute('{"intent":"sale...') #1 /home/nork/domains/nork.lt/public_html/cms/xxx/system/payments/PayPal-PHP-SDK/paypal/rest-api-sdk-php/lib/PayPal/Common/PayPalResourceModel.php(104): PayPal\Transport\PayPalRestCall->execute(Array, '/v1/payments/pa...', 'POST', '{"intent":"sale...', NULL) #2 /home/nork/domains/nork.lt/public_html/cms/xxx/system/payments/PayPal-PHP-SDK/paypal/rest-api-sdk-php/lib/PayPal/Api/Payment.php(577): PayPal\Common\PayPalResourceModel::executeCall('/v1/payments/pa...', 'POST', '{"intent":"sale...', NULL, Object(PayPal\Rest\ApiContext), NULL) #3 /home/nork/domains/nork.lt/public_html/cms/xxx/checkout.php(73): PayPal\Api\Payment->create(Object(PayPal\Rest\ApiContext)) #4 {main}

Code:

 <?php

use PayPal\Api\Payer;
use PayPal\Api\Item;
use PayPal\Api\ItemList;
use PayPal\Api\Details;
use PayPal\Api\Amount;
use PayPal\Api\Transaction;
use PayPal\Api\RedirectUrls;
use PayPal\Api\Payment;

if(isset($_GET['type']) && isset($_GET['amount']) && isset($_GET['gold']))
{
    if($_GET['type'] == 'paypal') // If payment is PayPal
    {
        require 'system/payments/paypal.php';

        $gold           = $_GET['gold'];
        $amount         = $_GET['amount'];
        $pricePerVnt    = 0.00;
        $productName    = '';
        $shipping = 0.00;

        switch($gold)
        {
            case 'first':
            {
                $productName = 'first name';
                $pricePerVnt = 1.19;
                break;
            }
            case 'second':
            {
                $productName = 'second name';
                $pricePerVnt = 0.21;
                break;
            }
        }
        if(!$pricePerVnt) die();

        $totalAmount = $amount * $pricePerVnt;

        $payer = new Payer();
        $payer->setPaymentMethod('paypal');

        $item = new Item();
        $item->setName($productName)->setCurrency('USD')->setQuantity('1')->setPrice($pricePerVnt);

        $itemList = new ItemList();
        $itemList->setItems($item);

        $amount = new Amount();
        $amount->setCurrency('USD')->setTotal($totalAmount);

        $transaction = new Transaction();
        $transaction->setAmount($pricePerVnt)->setDescription($productName)->setInvoiceNumber(uniqid());

        $redirectUrls = new RedirectUrls();
        $redirectUrls->setReturnUrl('http://google.lt')->setCancelUrl('http://cancel.lt');

        $payment = new Payment();
        $payment->setIntent('sale')->setPayer($payer)->setRedirectUrls($redirectUrls)->setTransactions($transaction);

        try {
            $payment->create($paypal);
        } catch (PayPal\Exception\PayPalConnectionException $ex) {
            echo $ex->getCode(); // Prints the Error Code
            echo $ex->getData(); // Prints the detailed error message 
            die($ex);
        } catch (Exception $ex) {
            die($ex);
        }
        //print_r($payment);

        //echo $approvalUrl = $payment->getApprovalLink();
        //header('Location: {$approvalUrl}');
    }
}

?>

Upvotes: 0

Views: 574

Answers (2)

br1tas
br1tas

Reputation: 1

Here:

object(PayPal\Exception\PayPalConnectionException)#18 (9) {["url":"PayPal\Exception\PayPalConnectionException":private]=>
  string(50) "https://api.sandbox.paypal.com/v1/payments/payment"
  ["data":"PayPal\Exception\PayPalConnectionException":private]=>
  string(213) "{"name":"MALFORMED_REQUEST","message":"Incoming JSON request does not map to API request","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST","debug_id":"a963484dd5bd0"}"
  ["message":protected]=>
  string(93) "Got Http response code 400 when accessing https://api.sandbox.paypal.com/v1/payments/payment."
  ["string":"Exception":private]=>
  string(0) ""
  ["code":protected]=>
  int(400)
  ["file":protected]=>
  string(146) "/home/nork/domains/nork.lt/public_html/cms/xxx/system/payments/PayPal-PHP-SDK/paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php"
  ["line":protected]=>
  int(202)
  ["trace":"Exception":private]=>
  array(4) {
    [0]=>
    array(6) {
      ["file"]=>
      string(145) "/home/nork/domains/nork.lt/public_html/cms/xxx/system/payments/PayPal-PHP-SDK/paypal/rest-api-sdk-php/lib/PayPal/Transport/PayPalRestCall.php"
      ["line"]=>
      int(73)
      ["function"]=>
      string(7) "execute"
      ["class"]=>
      string(32) "PayPal\Core\PayPalHttpConnection"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(1) {
        [0]=>
        string(235) "{"intent":"sale","payer":{"payment_method":"paypal"},"redirect_urls":{"return_url":"http://google.lt","cancel_url":"http://cancel.lt"},"transactions":{"amount":1.19,"description":"RuneScape 2007 Gold","invoice_number":"5977898964140"}}"
      }
    }
    [1]=>
    array(6) {
      ["file"]=>
      string(147) "/home/nork/domains/nork.lt/public_html/cms/xxx/system/payments/PayPal-PHP-SDK/paypal/rest-api-sdk-php/lib/PayPal/Common/PayPalResourceModel.php"
      ["line"]=>
      int(104)
      ["function"]=>
      string(7) "execute"
      ["class"]=>
      string(31) "PayPal\Transport\PayPalRestCall"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(5) {
        [0]=>
        array(1) {
          [0]=>
          string(26) "PayPal\Handler\RestHandler"
        }
        [1]=>
        string(20) "/v1/payments/payment"
        [2]=>
        string(4) "POST"
        [3]=>
        string(235) "{"intent":"sale","payer":{"payment_method":"paypal"},"redirect_urls":{"return_url":"http://google.lt","cancel_url":"http://cancel.lt"},"transactions":{"amount":1.19,"description":"RuneScape 2007 Gold","invoice_number":"5977898964140"}}"
        [4]=>
        NULL
      }
    }
    [2]=>
    array(6) {
      ["file"]=>
      string(132) "/home/nork/domains/nork.lt/public_html/cms/xxx/system/payments/PayPal-PHP-SDK/paypal/rest-api-sdk-php/lib/PayPal/Api/Payment.php"
      ["line"]=>
      int(577)
      ["function"]=>
      string(11) "executeCall"
      ["class"]=>
      string(33) "PayPal\Common\PayPalResourceModel"
      ["type"]=>
      string(2) "::"
      ["args"]=>
      array(6) {
        [0]=>
        string(20) "/v1/payments/payment"
        [1]=>
        string(4) "POST"
        [2]=>
        string(235) "{"intent":"sale","payer":{"payment_method":"paypal"},"redirect_urls":{"return_url":"http://google.lt","cancel_url":"http://cancel.lt"},"transactions":{"amount":1.19,"description":"RuneScape 2007 Gold","invoice_number":"5977898964140"}}"
        [3]=>
        NULL
        [4]=>
        object(PayPal\Rest\ApiContext)#2 (2) {
          ["requestId":"PayPal\Rest\ApiContext":private]=>
          NULL
          ["credential":"PayPal\Rest\ApiContext":private]=>
          object(PayPal\Auth\OAuthTokenCredential)#3 (7) {
            ["clientId":"PayPal\Auth\OAuthTokenCredential":private]=>
            string(80) "AcAvvJw6aK8kEs_lTfv8TjuPiPzHX8Yk_Q9mvDO6AR3grRa09kOBrNVAZyvs-EpKrB9HP0A6UPZBgCrh"
            ["clientSecret":"PayPal\Auth\OAuthTokenCredential":private]=>
            string(80) "EIXpeAtUZVOf1syl-Jlt0I90lhx8oRMHPpmmRRRxuZ2hUF9LFQJK2fUFa6yz_rRuRaFMLGwJmXBk2cut"
            ["accessToken":"PayPal\Auth\OAuthTokenCredential":private]=>
            string(97) "A21AAGgcZ9Ls3UfzYYWU1q4ScO4WcX45JNbtYNJIosxP2kEq7i60yA0ZZrhHPI-anHRtaVATMjTDZKiNE-D0pSYSCkMk1VKHw"
            ["tokenExpiresIn":"PayPal\Auth\OAuthTokenCredential":private]=>
            int(32382)
            ["tokenCreateTime":"PayPal\Auth\OAuthTokenCredential":private]=>
            int(1501006218)
            ["cipher":"PayPal\Auth\OAuthTokenCredential":private]=>
            object(PayPal\Security\Cipher)#4 (1) {
              ["secretKey":"PayPal\Security\Cipher":private]=>
              string(80) "EIXpeAtUZVOf1syl-Jlt0I90lhx8oRMHPpmmRRRxuZ2hUF9LFQJK2fUFa6yz_rRuRaFMLGwJmXBk2cut"
            }
            ["_propMap":"PayPal\Common\PayPalModel":private]=>
            array(0) {
            }
          }
        }
        [5]=>
        NULL
      }
    }
    [3]=>
    array(6) {
      ["file"]=>
      string(63) "/home/nork/domains/nork.lt/public_html/cms/xxx/checkout.php"
      ["line"]=>
      int(65)
      ["function"]=>
      string(6) "create"
      ["class"]=>
      string(18) "PayPal\Api\Payment"
      ["type"]=>
      string(2) "->"
      ["args"]=>
      array(1) {
        [0]=>
        object(PayPal\Rest\ApiContext)#2 (2) {
          ["requestId":"PayPal\Rest\ApiContext":private]=>
          NULL
          ["credential":"PayPal\Rest\ApiContext":private]=>
          object(PayPal\Auth\OAuthTokenCredential)#3 (7) {
            ["clientId":"PayPal\Auth\OAuthTokenCredential":private]=>
            string(80) "AcAvvJw6aK8kEs_lTfv8TjuPiPzHX8Yk_Q9mvDO6AR3grRa09kOBrNVAZyvs-EpKrB9HP0A6UPZBgCrh"
            ["clientSecret":"PayPal\Auth\OAuthTokenCredential":private]=>
            string(80) "EIXpeAtUZVOf1syl-Jlt0I90lhx8oRMHPpmmRRRxuZ2hUF9LFQJK2fUFa6yz_rRuRaFMLGwJmXBk2cut"
            ["accessToken":"PayPal\Auth\OAuthTokenCredential":private]=>
            string(97) "A21AAGgcZ9Ls3UfzYYWU1q4ScO4WcX45JNbtYNJIosxP2kEq7i60yA0ZZrhHPI-anHRtaVATMjTDZKiNE-D0pSYSCkMk1VKHw"
            ["tokenExpiresIn":"PayPal\Auth\OAuthTokenCredential":private]=>
            int(32382)
            ["tokenCreateTime":"PayPal\Auth\OAuthTokenCredential":private]=>
            int(1501006218)
            ["cipher":"PayPal\Auth\OAuthTokenCredential":private]=>
            object(PayPal\Security\Cipher)#4 (1) {
              ["secretKey":"PayPal\Security\Cipher":private]=>
              string(80) "EIXpeAtUZVOf1syl-Jlt0I90lhx8oRMHPpmmRRRxuZ2hUF9LFQJK2fUFa6yz_rRuRaFMLGwJmXBk2cut"
            }
            ["_propMap":"PayPal\Common\PayPalModel":private]=>
            array(0) {
            }
          }
        }
      }
    }
  }
  ["previous":"Exception":private]=>
  NULL
}

Upvotes: 0

delboy1978uk
delboy1978uk

Reputation: 12382

The answer appears to be that you are not sending sufficient request values:

{"intent":"sale...', NULL)

Note the null. In order to see your error dump in more details, you can do tweak the var_dump complexity:

ini_set('xdebug.var_display_max_depth', 10);
ini_set('xdebug.var_display_max_children', 256);
ini_set('xdebug.var_display_max_data', 1024);

Then you will see the full JSON and can figure out what was missing or malformed.

Upvotes: 0

Related Questions