plus integrar developer apicontext php paypal

integrar - paypal/rest-api-sdk-php laravel



API de Paypal-GetVerifiedStatus-Solicitud inválida (3)

Intento integrar la API de Paypal en mi aplicación PHP. Uso cURL para llamar al método remoto GetVerifiedStatus , pero aparece un error 580023 - Solicitud no válida.

Mi petición:

''requestEnvelope.errorLanguage=en_US&requestEnvelope.detailLevel=ReturnAll&emailAddress=email%40address.com&firstName=John&lastName=Doe&matchCriteria=NAME''

Respuesta después de convertir a JSON:

{ "responseEnvelope.timestamp":"2013-07-25T05:36:26.695-07:00", "responseEnvelope.ack":"Failure", "responseEnvelope.correlationId":"e540c8c04a5b4", "responseEnvelope.build":"6679946", "error(0).errorId":"580023", "error(0).domain":"PLATFORM", "error(0).subdomain":"Application", "error(0).severity":"Error", "error(0).category":"Application", "error(0).message":"Cannot determine PayPal Account status" }

código cURL

function hash_call_account($methodName, $nvpStr) { //declaring of global variables $this->API_Endpoint_Adaptive_Account .= "/" . $methodName; //setting the curl parameters. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$this->API_Endpoint_Adaptive_Account); curl_setopt($ch, CURLOPT_VERBOSE, 1); //turning off the server and peer verification(TrustManager Concept). curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POST, 1); // Set the HTTP Headers curl_setopt($ch, CURLOPT_HTTPHEADER, array( ''X-PAYPAL-REQUEST-DATA-FORMAT: NV'', ''X-PAYPAL-RESPONSE-DATA-FORMAT: NV'', ''X-PAYPAL-SECURITY-USERID: '' . $this->API_UserName, ''X-PAYPAL-SECURITY-PASSWORD: '' .$this->API_Password, ''X-PAYPAL-SECURITY-SIGNATURE: '' . $this->API_Signature, ''X-PAYPAL-APPLICATION-ID: '' . $this->API_AppID )); //if USE_PROXY constant set to TRUE in Constants.php, then only proxy will be enabled. //Set proxy name to PROXY_HOST and port number to PROXY_PORT in constants.php if($this->USE_PROXY) curl_setopt ($ch, CURLOPT_PROXY, $this->PROXY_HOST. ":" . $this->PROXY_PORT); // RequestEnvelope fields $detailLevel = urlencode("ReturnAll"); // See DetailLevelCode in the WSDL for valid enumerations $errorLanguage = urlencode("en_US"); // This should be the standard RFC 3066 language identification tag, e.g., en_US // NVPRequest for submitting to server $nvpreq = "requestEnvelope.errorLanguage=$errorLanguage&requestEnvelope.detailLevel=$detailLevel"; $nvpreq .= "&$nvpStr"; //echo $nvpreq; die; //setting the nvpreq as POST FIELD to curl curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq); //getting response from server $response = curl_exec($ch); //converting NVPResponse to an Associative Array $nvpResArray=$this->deformatNVP($response); $nvpReqArray=$this->deformatNVP($nvpreq); $_SESSION[''nvpReqArray'']=$nvpReqArray; if (curl_errno($ch)) { // moving to display page to display curl errors $_SESSION[''curl_error_no'']=curl_errno($ch) ; $_SESSION[''curl_error_msg'']=curl_error($ch); //Execute the Error handling module to display errors. } else { //closing the curl curl_close($ch); } return $nvpResArray; }

Config:

Configure::write(''ParallelPayPalAPI.URL'', ''https://svcs.sandbox.paypal.com/AdaptivePayments''); Configure::write(''ParallelPayPalAPI.AdaptiveAccountURL'', ''https://svcs.sandbox.paypal.com/AdaptiveAccounts''); Configure::write(''ParallelPayPalAPI.api_username'', user); Configure::write(''ParallelPayPalAPI.api_password'', password); Configure::write(''ParallelPayPalAPI.api_signature'', signature); Configure::write(''ParallelPayPalAPI.business'', business); Configure::write(''ParallelPayPalAPI.PaymentDetailUrl'', ''https://svcs.sandbox.paypal.com/AdaptivePayments/PaymentDetails''); Configure::write(''ParallelPayPalAPI.AppID'', AppId);

Podría ser un problema con la versión de API? ¿Hay algún problema con la solicitud de NVP?


Me encontré con este mismo problema y contacté con el soporte técnico de PayPal y la solución fue simplemente que el error 580023 es el comportamiento normal cuando el nombre no coincide con el correo electrónico de la cuenta de PayPal. Esto es confuso porque no hay nada de malo en la solicitud, al contrario de lo que implica el mensaje de respuesta. Entonces, para su ejemplo, si tiene el mismo problema, solo necesita cambiar a John Doe por el nombre y apellido del usuario asociado con el correo electrónico de PayPal con el que intenta hacer coincidir.

Transcripción de mi convo con MTS paypal:

"Se espera el error que está recibiendo. Para obtener una respuesta verificada o no verificada, el nombre que proporcione debe coincidir con la dirección de correo electrónico que proporcionó".


Prueba esto

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); instead of curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);


Documentos de Paypal

580023 Invalid Request.

El código de error dice que es una solicitud no válida, por lo que su envío es el problema. ¿Puede proporcionar su solicitud actual?