Orders with PayPal eChecks get stuck in "Paypal pending".

Here are the comments from one:

  • 05/07/2013 - 12:27 - Payment is pending at PayPal: eCheck has not yet cleared.
  • 05/10/2013 - 06:43 - PayPal IPN reported a payment of 77.00 USD.

The log:

  • 05/07/2013 - 12:27 - Order status changed from In checkout to PayPal pending.
  • 05/10/2013 - 06:43 - PayPal payment for $77.00 entered.

It doesn't move to "Payment received". It just stays as "PayPal pending".

This is PayPal WPS.

The Payments tab on the order correctly shows the payment on 5/10. The balance on the order is correctly $0.

I found the bug that causes this:

The rule for "Update order status on full payment" requires that the order state (not status) be "In checkout" or "Post checkout". However, looking at {uc_order_statuses}, the state associated with "PayPal pending" is "payment_received". So, the rule will never fire.

There are two possible fixes:

  • Change the state of the "PayPal pending" status to "Post checkout". This is logical, but would it have side effects?
  • Adjust the rule conditions to allow orders in "PayPal pending" status to trigger it.

Frankly, I'm not clear why there are conditions on that rule on the state of the order.... If full payment is entered on an order, that's an active order, and ought to go to "Payment received", right?

Comments

Status:Active» Closed (duplicate)

PayPal pending should indeed be "post checkout", as payment has not been received when it was set. Thank you for the analysis, this confirms that the recent change in -dev in #1503810: glitch in "paypal pending" status behaviour was the right thing to do - so this can be closed as duplicate.