Loading...
;
} else if (checkoutState.type === 'error') {
return
{checkoutState.type === 'success' && (
{JSON.stringify(checkoutState.checkout.lineItems, null, 2)}
Total: {checkoutState.checkout.total?.amount}
)}
);
};
```
### Handle dynamic updates
If you need to update the Checkout Session based on customer selections (such as shipping address or shipping rate changes), you can listen to events and update the session:
```jsx
const onShippingAddressChange = async ({resolve, reject, address}) => {
const response = await fetch('/update-session-shipping', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
sessionId: checkout.session.id,
shippingAddress: address
})
});
const result = await response.json();
if (result.error) {
reject();
} else {
resolve();
}
};
const onShippingRateChange = async ({resolve, reject, shippingRate}) => {
const response = await fetch('/update-session-shipping-rate', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
sessionId: checkout.session.id,
shippingRateId: shippingRate.id
})
});
const result = await response.json();
if (result.error) {
reject();
} else {
resolve();
}
};