The following code which is present if you check out with normal payment methods is not available with the about plugin which provides a button at the bottom of the cart.
public virtual IActionResult StartCheckout(IFormCollection form)
{
var cart = _shoppingCartService.GetShoppingCart(_workContext.CurrentCustomer, ShoppingCartType.ShoppingCart, _storeContext.CurrentStore.Id);
//parse and save checkout attributes
ParseAndSaveCheckoutAttributes(cart, form);
//validate attributes
var checkoutAttributes = _genericAttributeService.GetAttribute<string>(_workContext.CurrentCustomer,
NopCustomerDefaults.CheckoutAttributes, _storeContext.CurrentStore.Id);
var checkoutAttributeWarnings = _shoppingCartService.GetShoppingCartWarnings(cart, checkoutAttributes, true);
if (checkoutAttributeWarnings.Any())
{
//something wrong, redisplay the page with warnings
var model = new ShoppingCartModel();
model = _shoppingCartModelFactory.PrepareShoppingCartModel(model, cart, validateCheckoutAttributes: true);
return View(model);
}
As a result if you checkout with paypal express it does not validate your required checkout attributes when the page is editable at the start.
Steve.