Je suis nouveau à API PayPal, et je vais avoir du mal à appeler à l'aide SetExpressCheckout CURL en PHP. J'ai mis tout correctement, en ce qui me concerne, mais je continuais à faire une erreur 81002 « méthode spécifiée est non prise en charge ».
L'extrait de code est ci-dessous. Je suis le fichier de certificats racine CA de . P>
Data sent: Array ( [USER] => andree_1272823561_biz_api1.gmail.com [PWD] => 1272823576 [SIGNATURE] => Am1t0wiu2tv7VwZ5ebdeY9zv1GF6Ad0PFz-qTGFFf7vbWU6ee4bxy8KL [VERSION] => 52.0 [PAYMENTACTION] => Sale [METHOD] => SetExpressCheckout [AMT] => 52.00 [RETURNURL] => get_express_checkout_details.php [CANCELURL] => index.php ) Result: Array ( [ACK] => Failure [L_ERRORCODE0] => 81002 [L_SHORTMESSAGE0] => Unspecified Method [L_LONGMESSAGE0] => Method Specified is not Supported [L_SEVERITYCODE0] => Error )
4 Réponses :
Je n'utilise pas l'API PHP, mais j'ai couru dans la même erreur 81002 à l'aide de l'API de rappel (Java) et j'ai eu ceci lorsque certains des paramètres étaient manquants ou mal formés. p>
Je ne sais pas si vous avez résolu le problème, mais mes conseils vérifieraient lesquels des paramètres sont Malheureusement, mais ils lancent parfois des erreurs inappropriées (ou des erreurs que le développeur ne peut pas bien comprendre). De l'autre côté, j'obtiens généralement que la plupart de mes réponses ont répondu à leur forum. Si dans "Difficulté", vous pouvez également écrire un message privé au membre de l'équipe PayPal sur Shift (ou à une personne qui a déjà résolu votre problème). p>
espère que cela a aidé!
Despote p>
UGGH; La documentation de référence de l'API n'est pas très bonne. Par exemple, pour l'opération setexpresscheckout code>, apparemment, le paramètre
amt code> a été "obsolète" mais c'est aussi "requis"! C'est apparemment pas vraiment i> requis car j'ai pu faire une demande réussie pour cette opération sans y compris ce paramètre.
Le problème est lorsque vous utilisez UrlenCode + http_build_query. Vous vous retrouverez avec un codage double et PayPal rejettera certaines des informations. P>
J'ai eu ce même problème avec mon propre code juste maintenant. J'ai découvert que j'étais "à double codage" la demande et qui convertissait les délimiteurs de paires & code> comme
% 26 code>, d'où l'erreur "Méthode non spécifiée". [C'est mauvais, et très déroutant, que l'erreur également i> inclut le «Message long» «La méthode spécifiée n'est pas prise en charge», ce qui contredit directement le «message court»! Je me suis dit que je me suis dit que la méthode code> setexpresscheckout code> n'était pas prise en charge!]
J'ai eu un problème similaire parce que j'utilise ";" comme séparateur. PayPal ne prend en charge que '&'.
J'ai eu ce problème et j'ai découvert que c'était un problème d'obtenir le paramètres transmis du tout. J'utilisais le type de code suivant pour réussir le Paramètres (comme indiqué dans divers exemples sur le Net pour PayPal):
# http://www.ensta-paristech.fr/~diam/ruby/online/ruby-doc-stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html # https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECGettingStarted require 'net/https' require 'uri' uri = URI('https://api-3t.sandbox.paypal.com/nvp') request_object = Net::HTTP::Post.new(uri.path) request_object.form_data = { 'USER'=>'sdk-three_api1.sdk.com', # Sandbox value. See e_howto_api_ECGettingStarted 'PWD'=>'QFZCWN5HZM8VBG7Q', # Sandbox value. See e_howto_api_ECGettingStarted 'SIGNATURE'=>'A-IzJhZZjhg29XQ2qnhapuwxIDzyAZQ92FRP5dqBzVesOkzbdUONzmOU', # Sandbox value. See e_howto_api_ECGettingStarted 'METHOD'=>'SetExpressCheckout', 'VERSION'=>'88.0', 'PAYMENTREQUEST_0_PAYMENTACTION'=>'Sale', 'PAYMENTREQUEST_0_AMT'=>'23.00', # Must have exactly two decimals for cents. See e_howto_api_ECGettingStarted above. 'PAYMENTREQUEST_0_CURRENCYCODE'=>'USD', 'cancelUrl'=>'http://www.add your own URL here', 'returnUrl'=>'http://www.add your own URL here' } http = Net::HTTP.new(uri.host,uri.port) # HACK: The following two lines turn off secure certificate checking!! http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE response = http.request(request_object)
exemple p>
Ça me va bien avec moi, le seul diff. Est-ce que je n'utilise pas l'option de certificat et que vous avez ajouté ces deux options curl_setopt ($ curl, curlopt_ssl_verifypeer, false); curl_setopt ($ curl, curlopt_ssl_verifyHost, false);
Hm .. bizarre. J'ai changé l'option Cainfo avec les deux lignes que vous avez suggérées et j'ai toujours le même message d'erreur.