Re-rendering Wallet widgets
In most cases, you don't need to refresh the Wallet widget as it automatically refreshes when a buyer chooses an address from the AddressBook widget. Frequent re-rendering of the Wallet widget affects website performance and causes a poor buyer experience.
But sometimes the re-rendering of the Wallet widget is actually required when certain constraints are returned in the checkout flow. Here are some examples:
- PaymentMethodNotAllowed - Amazon Pay might not allow all payment methods for a given transaction. After calling either the SetOrderReferenceDetails or GetOrderReferenceDetails operation, you might see a PaymentMethodNotAllowed constraint in the response. Attempting to confirm an Order Reference that has constraints also returns the error code ConstraintsExist.
- InvalidPaymentMethod - If there are problems with a buyer's payment method, it might be declined. If so, after making a GetAuthorizationDetails API call, you see a response with a Declined state with a InvalidPaymentMethod reason code.
As a best practice, you should re-render the Wallet widget and request that the buyer choose a different payment method.
For more information about constraints, see OrderReferenceConstraints in the Amazon Pay API reference guide.
Procedure
To re-render the Wallet widget, bind the order reference Id, which was created from the AddressBook widget, to the Wallet widget.
<script>
// re-render the wallet widget after saving new currencyCode.
// set to GBP for UK integrations
walletWidget.setPresentmentCurrency("EUR").bind("walletWidgetDiv");
</script>
Finally, reload the page, or call your JavaScript function to render the wallet widget.