You seem to be using the lack of order status update and cart emptying as the way of identifying whether or not uc_nocheck_complete is being called, but putting a drupal_set_message() might be a better way of seeing that the function is stepped into.
uc_nocheck_complete isn't getting a cart_id passed to it and so it won't empty the user's cart. You'll probably want to use uc_cart_get_id() there.
Also, if you are posting to a 3rd party payment processor and then having it redirect back to you, you could print_r($_POST) in your function and make sure that they are returning 'order_id' to you and not 'o_id' or 'orderid' or something like that. If they aren't passing 'order_id' then that would explain why the status is not being updated.



Joined: 11/19/2007