Я получаю ошибку 520009 (учетная запись xx@xx.com ограничена) при попытке сделать параллельный платеж. Мой код отлично работал с помощью песочницы, но я переключился на конечную точку в реальном времени, и он начал терпеть неудачу. Данная учетная запись является действительной учетной записью PayPal, и я использую «feepayer = SENDER». Я что-то упускаю? Не следует ли переходить на вызов по оплате, даже если получатель платежа является основной учетной записью? Почему это происходит?
Вот мой код для справки
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')); } }
Нет! Вы не можете сделать это с помощью основной учетной записи.
Для работы API вам необходимо иметь УВЕРЕННУЮ бизнес-учетную запись.
В своем API говорится:
ЗАМЕТКА:
Владелец приложения должен иметь учетную запись PayPal Business.
Существует два источника ссылок для API PayPal: страницы cms.paypal.com, такие как страницы, на которые ссылаются Михай Иорга, и страницы http://www.x.com, подобные этой: https://www.x.com/developers/paypal/ документация-инструменты / собирается-жить-с-ваше-приложение
На x.com говорится, что у вас должен быть проверенный бизнес-аккаунт, хотя на cms.paypal.com неясно, что это так.