We currently make the following API calls when making recurring charges in transactionRecurring_Charge,
However, there's a failure at step (1) if we're retrying a transaction which previously aborted before step (3). This happens sometimes.
My suggestion is to move the GET_ORDERSTATUS to before step (1), to detect a pending-poke situation, in which case we will skip the DO_PAYMENT. We can probably omit checking status in step (2), is seems that DO_PAYMENT returns a status code.