当价值为4位数时,贝宝额会发生变化

时间:2013-11-19 17:11:15

标签: php variables paypal

这太奇怪了。我发送的价值,例如4240($ 4,240)

变量$ amount正好是“4240”,但当它通过api并且我回应它时,它突然变为4%2C240.00。

API

        $nvpStr = "&PAYMENTACTION=$paymentType";
    $nvpStr .= "&AMT=$amount";
    $nvpStr .= "&ACCT=$creditCardNumber&EXPDATE=$padDateMonth$expDateYear&CVV2=$cvv2Number";
    $nvpStr .= "&FIRSTNAME=$firstName&LASTNAME=$lastName&EMAIL=$email";
    $nvpStr .= "&STREET=$address1&CITY=$city&STATE=$state&COUNTRYCODE=$country&ZIP=$zip";
    $nvpStr .= "&INVNUM=$invoice&CURRENCYCODE=$currencyID&";

当我回显$ nvpStr时,它变为

&PAYMENTACTION=Sale&AMT=4%2C240.00&ACCT=

我测试了变量,当回显时它是4240.那怎么能变成4%2C240.00

如果该值低于1000,只有3个数字,则没有问题。

2 个答案:

答案 0 :(得分:0)

我不清楚这个问题,但所有看起来对我都有所期待。 %2C只是逗号的URL编码值。所以urlencode("4,240.00") == "4%2C240.00"

答案 1 :(得分:0)

网址已编码。这将解码它:

$nvpStr .= "&AMT=" . urldecode($amount);

解码后的字符串是“4,240.00”,因为这就是paypal格式化的方式。 如果您需要删除逗号,可以使用str_replace(',', '', urldecode($amount));str_replace('%2C', '', $amount)。您也可以使用preg_replace()删除除数字之外的所有内容,但我不知道您正在尝试做什么,所以我不知道您是否需要它。

您并未真正向我们提供任何实际信息或说明您正在对数据执行的操作,因此我们不知道您希望数据是什么。