我的问题与此特定错误有关:
我正在做一个表单来包含必须传递给服务器以获取令牌的数据,但可能我还没有理解有关这样做的一些概念
这是我的表格
<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";
}
似乎有些不对劲,请你给我一个小费吗?
非常感谢
答案 0 :(得分:0)
您是否检查过您没有对参数进行两次编码?我的情况是通过http_build_query()和一些默认设置发生的,由于某些原因由于在运行时在某处被更改而不稳定。
基本上你的最后一个电话应该包含&amp;而不是&amp ;,对我来说,由于某种原因最后的卷曲调用最终被编码为&amp;。
确保你没有编码twize,如果使用http_build_query()更新你的函数,那么它将在编码部分显式:
from: http_build_query($requestParameters)
to: http_build_query($requestParameters,'','&')
不同之处在于最后一个版本将明确使用&amp;作为分隔符,而第一个将使用默认值,所以一定要确定。