出于某种原因,在尝试使用SDK授权PayPal付款时,我的日志中出现以下错误:
错误:访问时获得Http响应代码400 https://api.sandbox.paypal.com/v1/payments/payment。 { “名”: “VALIDATION_ERROR”, “细节”:[{ “场”: “交易[0] .amount”, “问题”:“交易 金额详细信息(小计,税金,运费)必须加起来指定 金额总计“}],”消息“:”无效请求 - 请参阅详细信息“
我的交易金额似乎加起来不错,所以我不知道为什么PayPal会抛出错误,这是我的交易金额:
'transactions' => [
0 => PayPal\Api\Transaction#5
(
[PayPal\Common\PayPalModel:_propMap] => [
'amount' => PayPal\Api\Amount#6
(
[PayPal\Common\PayPalModel:_propMap] => [
'currency' => 'GBP'
'total' => '675.00'
'details' => PayPal\Api\Details#7
(
[PayPal\Common\PayPalModel:_propMap] => [
'fee' => '75.00'
'subtotal' => '600.00'
]
)
]
)
'item_list' => PayPal\Api\ItemList#8
(
[PayPal\Common\PayPalModel:_propMap] => [
'items' => [
0 => PayPal\Api\Item#9
(
[PayPal\Common\PayPalModel:_propMap] => [
'name' => 'Day 1: 30-12-2017'
'currency' => 'GBP'
'quantity' => 1
'price' => '300.00'
]
)
1 => PayPal\Api\Item#10
(
[PayPal\Common\PayPalModel:_propMap] => [
'name' => 'Day 2: 27-01-2018'
'currency' => 'GBP'
'quantity' => 1
'price' => '300.00'
]
)
]
]
)
这可能与number_format
功能有关吗?我正在使用该函数来确保所有值与小数位一致:$grandTotal = number_format($data['job']['grandTotalAmount'], 2, '.', '');
答案 0 :(得分:0)
删除您的* .paypal.com Cookie。这是PayPal系统中的一个不幸的错误,其中cookie太大而服务器错误。您可以使用两种不同的浏览器来避免此问题,例如用于PayPal Live的IE和用于PayPal Sandbox的FF。也可以使用隐身模式进行检查。
答案 1 :(得分:0)
费用不包括在总计算检查中。
这是一个PayPal错误,而不是你做错了什么。只需向税收或S& H(或甚至作为新的订单项)添加任何费用。
答案 2 :(得分:0)
我遇到了这个问题。在我的情况下,解决方案是正确的总计和小计:
subtotal
必须为Price
* Quantity
Total
必须为Tax
+ shipping
+ subtotal
不仅要对这些字段进行硬编码。
希望会有所帮助
答案 3 :(得分:0)
我有同样的错误,原因是我没有考虑促销代码折扣的总额和小计
不幸的是,我在PayPal SDK中找不到指定折扣的功能,但是有机会添加负价产品
<?php
if ($discount > 0) {
$item = new Item();
$item->setName('Discount')
->setCurrency('USD')
->setQuantity(1)
->setPrice(number_format(-$discount, 2, '.', 0));
$items[] = $item;
}