I'm using Node Checkout for a Job board. I am using this Conditional Action to change Status to Published after successful purchase:

if (isset($order)) {
  foreach ($order->products as $product) {
    if (isset($product->data['node_checkout_nid'])) {
      $node = node_load($product->data['node_checkout_nid']);
      $node->field_status['0']['value'] = 1;
      $node->field_orderid['0']['value'] = $order->order_id;
      $node->status = 1;
      node_save($node);
    }
  }
}

During testing phase, this worked for me when I paid via Check. If I recall, I believe it worked during Test Gateway testing as well. After finally moving to actual Authorize.net testing, I am getting successful transactions ("transaction approved" according to debug log) however the Nodes are not being Published as they were when using Check for payment.

Does anyone have an idea what might be going on or where I can start testing? I am trying to get the merchant account info so I can confirm that the "successful transactions" are actually successful.

Comments

TimeBandit’s picture

I verified in the merchant account that my tests were "settled successfully" so these transactions are good.

TimeBandit’s picture

Title: Publishing node successful for checks, not for Authorize.net » Publishing node successful for Checks, not for Authorize.net

Maybe this has something to do with Check orders returning "1" for Status and Authorize.net returning "completed" for Status?

TimeBandit’s picture

Node Published is not doing the trick either.

It's interesting that the successful Check orders show as "pending" in the database yet seem to be considered completed by the conditional action triggered on "customer completes checkout," however the actual items marked as "completed" in the database are evidently not passing that conditional trigger.

TimeBandit’s picture

Well, for now I couldn't find a better solution than to hack UC Node Checkout module. At line 793 is inserted:

    if($orderstatus == "completed")	{
      $node->status = 1; // publish the node 
      $needs_save = TRUE;
    }