2013-01-07 29 views
8

Po pierwsze, nie mam konta biznesowego, więc jeśli to jest problem, po prostu powiedz mi, ponieważ jest prawie niemożliwe, aby znaleźć, gdzie jest wymóg dla Paypal Express Checkout w ich oficjalna strona internetowa.Błąd wewnętrzny 10001 paypal: żądanie przetworzenia limitu Express Checkout

Mój kod do tego API jest:

$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); 

Następnie, aż tu jest (chyba) wszystko w porządku. Ale robi jakieś kontrole to co wysłałem z $ 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" 
} 

I to jest to, co otrzymują od Paypal:

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

Czy ktoś wie, co się tutaj dzieje? Czy to źle? Czy tutaj najważniejszy jest problem z kontem?

Odpowiedz

15

ROZWIĄZANIE:

I rozwiązać ten problem z tym:

UNIKAĆ użyciu "urlencode()" do zakodowania params, zapisać dane jako normalne.

przykład:

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

USE http_build_query ($ request) w tej chwili przed wysłaniem go poprzez "Curl" tak:

curl_setopt($ch,CURLOPT_POSTFIELDS , http_build_query($request)); 
+2

'http_build_query ($ request)' zrobiłem to dla mnie –

+2

święte gówno, to jest błąd w obsłudze formatu paypal "multipart/form-data" i po 3 latach – hanshenrik

0

Nie masz żadnych adresów URL z powrotem jako subdomeny z podkreśleniem w nich, prawda?

+0

cóż, to normalna strona internetowa, taka jak http://www.yourwebsite.com/PP_confirm.php i /PP_cancel.php. Czy jest to symbol" _ " problem? –

+0

Znalazłem, że moje domeny rozwojowe otrzymywały jakieś naprawdę niejasne błędy z systemu PayPal, ponieważ używałem poddomeny z podkreśleniem np. my_subdomain.example.com – Chris

1

byłem coraz ten sam błąd, jednak mój problem był nieprawidłowy format daty wygaśnięcia karty. Błąd, który otrzymałem, był spowodowany datą, przez którą przechodziłem. To nie było w poprawnym formacie. Musiał być "" 032018 ", a nie" 3/2018 ".