0

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

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

这是我的表格

<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";

}

好像有什么问题,你能给我一个小费吗?

非常感谢

4

1 回答 1

0

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

基本上你的最终调用应该包含 & 而不是 &,对我来说,最终的 curl 调用由于某种原因最终被编码为 &。

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

from: http_build_query($requestParameters)

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

不同之处在于最后一个版本将明确使用 & 作为分隔符,而第一个版本将使用默认值,因此请务必确定。

于 2018-04-25T06:26:25.137 回答