┌─────┐ │start│ ├─────┤ └─────┘ | | ┌───────────────────────────────┐ │orphan_slayer_process_orphans()│ ├───────────────────────────────┤ └───────────────────────────────┘ | ┌────────────────────────────────────┐ │$orphan = OrphanSlayer::get_oldest()│ ├────────────────────────────────────┤ └────────────────────────────────────┘ | ┌─┐ │ │ ├─┤ └─┘ ┌─────────────────────────┐ │$slayer->rectify($orphan)│ ├─────────────────────────┤ └─────────────────────────┘ ┌────────────────────────────────┐ ┌────────────────────────┐ │$adapter->rectifyOrphan($orphan)│ │$slayer->cancel($orphan)│ ├────────────────────────────────┤ ├────────────────────────┤ └────────────────────────────────┘ └────────────────────────┘ | | | | ┌─┐ ┌────────────────────┐ | │ │ │Skip pending record.│ | ├─┤--├────────────────────┤ | └─┘ └────────────────────┘ | | | ┌─┐ | │ │ | ├─┤ | └─┘ | | | ┌──────────────────────────────┐ | │$adapter->processDonorReturn()│ | ├──────────────────────────────┤ | └──────────────────────────────┘ | | ┌──────────────────────────────────────────────┐ ┌─────────────────────────┐ │$adapter->do_transaction('Confirm_CreditCard')│ │$adapter->cancel($orphan)│ ├──────────────────────────────────────────────┤ ├─────────────────────────┤ └──────────────────────────────────────────────┘ └─────────────────────────┘ ┌──────────────────────────────────────────────┐ │$status = $this->getOrderStatusFromProcessor()│ ├──────────────────────────────────────────────┤ └──────────────────────────────────────────────┘ ┌───────────────────────────────────────────────┐ │$adapter->post_process_getHostedPaymentStatus()│ ├───────────────────────────────────────────────┤ | └───────────────────────────────────────────────┘ | | ┌────────────────────────────────────────┐ | │$adapter->post_process_get_orderstatus()│ | ├────────────────────────────────────────┤ | └────────────────────────────────────────┘ | | | ┌───────────────────────────────┐ | │$adapter->runAntifraudFilters()│ | ├───────────────────────────────┤ | └───────────────────────────────┘ | | ┌────────────────────────────────────┐ | │$fraudFilter->sendAntifraudMessage()│ | ├────────────────────────────────────┤ | └────────────────────────────────────┘ | | ┌─────────────────────────────────┐ | │pushMessage('payments-antifraud')│ | ├─────────────────────────────────┤ | └─────────────────────────────────┘ | | | ┌─┐ ┌─┐ ┌───────────────────────────────────┐ | │ │ │ │ │$adapter->cancelCreditCardPayment()│ | ├─┤---├─┤---├───────────────────────────────────┤ | └─┘ └─┘ └───────────────────────────────────┘ | | ┌─────────────────────────────────────┐ | │$adapter->finalizeCreditCardPayment()│ | ├─────────────────────────────────────┤ | └─────────────────────────────────────┘ | | | ┌─────────────────────┐ ┌──────────────────────────┐ | │Try again later. bug?│ │$adapter->approvePayment()│ | | ├─────────────────────┤ ├──────────────────────────┤ | | └─────────────────────┘ └──────────────────────────┘ | | | | ┌──────────────────────────────────┐ | | │$adapter->finalizeInternalStatus()│ | | ├──────────────────────────────────┤ | | └──────────────────────────────────┘ | | | | | ┌──────────────────────────────────┐ | | │$adapter->sendFinalStatusMessage()│ | | | ├──────────────────────────────────┤ | | | └──────────────────────────────────┘ | | | | | | | | | ┌────────────────────────────┐ | | | │pushMessage('payments-init')│ | | | ├────────────────────────────┤ | | | └────────────────────────────┘ | | | | | | ┌───────────────────────────────┐ | | | │$adapter->postProcessDonation()│ | | ├───────────────────────────────┤ └───────────────────────────────┘ ┌────────────────────────┐ │pushMessage('donations')│ ├────────────────────────┤ └────────────────────────┘ ┌────────────────────────────────────────┐ │PendingDatabase::deleteMessage($orphan);│ ├────────────────────────────────────────┤ └────────────────────────────────────────┘