簡體   English   中英

Paypal NVP API - 不斷收到錯誤 81002

[英]Paypal NVP API - Keep getting error 81002

我是 PayPal API 的新手,在 PHP 中使用 CURL 調用 SetExpressCheckout 時遇到問題。 就我而言,我已經正確設置了所有內容,但我一直收到 81002 錯誤“不支持指定的方法”。

代碼片段如下。 我從這里獲得了 CA 根證書文件。

<?php

$paypal_data = array(
    'USER' => urlencode('andree_1272823561_biz_api1.gmail.com'),
    'PWD' => urlencode('1272823576'),
    'SIGNATURE' => urlencode('Am1t0wiu2tv7VwZ5ebdeY9zv1GF6Ad0PFz-qTGFFf7vbWU6ee4bxy8KL'),
    'VERSION' => urlencode('52.0'),
    'PAYMENTACTION' => urlencode('Sale'),
    'METHOD' => urlencode('SetExpressCheckout'),
    'AMT' => urlencode('52.00'),
    'RETURNURL' => urlencode('get_express_checkout_details.php'),
    'CANCELURL' => urlencode('index.php')
);

$url = 'https://api-3t.sandbox.paypal.com/nvp?' . http_build_query($paypal_data);
$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');

$result = curl_exec($curl);
curl_close($curl);
parse_str($result, $result);
?>

<pre>Data sent: <?php print_r($paypal_data); ?></pre>
<pre>Result: <?php print_r($result); ?></pre>

當我運行代碼時,輸​​出如下:

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
)

任何人都知道可能是什么問題?

問候,安德烈。

問題是當您使用 urlencode + http_build_query 時。 您最終會得到雙重編碼,而 PayPal 將拒絕某些信息。

我遇到了這個問題,最后發現根本就是獲取參數的問題。 我使用以下類型的代碼來傳遞參數(如網上的 PayPal 各種示例所示):

   http.set_form_data({"q" => "ruby", "lang" => "en"}, ';')

當我將其更改為:

   http.form_data = {"q" => "ruby", "lang" => "en"}

它停止給我未知的方法錯誤(並轉移到其他錯誤:-)

下面的 Ruby 代碼對我有用(雖然我已經刪除了返回 URL)。 用戶名等是標准的沙箱。

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

我沒有使用 PHP API,但我在使用回調 API (java) 時遇到了相同的 81002 錯誤,並且在某些參數丟失或格式錯誤時得到了這個錯誤。

我不知道,如果你解決了這個問題,但我的建議是檢查其參數都requred為SetExpressCheckout( API參考)。 如果您已經設置了這些,請檢查是否滿足參數描述的限制部分。

可悲的是,它們有時會拋出不適當的錯誤(或開發人員不太理解的錯誤)。 另一方面,我通常會在他們的論壇上得到大部分回復。 如果遇到“麻煩”,您還可以給輪班的貝寶團隊成員(或已經解決您問題的人)寫一封私人信息。

希望有所幫助!
暴君

所有人都存在重大問題。 只需在 body 鍵上傳遞所有參數

例子

wp_remote_post("https://api-3t.sandbox.paypal.com/nvp",
                array(
                    'timeout'   => 60,
                    'sslverify' => FALSE,
                    'httpversion' => '1.1',
                    'body' => "METHOD=SetExpressCheckout&VERSION=72.0&PWD="" &USER=''&SIGNATURE=''&RETURNURL=''&CANCELURL=''&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_AMT=10&PAYMENTREQUEST_0_CURRENCYCODE=USD&PAYMENTREQUEST_0_DESC=test EC payment"
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM