问题
I am trying to create a PayPal order using the Javascript SDK. I am unable to add items without PayPal returning a non-descriptive 400 error.
This markup works fine:
return actions.order.create({
purchase_units: [{
description: "Stuff",
amount: {
value: '57.49',
currency_code: "CAD",
},
}],
application_context: {
brand_name: "MyBusiness",
shipping_preference: 'NO_SHIPPING'
}
});
This markup, where I add the amount breakdown and items doesn't:
return actions.order.create({
purchase_units: [{
description: "Stuff",
amount: {
value: '57.49',
currency_code: "CAD",
breakdown: {
item_total: '57.49',
}
},
items: [{
unit_amount: '57.49',
quantity: '1',
name: "item 1",
}],
}],
application_context: {
brand_name: "MyBusiness",
shipping_preference: 'NO_SHIPPING'
}
});
I am following this documentation:
https://developer.paypal.com/docs/api/orders/v2/#definition-purchase_unit_request
https://developer.paypal.com/docs/api/orders/v2/#definition-item
I'm guessing the way I added the breakdown doesn't work. But the spec implies that it is amount -> breakdown.
回答1:
Full working example... save to an HTML file, or just copy the purchase_units array
<!DOCTYPE html>
<!-- example from https://developer.paypal.com/demo/checkout/#/pattern/client -->
<head>
<!-- Add meta tags for mobile and IE -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body>
<!-- Set up a container element for the button -->
<div id="paypal-button-container"></div>
<!-- Include the PayPal JavaScript SDK -->
<script src="https://www.paypal.com/sdk/js?client-id=sb¤cy=CAD"></script>
<script>
// Render the PayPal button into #paypal-button-container
paypal.Buttons({
// Set up the transaction
createOrder: function(data, actions) {
return actions.order.create({
// based on example array from https://developer.paypal.com/docs/checkout/reference/server-integration/set-up-transaction/
"purchase_units": [{
"description": "Stuff",
"amount": {
"value": "57.49",
"currency_code": "CAD",
"breakdown": {
"item_total": {
"currency_code": "CAD",
"value": "57.49"
},
}
},
"items": [
{
"unit_amount": {
"currency_code": "CAD",
"value": "57.49"
},
"quantity": "1",
"name": "item 1",
},
],
}
]
,
application_context: {
brand_name: "MyBusiness",
shipping_preference: 'NO_SHIPPING'
}
}/*end of parameters to actions.order.create*/);
},
// Finalize the transaction
onApprove: function(data, actions) {
return actions.order.capture().then(function(details) {
// Show a success message to the buyer
alert('Transaction completed by ' + details.payer.name.given_name + '!');
});
}
}).render('#paypal-button-container');
</script>
</body>
来源:https://stackoverflow.com/questions/59384260/why-does-adding-items-make-paypal-checkout-return-an-error