Hi,
I have been using the old PayPal API integration called Adaptive Payments (NVP/SOAP API Products) .
Since yesterday I started to have this error:
[error] => Array
(
[0] => PayPal\Types\Common\ErrorData Object
(
[errorId] => 580022
[domain] => PLATFORM
[subdomain] => Application
[severity] => Error
[category] => Application
[message] => Invalid request parameter: {0} with value {1}
[exceptionId] =>
[parameter] =>
)
)
I googled this error id and it means that the "The receiver email address can not receive payment" but everything used to work fine and nothing was changed inside the my app settings or credentials.
Has anyone run into the same problem?
Any tip how to solve this?
Thanks.
I Just realised that this problem is happening when I'm trying to Set the Payment Options:
https://developer.paypal.com/docs/classic/api/adaptive-payments/SetPaymentOptions-API-Operation/
NotifyURL
params
NotifyURL
or IPN_url
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="https://www.paypalobjects.com/api/checkout.js" async></script>
<input id="amount">
<button id="paypal">Pay by PayPal</i></button>
<script>
window.paypalCheckoutReady = function() {
paypal.checkout.setup('REPLACE WITH MERCHANT ID', {
environment: 'sandbox', # or production
container: '#paypal'
})
$('#paypal').click(function() {
var amount = $('#amount').val()
if (amount) {
paypal.checkout.initXO();
var action = $.post('/paypal.php', {amount: amount});
action.done(function (data) {
paypal.checkout.startFlow('https://www.paypal.com/checkoutnow?useraction=commit&token='+data.TOKEN);
});
action.fail(function() {
paypal.checkout.closeFlow();
});
}
else
alert('Please enter an amount')
})
}
</script>
</body>
</html>
<?php
class PayPal
{
private $config;
private $urls = array(
"sandbox" => array(
"api" => "https://api-3t.sandbox.paypal.com/nvp",
"redirect" => "https://www.sandbox.paypal.com/webscr",
),
"live" => array(
"api" => "https://api-3t.paypal.com/nvp",
"redirect" => "https://www.paypal.com/webscr",
)
);
public function __construct($config)
{
$this->config = $config;
}
public function call($options = [])
{
$options = array_merge($options, $this->config);
return $this->_curl($this->api_url(), $options);
}
public function redirect($response)
{
$redirect_url = sprintf("%s?cmd=_express-checkout&token=%s", $this->redirect_url(), $response["TOKEN"]);
header("Location: $redirect_url");
}
private function redirect_url()
{
return $this->urls[$this->config["environment"]]["redirect"];
}
private function api_url()
{
return $this->urls[$this->config["environment"]]["api"];
}
private function _curl($url, $values)
{
$curl = curl_init($url);
$options = array(
CURLOPT_VERBOSE => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => http_build_query($values),
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_TIMEOUT => 10,
//CURLOPT_SSL_VERIFYPEER => false //for dev
);
curl_setopt_array($curl, $options);
$rep = curl_exec($curl);
parse_str($rep, $response);
curl_close($curl);
return $response;
}
}
<?php
include('class.php');
$config = array(
"environment" => "sandbox", # or live
"user" => "REPLACE WITH PAYPAL USER",
"pwd" => "REPLACE WITH PAYPAL PASSWORD",
"signature" => "REPLACE WITH PAYPAL SIGNATURE",
"version" => 113
);
$paypal = new PayPal($config);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$result = $paypal->call(array(
'method' => 'SetExpressCheckout',
'paymentrequest_0_paymentaction' => 'sale',
'paymentrequest_0_amt' => $_POST['amount'],
'paymentrequest_0_currencycode' => 'USD',
'returnurl' => 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . 'paypal.php?amount=' . $_POST['amount'],
'cancelurl' => 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . 'cancel.php?amount=' . $_POST['amount']
));
if ($result['ACK'] == 'Success') {
header("Access-Control-Allow-Origin: *");
header('Content-Type: application/json');
echo json_encode($result);
} else {
echo 'Handle the payment creation failure <br>';
}
} else {
$result = $paypal->call(array(
'method' => 'DoExpressCheckoutPayment',
'token' => $_GET['token'],
'payerid' => $_GET['PayerID'],
'paymentrequest_0_paymentaction' => 'sale',
'paymentrequest_0_amt' => $_GET['amount'],
'paymentrequest_0_currencycode' => 'USD'
));
if ($result['PAYMENTINFO_0_PAYMENTSTATUS'] == 'Completed') {
$result = $paypal->call(array(
'method' => 'GetExpressCheckoutDetails',
'token' => $_GET['token'],
));
//$result now contains customer information
} else {
echo 'Payment error';
}
}
$plan->create($this->apiContext);
, I don't know which URL I must use.