Because the checkout service manually sets the state to "payment" in setDeliveryAndPayment, Spree assigns the "payment" state to the order while loading it. This skips related state-machine callbacks, which is Not Good™ because it skips this callback. This can lead to various order totals becoming confusingly out-of-sync:
