API do PayPal: os totais dos montantes do item do carrinho não correspondem aos montantes do pedido

Há muitos posts sobre esse erro, mas todos não se aplicam a mim. Eu realmente não entendo por que os montantes não combinariam. Eu tenho ITEMAMT que combina com AMT0 * QTY0. E AMT combina com ITEMAMT + SHIPPINGAMT. Verifiquei os documentos cada vez mais e isso realmente deveria funcionar dessa maneira. Isso funciona quando eu removo totalmente o envio dele …

O AMT na checkbox de pagamento também é 73.9.

Espero realmente que alguém esteja familiarizado com esse erro muito confuso e sabe o que estou fazendo errado …

desde já, obrigado

Array ( [TIMESTAMP] => 2013-01-24T22:56:09Z [CORRELATIONID] => [ACK] => Failure [VERSION] => 62.0 [BUILD] => 4181146 [L_ERRORCODE0] => 10413 [L_SHORTMESSAGE0] => Transaction refused because of an invalid argument. See additional error messages for details. [L_LONGMESSAGE0] => The totals of the cart item amounts do not match order amounts. [L_SEVERITYCODE0] => Error ) Array ( [PAYMENTREQUEST_0_PAYMENTACTION] => Sale [L_PAYMENTREQUEST_0_NAME0] => XXXX [L_PAYMENTREQUEST_0_NUMBER0] => 30533 [L_PAYMENTREQUEST_0_DESC0] => XXXX [L_PAYMENTREQUEST_0_AMT0] => 30.95 [L_PAYMENTREQUEST_0_QTY0] => 2 [PAYMENTREQUEST_0_ITEMAMT] => 61.9 [PAYMENTREQUEST_0_TAXAMT] => 0 [PAYMENTREQUEST_0_SHIPPINGAMT] => 12 [PAYMENTREQUEST_0_INSURANCEAMT] => 0 [PAYMENTREQUEST_0_AMT] => 73.9 [PAYMENTREQUEST_0_CURRENCYCODE] => USD [REQCONFIRMSHIPPING] => 1 [PAYMENTREQUEST_0_SHIPTOSTREET] => XXXX [PAYMENTREQUEST_0_SHIPTOCITY] => XXXX [PAYMENTREQUEST_0_SHIPTOSTATE] => XX [PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE] => XX [PAYMENTREQUEST_0_SHIPTOZIP] => XXXXXX [PAYMENTREQUEST_0_SHIPTOPHONENUM] => XXXXXXXX ) 

É obrigatório enviar uma moeda com 2 casas decimais. Parece que você está fornecendo apenas 1.

 $amt = 61.9; $amt = sprintf("%.2f",$amt); // 61.90 

Paypal retornará esse erro porque o valor não está no formato correto:

Dê uma olhada na Table A.2 sob a linha AMT :

http://www.paypalobjects.com/en_US/ebook/PP_NVPAPI_DeveloperGuide/Appx_fieldreference.html

Essa regra deve ser aplicada sempre que você definir um parâmetro ‘dinheiro’.

A resposta à minha pergunta provavelmente não é útil para a maioria de vocês passando. Mas um dos meus itens continha um & na descrição (L_PAYMENTREQUEST_0_DESC0). ‘&’ escapou dos dados transmitidos com CURL. E isso criou o erro (que é totalmente desligado). Lembre-se de que isso também acontecerá quando você colocar qualquer personagem que contenha um & quando o URL estiver sendo codificado, por exemplo, é se tornará é

Peço desculpas por remover a descrição do item da minha primeira postagem, mas não tinha idéia de que isso tivesse algo a ver com isso, devido à mensagem de erro sobre os montantes.

Eu também tive o mesmo problema alguns dias atrás, quando tentando me comunicar, então eu percebi que esses totais de pedidos não coincidem, com algumas pequenas casas decimais. Se você tentar a comunicação com alguns números inteiros como 50, como item amt e total (sem qualquer précessão), não dará nenhum erro. Eu também estava quebrando minha cabeça e, embora o paypal tenha algum problema. (mas realmente eu era) Então, é melhor você verificar os cálculos e observar que o Paypal aceita montantes até apenas 2 precessões ou casas decimais. Eu concordo com Samuel no que ele disse.

Mesmo o valor do envio, é melhor enviá-los como 12,00 em vez de 12 e outros números como 61,90, 73,90 …