Create Payment rejects my request made with transactions and item_list

calirails
Contributor
Contributor

I am using the client-side (Javascript) Paypal integration within a Vue.js app. I was able to successfully create and receive a completed payment following this Paypal component guide here. However, I need to be able to pass the detailed line items so that (1) my customers know exactly what they are tendering payment for at all stages of the checkout and so that (2) my merchant has access to their history of what was purchased with each Paypal transaction. 

 

I am currently getting this error but my data suggests appears to be what is required per my understanding of this Paypal create payment API reference here. The error I get from my Chrome Developer Tools is this:

Uncaught Error: Error: Request to post https://www.sandbox.paypal.com/v1/payments/payment failed with 400 error. Correlation id: 6cdb868c81733, 6cdb868c81733

{
"name": "VALIDATION_ERROR",
"details": [
{
"field": "transactions.amount",
"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 and currency which is a valid ISO Currency Code"
}
],
"message": "Invalid request - see details",
"information_link": "https://developer.paypal.com/docs/api/payments/#errors",
"debug_id": "6cdb868c81733"
}

at XMLHttpRequest.<anonymous> (https://www.paypalobjects.com/api/checkout.4.0.223.js:14044:39)

 

In terms of code, my Paypal button is configured as follows:

<Paypal env='sandbox'
                                currency='USD'
                                v-bind:client='paypalCredentials'
                                v-bind:button-style='paypalStyle'
                                v-on:payment-cancelled='onPaypalPaymentCancelled'
                                v-on:payment-authorized='onPaypalPaymentAuthorized'
                                v-on:payment-completed='onPaypalPaymentCompleted'
                                v-bind:transactions='paypalTransactionRequest()'>
                            </Paypal>
 
The paypaly button uses the v-bind:transations='' syntax to call a method in my javascript component that returns this JSON payload via JSON.stringify(). I had originally just passed back the object rather than JSON payload. Both methods fail. I noticed the curl example indicates that the price field values are also strings. Is that intended and required?
{
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"transactions": [
{
"description": "Starwicker Checkout",
"amount": {
"currency": "USD",
"total": 19.94,
"details": {
"subtotal": 15.94,
"tax": 2.01,
"shipping": 1.99
}
},
"item_list": {
"items": [
{
"sku": "DTF060",
"name": "Mars",
"description": "Starwicker Mars",
"quantity": 1,
"price": 15.94,
"tax": 2.01
}
]
}
}
]
}
 
 
Login to Me Too
2 REPLIES 2

aiiiibbb
Contributor
Contributor

Hey, any fix to this particular error ? I would like to know if you've done something to make this fix ?

Login to Me Too

MTS_Justin
Moderator
Moderator
Hello,

If you're still experiencing this issue, can you please share a new debug_id ?

The existing ones provided appear to have expired.

Thanks !

Was my post helpful? If so, please give me a kudos!
Login to Me Too

Haven't Found your Answer?

It happens. Hit the "Login to Ask the community" button to create a question for the PayPal community.