CANNOT_BE_NEGATIVE Must be greater than or equal to 0. If the currency supports
-
Hello there,
I’m using the WC’s Fees API to give the customers a discount based on their already available credit.
https://woocommerce.com/document/add-a-surcharge-to-cart-and-checkout-uses-fees-api/
The Paypal plugins recently stopped working and is giving me this error: “CANNOT_BE_NEGATIVE Must be greater than or equal to 0. If the currency supports decimals, only two decimal place precision is supported.”
I did a bit of digging and as far as I got was that your plugin is sending to the Paypal API the discount amount which is a negative number, instead of the total. This is a breakdown of the API call from the file woocommerce-paypal-payments/modules/ppcp-button/src/Endpoint/CreateOrderEndpoint.php:
object(WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit)#3402 (11) { ["amount":"WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Amount)#3351 (3) { ["money":"WooCommerce\PayPalCommerce\ApiClient\Entity\Amount":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Money)#3153 (3) { ["currency_code":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> string(3) "USD" ["value":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> float(0.03) ["currencies_without_decimals":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> array(3) { [0]=> string(3) "HUF" [1]=> string(3) "JPY" [2]=> string(3) "TWD" } } ["breakdown":"WooCommerce\PayPalCommerce\ApiClient\Entity\Amount":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\AmountBreakdown)#3357 (7) { ["item_total":"WooCommerce\PayPalCommerce\ApiClient\Entity\AmountBreakdown":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Money)#3359 (3) { ["currency_code":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> string(3) "USD" ["value":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> float(0.03) ["currencies_without_decimals":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> array(3) { [0]=> string(3) "HUF" [1]=> string(3) "JPY" [2]=> string(3) "TWD" } } ["shipping":"WooCommerce\PayPalCommerce\ApiClient\Entity\AmountBreakdown":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Money)#3355 (3) { ["currency_code":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> string(3) "USD" ["value":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> float(0) ["currencies_without_decimals":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> array(3) { [0]=> string(3) "HUF" [1]=> string(3) "JPY" [2]=> string(3) "TWD" } } ["tax_total":"WooCommerce\PayPalCommerce\ApiClient\Entity\AmountBreakdown":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Money)#3356 (3) { ["currency_code":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> string(3) "USD" ["value":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> float(0) ["currencies_without_decimals":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> array(3) { [0]=> string(3) "HUF" [1]=> string(3) "JPY" [2]=> string(3) "TWD" } } ["handling":"WooCommerce\PayPalCommerce\ApiClient\Entity\AmountBreakdown":private]=> NULL ["insurance":"WooCommerce\PayPalCommerce\ApiClient\Entity\AmountBreakdown":private]=> NULL ["shipping_discount":"WooCommerce\PayPalCommerce\ApiClient\Entity\AmountBreakdown":private]=> NULL ["discount":"WooCommerce\PayPalCommerce\ApiClient\Entity\AmountBreakdown":private]=> NULL } ["currencies_without_decimals":"WooCommerce\PayPalCommerce\ApiClient\Entity\Amount":private]=> array(3) { [0]=> string(3) "HUF" [1]=> string(3) "JPY" [2]=> string(3) "TWD" } } ["items":"WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit":private]=> array(2) { [0]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Item)#3387 (7) { ["name":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> string(4) "test" ["unit_amount":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Money)#3385 (3) { ["currency_code":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> string(3) "USD" ["value":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> float(0.04) ["currencies_without_decimals":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> array(3) { [0]=> string(3) "HUF" [1]=> string(3) "JPY" [2]=> string(3) "TWD" } } ["quantity":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> int(1) ["description":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> string(0) "" ["tax":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Money)#3226 (3) { ["currency_code":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> string(3) "USD" ["value":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> float(0) ["currencies_without_decimals":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> array(3) { [0]=> string(3) "HUF" [1]=> string(3) "JPY" [2]=> string(3) "TWD" } } ["sku":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> string(4) "test" ["category":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> string(14) "PHYSICAL_GOODS" } [1]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Item)#3394 (7) { ["name":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> string(18) "Payment via Wallet" ["unit_amount":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Money)#3398 (3) { ["currency_code":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> string(3) "USD" ["value":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> float(-0.01) ["currencies_without_decimals":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> array(3) { [0]=> string(3) "HUF" [1]=> string(3) "JPY" [2]=> string(3) "TWD" } } ["quantity":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> int(1) ["description":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> string(0) "" ["tax":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Money)#3400 (3) { ["currency_code":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> string(3) "USD" ["value":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> float(0) ["currencies_without_decimals":"WooCommerce\PayPalCommerce\ApiClient\Entity\Money":private]=> array(3) { [0]=> string(3) "HUF" [1]=> string(3) "JPY" [2]=> string(3) "TWD" } } ["sku":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> string(0) "" ["category":"WooCommerce\PayPalCommerce\ApiClient\Entity\Item":private]=> string(14) "PHYSICAL_GOODS" } } ["shipping":"WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Shipping)#3393 (2) { ["name":"WooCommerce\PayPalCommerce\ApiClient\Entity\Shipping":private]=> string(11) "Dragos Micu" ["address":"WooCommerce\PayPalCommerce\ApiClient\Entity\Shipping":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Address)#3225 (6) { ["country_code":"WooCommerce\PayPalCommerce\ApiClient\Entity\Address":private]=> string(2) "US" ["address_line_1":"WooCommerce\PayPalCommerce\ApiClient\Entity\Address":private]=> string(15) "95 Pearson Blvd" ["address_line_2":"WooCommerce\PayPalCommerce\ApiClient\Entity\Address":private]=> string(0) "" ["admin_area_1":"WooCommerce\PayPalCommerce\ApiClient\Entity\Address":private]=> string(2) "MA" ["admin_area_2":"WooCommerce\PayPalCommerce\ApiClient\Entity\Address":private]=> string(7) "Gardner" ["postal_code":"WooCommerce\PayPalCommerce\ApiClient\Entity\Address":private]=> string(5) "01440" } } ["reference_id":"WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit":private]=> string(7) "default" ["description":"WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit":private]=> string(0) "" ["payee":"WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit":private]=> object(WooCommerce\PayPalCommerce\ApiClient\Entity\Payee)#3401 (2) { ["email":"WooCommerce\PayPalCommerce\ApiClient\Entity\Payee":private]=> string(19) "[email protected]" ["merchant_id":"WooCommerce\PayPalCommerce\ApiClient\Entity\Payee":private]=> string(13) "LL5EB36RQWL7E" } ["custom_id":"WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit":private]=> string(0) "" ["invoice_id":"WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit":private]=> string(0) "" ["soft_descriptor":"WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit":private]=> string(0) "" ["payments":"WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit":private]=> NULL ["contains_physical_goods":"WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit":private]=> bool(true) }
Under the “items” object, you will see 2 items, one the normal priced at $0.04 but also a 2nd item which is the discount of $0.01. Under the initial “amount” > “money” object I can see the correct amount of $0.03.
Hope you can help with this please! TIA!
Thanks,
Dragos Micu
- The topic ‘CANNOT_BE_NEGATIVE Must be greater than or equal to 0. If the currency supports’ is closed to new replies.