I get error 520009 ( xx@xx.com account is limited) when trying to make a parallel payment. My code worked fine using the sandbox, but I switched to the endpoint in real time and it started to fail. This account is a valid PayPal account and I use "feepayer = SENDER". Am I missing something? Shouldn't I switch to a payment call even if the payee is the primary account? Why is this happening?
Here is my code for reference
function deposit($config) { try { if (isset($config['return_url'])) $this->return_url = $config['return_url']; else return 'Return URL should be set'; if (isset($config['return_url'])) $this->cancel_url = $config['cancel_url']; else return 'Cancel URL should be set'; if (isset($config['email'])) $this->sender_email = $config['email']; else return 'Email should be defined'; if (isset($config['amount'])) $this->amount = $config['amount']; else return 'Amount should be defined'; $returnURL = $this->return_url; $cancelURL = $this->cancel_url; $currencyCode = 'USD'; $memo = 'Deposit to ' . $this->ci->config->item('site_name'); $feesPayer = 'SENDER'; $payRequest = new PayRequest(); $payRequest->actionType = "PAY"; $payRequest->cancelUrl = $cancelURL; $payRequest->returnUrl = $returnURL; $payRequest->clientDetails = new ClientDetailsType(); $payRequest->clientDetails->applicationId = $this->ci->config->item('application_id'); $payRequest->clientDetails->deviceId = $this->ci->config->item('device_id'); $payRequest->clientDetails->ipAddress = $this->ci->input->ip_address(); $payRequest->currencyCode = $currencyCode; //$payRequest->senderEmail = $this->sender_email; $payRequest->requestEnvelope = new RequestEnvelope(); $payRequest->requestEnvelope->errorLanguage = "en_US"; $receivers = array(); $receiver = new receiver(); $receiver->email = $this->ci->config->item('moneyfan_account'); $receiver->amount = $this->amount; $receiver->primary = 'false'; $receivers[] = $receiver; $payRequest->receiverList = $receivers; $payRequest->feesPayer = $feesPayer; $payRequest->memo = $memo; $ap = new AdaptivePayments(); $response = $ap->Pay($payRequest); if (strtoupper($ap->isSuccess) == 'FAILURE') { $this->ci->session->set_userdata('FAULTMSG', $ap->getLastError()); return json_encode(array('status' => 'false', 'msg' => $ap->getLastError()->error->errorId .' : '. $ap->getLastError()->error->message)); //redirect(site_url('home/api_error')); } else { $this->ci->session->set_userdata('payKey', $response->payKey); if ($response->paymentExecStatus == "COMPLETED") { redirect($returnURL); } else { $token = $response->payKey; $payPalURL = PAYPAL_REDIRECT_URL . '_ap-payment&paykey=' . $token; return json_encode(array('status' => 'true', 'msg' => $payPalURL)); //header("Location: " . $payPalURL); } } } catch (Exception $ex) { $fault = new FaultMessage(); $errorData = new ErrorData(); $errorData->errorId = $ex->getFile(); $errorData->message = $ex->getMessage(); $fault->error = $errorData; $this->ci->session->set_userdata('FAULTMSG', $fault); redirect(site_url('home/api_error')); } }
source share