    # File lib/active_merchant/billing/gateways/eway.rb, line 145
          def purchase(money, creditcard, options = {})
            requires!(options, :order_id)

            post = {}
            add_creditcard(post, creditcard)
            add_address(post, options)
            add_customer_data(post, options)
            add_invoice_data(post, options)
            # The request fails if all of the fields aren't present
            add_optional_data(post)

            commit(money, post)
          end