I ran into issues using your module with COD (Conference Organizing Distribution) and in particular the uc_signup module.

The uc_signup module — among others — requires that the hook_order be called with the 'submit' op prior to being directed off site to make the payment. This is because it needs to do a bunch of processing and store certain things in the db in preparation for when the order comes back from an offsite gateway.

Note that the ubercart paypal module has to do the same thing and here is an issue regarding the same thing for paypal: http://drupal.org/node/700270

I added the following code to uc_migs_form_submit() in order for it to work with all module that require a call to hook_order with op 'submit'

  $order = uc_order_load($_SESSION['cart_order']);
  foreach (module_implements('order') as $module) {
    $function = $module. '_order';
    $result = $function('submit', $order, NULL);

    $msg_type = 'status';
    if ($result[0]['pass'] === FALSE) {
      $error = TRUE;
      $msg_type = 'error';
    }
    if (!empty($result[0]['message'])) {
      drupal_set_message($result[0]['message'], $msg_type);
    }
    if ($error) {
      $_SESSION['do_review'] = TRUE;
      drupal_goto('cart/checkout/review');
    }
  }

I don't know if this is valid solution for inclusion in your module or if you have any better ideas but I wanted to raise the issue with you so we can get migs working as a valid solution in this use case.

Thanks.