paypal - 错误代码81002不支持方法

时间:2013-10-30 13:35:41

标签: php api paypal

我的问题与此特定错误有关:

我正在做一个表单来包含必须传递给服务器以获取令牌的数据,但可能我还没有理解有关这样做的一些概念

这是我的表格

<form method="post" action="https://api-3t.sandbox.paypal.com/nvp">
    <input type="hidden" name="USER" value="Apiuser"/>
    <input type="hidden" name="PWD" value="Apipass"/>
    <input type="hidden" name="SIGNATURE" value="Apisignature"/>
    <input type="hidden" name="VERSION" value="52.0"/>
    <input type="hidden" name="PAYMENTACTION" value="Sale"/>    
    <input name="AMT" value="19.95"/>
    <input type="hidden" name="RETURNURL" value="http://www.YourReturnURL.com"/>
    <input type="hidden" name="CANCELURL" value="http://www.YourCancelURL.com"/>
    <input type="image" name="METHOD" src="https://www.paypal.com/it_IT/IT/i/btn/btn_xpressCheckout.gif" value="SetExpressCheckout"/>
</form>

这是我的功能

if (isset($_POST['METHOD'])) {

$API_UserName = urlencode("Apiuser");
$API_PassWord = urlencode("Apipass");
$API_Signature = urlencode("Apisignature");

$return_url = "http://www.myurl.com";
$cancel_url = "http://www.myurl.com";

$version = urlencode('52.0');
$nvpreq = "USER=$API_UserName&PWD=$API_PassWord&SIGNATURE=$API_Signature&VERSION=$version&PAYMENTACTION=Sale&AMT=19.95&RETURNURL=$return_url&CANCELURL=$cancel_url&METHOD=SetExpressCheckout";

}

似乎有些不对劲,请你给我一个小费吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

您是否检查过您没有对参数进行两次编码?我的情况是通过http_build_query()和一些默认设置发生的,由于某些原因由于在运行时在某处被更改而不稳定。

基本上你的最后一个电话应该包含&amp;而不是&amp ;,对我来说,由于某种原因最后的卷曲调用最终被编码为&amp;。

确保你没有编码twize,如果使用http_build_query()更新你的函数,那么它将在编码部分显式:

from: http_build_query($requestParameters)

to: http_build_query($requestParameters,'','&')

不同之处在于最后一个版本将明确使用&amp;作为分隔符,而第一个将使用默认值,所以一定要确定。