Being given the contribution_id, how can I update the Contribution?
I do not know how exactly but I am sure there will be guys and girls around that do. But you should be able to link a Webform (with CiviCRM integration - check https://www.drupal.org/project/webform_civicrm) to a View and pass a contribution_id to that form.