无法为浮动金额创建paypal付款

时间:2014-03-20 08:35:23

标签: php rest paypal

我正在尝试使用paypal rest api(使用信用卡ID)直接付款,金额为19.50,但未通过。我收到了以下错误:

  

异常:访问时获得Http响应代码400   https://api.sandbox.paypal.com/v1/payments/payment

{"name":"VALIDATION_ERROR","details":[{"field":"transactions[0].item_list.items[0].price","issue":"Currency amount must be non-negative number, may optionally contain exactly 2 decimal places separated by '.', optional thousands separator ',', limited to 7 digits before the decimal point"}

我很奇怪,如10.00,15.00等各方面的工作都很好。这是我的示例代码:

http://pastebin.com/2NQSn3aW

我尝试了一些随机漂浮量,如2.5,3.5等,所有时间都有同样的错误。这个浮动金额不能使用的paypal限制吗?

我正在使用沙盒模式。

6 个答案:

答案 0 :(得分:2)

  

货币金额必须是非负数,可以选择包含由'。',

分隔的2个小数位

因为您将初始金额定为0.0而非0.00格式。建议货币金额必须包含正好用'。'分隔的2位小数,

答案 1 :(得分:1)

PayPal沙箱肯定是个问题。我正在使用他们的iOS SDK 2.1.1版。售价5.00美元是不可能的。它必须是4.99美元或5.01美元。

答案 2 :(得分:1)

有同样的问题,所以使用这个

$amount = 16.86;    
$formattedAmount = number_format($amount,2);

它有效!

答案 3 :(得分:0)

正如它在这里所说的那样

  

货币金额必须为非负数,可选择包含正好2位小数,以'。'分隔,

所以它应该包含2个小数位,或者没有小数位。

您可以在php中强制执行2个小数位:

 <?php
 $numWithTwoDecimalPlaces = sprintf("%0.2f", $number);

See Demo

答案 4 :(得分:0)

您可能正在使用新的SDK。

我发现使用Paypal提供的SDK版本没有错误。我用过

"require": {
    "php": ">=5.3.0",
    "ext-curl": "*",
    "ext-json": "*",
    "paypal/rest-api-sdk-php" : "0.5.*"
}    

您可以查看代码here

答案 5 :(得分:0)

我已经弄清楚问题(临时)是在Paypal沙盒API中。尝试按卡ID(保险库)创建付款时,此问题仅适用于沙箱API。

感谢您的每一个人。