我正在尝试使用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等各方面的工作都很好。这是我的示例代码:
我尝试了一些随机漂浮量,如2.5,3.5等,所有时间都有同样的错误。这个浮动金额不能使用的paypal限制吗?
我正在使用沙盒模式。
答案 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);
答案 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。
感谢您的每一个人。