2012-04-21 3 views
6

Excuses d'avance s'il s'agit d'une question idiote. J'ai essayé de creuser, mais je n'ai pas trouvé de réponse.Paiements adaptatifs PayPal - Erreur 520009 - Le compte est limité

J'essaye de mettre en place un paiement enchaîné (à l'environnement de bac à sable), mais j'obtiens l'erreur 520009 (le compte est limité). Je ai essayé plusieurs adresses e-mail, et ils me donnent tous cette erreur. Les adresses e-mail ne sont pas enregistrées avec Paypal, mais pour autant que je sache, cela ne devrait pas être un problème car le module de paiements adaptatifs ne nécessite pas les comptes Paypal à l'avance (bien qu'ils aient besoin de comptes pour obtenir l'argent , bien sûr).

Qu'est-ce que je fais mal? J'ai réglé le payeur de frais à EACHRECEIVER (comme suggéré sur certains sujets), mais l'erreur persiste.

C'est ce que je reviens: Code erreur: 520009 Message d'erreur: Compte [email protected] est limité

Voici mon 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" => '[email protected]', 
     "receiverList.receiver[0].amount" => '10', 
     "receiverList.receiver[0].primary" => 'true', 
     "receiverList.receiver[1].email" => '[email protected]', 
     "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()."||"; 
    } 

Merci!

+0

duplication possible de [Erreur # 520009 - Le compte est restreint] (http://stackoverflow.com/questions/12247050/error-520009-account-is-restricted) – billinkc

Répondre

0

« mais pour autant que je sache, cela ne devrait pas être un problème que le module de paiement adaptatif ne nécessite pas les récepteurs d'avoir des comptes Paypal à l'avance »

C'est incorrect. Pour les paiements chaînés adaptatifs, tous les destinataires doivent avoir un compte PayPal personnel, Premier ou Business actif et vérifié.

+1

Selon le Guide du développeur Adaptive Payments Référence de l'API SOAPPP_AdaptivePayments .pdf '; "Le propriétaire de l'application doit avoir un compte PayPal Business Les expéditeurs et les destinataires peuvent avoir n'importe quel type de compte PayPal" – plenderj

+0

Le propriétaire de l'application et le ou les destinataires peuvent être différents comptes, ont donc des exigences différentes. ;-) – Robert

+0

Ne pas comprendre ce commentaire. Pour les paiements enchaînés, les destinataires n'ont PAS besoin de comptes PayPal Premier ou Business. Ils ont juste besoin d'un compte PayPal actif/vérifié. –

4

EDIT: Je pourrais résoudre le problème en supprimant le paramètre "feesPayer", qui doit être la valeur par défaut (c'est-à-dire EACHRECEIVER) en cas de paiement unilatéral.

Je suis moi aussi coincé avec ce problème.

Je me demande comment je pourrais obtenir un « paiement unilatéral », qui est décrit par PayPal comme suit:

Vous pouvez utiliser l'opération API de paiement pour effectuer des paiements unilatérales en circonstances limitées. Un paiement unilatéral est un paiement effectué à un destinataire qui n'a pas de compte PayPal. Les paiements unilatéraux peuvent être utilisés avec des paiements simples ou parallèles implicites ou préautorisés. Les paiements unilatéraux ne sont pas conçus pour être utilisés avec des paiements enchaînés ou des paiements nécessitant une approbation manuelle via le flux Web . Lorsque vous envoyez un paiement unilatéral, vous envoyez un paiement demande qui comprend une adresse e-mail pour un récepteur, et cette adresse e-mail n'est pas liée à un compte PayPal enregistré. Le destinataire reçoit un courrier électronique lui notifiant la création d'un compte et réclame le paiement. PayPal détient un paiement à un destinataire dont l'adresse e-mail n'est pas encore enregistrée ou confirmée jusqu'à ce que le destinataire crée un compte PayPal et confirme l'adresse e-mail. Si un remboursement spécifie un destinataire dont l'adresse électronique n'est pas encore enregistrée ou confirmée, le paiement au destinataire est annulé.

Toute personne ayant une idée de ce paramétrage à l'aide NVP est nécessaire pour atteindre cet objectif sans se ERROR Code: 520009 ERROR Message: Account [email protected] is restricted

Tout indice est très apprécié!

+0

Merci beaucoup ... Je peux difficilement comprendre la documentation Paypal. – geekazoid

Questions connexes