2012-09-03 2 views
6

평행 결제를 시도 할 때 520009 오류 ([email protected] 계정이 제한됨)가 발생합니다. 내 코드는 샌드 박스를 사용하여 정상적으로 작동하지만 라이브 끝점으로 전환하면 실패하기 시작합니다. 해당 계정은 유효한 페이팔 계정이며 "feespayer = SENDER"를 사용하고 있습니다. 내가 놓친 게 있니? 수취인이 기본 계정이더라도 유료 통화를 수행해야합니까? 왜 이런 일이 일어 났을까요?오류 # 520009 - 계좌가 제한됨

여기 참조

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')); 
    } 
} 
+1

응용 프로그램 소유자가 페이팔 비즈니스 계정을 가지고 있습니까? – dearlbry

+0

''$ payRequest-> feesPayer = ...''부분없이 작동합니까? – pencil

답변

7

아니 내 코드입니다! 기본 계정으로는 그렇게 할 수 없습니다.

API를 작동 시키려면 VERIFIED 비즈니스 계정이 있어야합니다. 자신의 API에서

는 말한다 :

참고 :
응용 프로그램 소유자가 페이팔 사업 계정이 있어야합니다. 미하이 Iorga에 의해 참조되는 같은 cms.paypal.com 페이지, 이와 같은 www.x.com 페이지 : https://www.x.com/developers/paypal/documentation-tools/going-live-with-your-application

+0

내 계좌가 확인 됨 사업 계좌 – Avinash

+0

모든 수신자가 PayPal 계좌를 가지고 있으며'$ config [ 'email']'은 유효한 PayPal 계좌입니까? –

+0

예. 두 이메일은 유효한 페이팔 계정입니다. – Avinash

1

는 페이팔 API에 대한 참조의 두 소스가 있습니다 x.com에서는 cms.paypal.com에서이 사실이 확실하지 않더라도 확인 된 비즈니스 계좌가 있어야한다고 말합니다.