Sorry in advance if this is a stupid question. I tried to dig, but could not find the answer.
I am trying to set up a pegged payment (in a sandbox environment), but I get error 520009 (Account is limited). Tried several email addresses and they all give me this error. Email addresses are not registered with Paypal, but as far as I know, this should not be a problem, since the adaptive payments module does not require recipients to have Paypal accounts in advance (although they need accounts to actually receive money, of course).
What am I doing wrong? I installed the payer fees in EACHRECEIVER (as suggested in some threads), but the error remains.
This is what I will return: Code ERROR: 520009 Message ERROR: Account someone1@gmail.com limited
Here is my code:
// Config $endpoint = trim("https://svcs.sandbox.paypal.com/AdaptivePayments/Pay"); $API_UserName = "MY_USERNAME_FROM_SANDBOX"; $API_Password = "MY_PASSWORD_FROM_SANDBOX"; $API_Signature = "MY_SIGNATURE_FROM_SANDBOX"; $API_AppID = "APP-80W284485P519543T"; $API_RequestFormat = "NV"; $API_ResponseFormat = "NV"; // Create request payload with minimum required parameters $bodyparams = array ( "requestEnvelope.errorLanguage" => "en_US", "actionType" => "PAY_PRIMARY", "cancelUrl" => 'http://www.beta.com/cancel', "returnUrl" => 'http://www.beta.com/return', "currencyCode" => 'USD', "feesPayer" => "EACHRECEIVER", "actionType" => "PAY_PRIMARY", "receiverList.receiver[0].email" => ' someone1@gmail.com ', "receiverList.receiver[0].amount" => '10', "receiverList.receiver[0].primary" => 'true', "receiverList.receiver[1].email" => ' someone2@gmail.com ', "receiverList.receiver[1].amount" => '5', "receiverList.receiver[1].primary" => 'false', ); // Convert payload array into url encoded query string $body_data = http_build_query($bodyparams, "", chr(38)); try { //create request and add headers $params = array("http" => array( "method" => "POST", "content" => $body_data, "header" => "X-PAYPAL-SECURITY-USERID: " . $API_UserName . "\r\n" . "X-PAYPAL-SECURITY-SIGNATURE: " . $API_Signature . "\r\n" . "X-PAYPAL-SECURITY-PASSWORD: " . $API_Password . "\r\n" . "X-PAYPAL-APPLICATION-ID: " . $API_AppID . "\r\n" . "X-PAYPAL-REQUEST-DATA-FORMAT: " . $API_RequestFormat . "\r\n" . "X-PAYPAL-RESPONSE-DATA-FORMAT: " . $API_ResponseFormat . "\r\n" )); //create stream context $ctx = stream_context_create($params); //open the stream and send request $fp = @fopen($endpoint, "r", false, $ctx); //get response $response = stream_get_contents($fp); //check to see if stream is open if ($response === false) { throw new Exception("php error message = " . "$php_errormsg"); } //close the stream fclose($fp); //parse the ap key from the response $keyArray = explode("&", $response); foreach ($keyArray as $rVal){ list($qKey, $qVal) = explode ("=", $rVal); $kArray[$qKey] = $qVal; } //print the response to screen for testing purposes If ( $kArray["responseEnvelope.ack"] == "Success") { foreach ($kArray as $key =>$value){ echo $key . ": " .$value . "<br/>"; } } else { echo 'ERROR Code: ' . $kArray["error(0).errorId"] . " <br/>"; echo 'ERROR Message: ' . urldecode($kArray["error(0).message"]) . " <br/>"; } } catch(Exception $e) { echo "Message: ||" .$e->getMessage()."||"; }
Thanks!