I want to add functionality into my site that users may be able to sign agreement, pay, and then submit
You can use the Webform module to allow the users to fill it out and then use the Payment for Webform module for payment options.


  This module provides a payment reference Webform component, which
  allows users to associate payments (made through Payment) with Webform
  submissions. A possible use case is requiring users to pay before
  submitting a webform.


or you can do it with Commerce Webform module, by following this tutorial you can easily set up the payment options.