9
votes

API PayPal NVP - Continuez à obtenir l'erreur 81002

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
)


2 commentaires

Ç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.


4 Réponses :


2
votes

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.

Je ne sais pas si vous avez résolu le problème, mais mes conseils vérifieraient lesquels des paramètres sont requillés pour le SETExpressCheckTurkout ( Référence de l'API ). Et que si vous avez défini celles-ci, vérifiez si les limitations font partie de la description du paramètre est satisfaite.

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).

espère que cela a aidé!
Despote


1 commentaires

UGGH; La documentation de référence de l'API n'est pas très bonne. Par exemple, pour l'opération setexpresscheckout , apparemment, le paramètre amt a été "obsolète" mais c'est aussi "requis"! C'est apparemment pas vraiment requis car j'ai pu faire une demande réussie pour cette opération sans y compris ce paramètre.



4
votes

Le problème est lorsque vous utilisez UrlenCode + http_build_query. Vous vous retrouverez avec un codage double et PayPal rejettera certaines des informations.


2 commentaires

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 & comme % 26 , d'où l'erreur "Méthode non spécifiée". [C'est mauvais, et très déroutant, que l'erreur également 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 setexpresscheckout 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 '&'.



3
votes

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)


0 commentaires

0
votes

il y a un problème majeur avec tous. Il suffit de transmettre tous les paramètres sur la touche corporelle

exemple xxx


0 commentaires