8

First of all, i dont have a Bussiness Account, so if that is the problem, just tell me, because is almost impossible to find where is the requeriment for Paypal Express Checkout in their official website.

My code for this API is:

$requestParams = array(
     'METHOD' => $method,
     'VERSION' => $this -> _version,
     'USER' => $PayPalApiUsername,
     'PWD' => $PayPalApiPassword,
     'SIGNATURE' => $PayPalApiSignature
);

$request = array_merge($requestParams, $params);
//$params is bringed from other php.

$ch = curl_init();
  curl_setopt($ch,CURLOPT_URL ,'https://api-3t.paypal.com/nvp');
  curl_setopt($ch,CURLOPT_VERBOSE ,1);
  curl_setopt($ch,CURLOPT_SSL_VERIFYPEER ,false);
  curl_setopt($ch,CURLOPT_SSL_VERIFYHOST ,false);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER ,1);
  curl_setopt($ch,CURLOPT_HTTPGET ,true);
  curl_setopt($ch,CURLOPT_POSTFIELDS ,$request);

$response = curl_exec($ch);

Then, until here is (i think) all right. But doing some checks this is what i sent with $request:

$request: array(16) {
["METHOD"]=>
string(18) "SetExpressCheckout"
["VERSION"]=>
string(4) "97.0"
["USER"]=>
string(27) "xxx_api1.example.com"
["PWD"]=>
string(16) "yyyyyyyyyyyyyyyy"
["SIGNATURE"]=>
string(56) "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
["RETURNURL"]=>
string(50) "http%3A%2F%2Fwww.website.com%2Fcontinue.php"
["CANCELURL"]=>
string(53) "http%3A%2F%2Fwww.website.com%2Fpaypal%2Fcancel_url.php"
["PAYMENTREQUEST_0_AMT"]=>
string(5) "10.95"
["PAYMENTREQUEST_0_CURRENCYCODE"]=>
string(3) "EUR"
["PAYMENTREQUEST_0_ITEMAMT"]=>
string(5) "10.95"
["PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID"]=>
string(24) "xxx%40example.com"
["PAYMENTREQUEST_0_PAYMENTACTION"]=>
string(4) "Sale"
["L_PAYMENTREQUEST_0_NAME0"]=>
string(17) "ProductA"
["L_PAYMENTREQUEST_0_AMT0"]=>
string(5) "10.95"
["L_PAYMENTREQUEST_0_QTY0"]=>
string(1) "1"
["L_PAYMENTREQUEST_0_NUMBER0"]=>
string(1) "1"
}

And this is what i receive from Paypal:

$response: 
TIMESTAMP=2013%2d01%2d07T23%3a20%3a43Z
CORRELATIONID=7a8130fb32e44
ACK=Failure
L_ERRORCODE0=10001
L_SHORTMESSAGE0=Internal%20Error
L_LONGMESSAGE0=Timeout%20processing%20request

Does anyone know what is happening here? Is this wrong? Is the premier Account the problem here?

Kara
  • 6,115
  • 16
  • 50
  • 57
Ignacio Bustos
  • 1,415
  • 2
  • 17
  • 26

3 Answers3

15

SOLUTION:

I solved this problem with this:

AVOID using "urlencode()" to encode the params, save your data as normal.

example:

array(
   'RETURNURL' => 'http://www.yourwebsite.com/confirm.php', //without urlencode()
   'CANCELURL' => 'http://www.yourwebsite.com/cancel.php'  //without urlencode()
);

USE http_build_query($request) in the moment before sending it via "Curl" like this:

curl_setopt($ch,CURLOPT_POSTFIELDS , http_build_query($request));
Ignacio Bustos
  • 1,415
  • 2
  • 17
  • 26
0

You don't by any chance have your return urls as a subdomain with an underscore in them do you?

Chris
  • 196
  • 3
  • well, is a normal website like http://www.yourwebsite.com/PP_confirm.php and /PP_cancel.php. Is this symbol "_" a problem? – Ignacio Bustos Jan 07 '13 at 23:55
  • I found my development domains were getting some really obscure errors from paypal because I was using a subdomain with an underscore e.g. my_subdomain.example.com – Chris Jan 08 '13 at 00:06
0

I was getting the same error however my problem was the wrong format of card expiry date. The error I was receiving was being caused by the date that I was passing over. It was not in the correct format. It needed to be ""032018" not "3/2018".

Usman Shaukat
  • 1,315
  • 16
  • 22