public function testLogInfo() { ob_start(); \CashWay\Log::info('Coucou'); $output = ob_get_clean(); $this->assertStringMatchesFormat('[%s] INFO: Coucou', $output); }
/** * @param string $ref * @param Array $remote remote CashWay API order info * @param Array $local local PrestaShop order info * * @return boolean */ public static function reviewOrder($ref, $remote, $local) { switch ($remote['status']) { case 'paid': \CashWay\Log::info(sprintf('I, found order %s has been paid. Updating local record.', $ref)); return self::verifyAndSetPaid($ref, $remote, $local); case 'expired': \CashWay\Log::info(sprintf('I, found order %s has expired. Updating local record.', $ref)); return self::setOrderAs((int) Configuration::get('PS_OS_CANCELED'), $local['id_order']); default: case 'confirmed': case 'open': case 'blocked': \CashWay\Log::info(sprintf('I, found order %s, still pending (%s).', $ref, $remote['status'])); break; } return true; }
/** * If we have local orders pending for payment from CashWay, * ask CW API for recent transactions statuses, compare and act upon it. * * This method is expected to be called by a cron task at least every hour. * See cron_cashway_check_for_transactions.php * * @return boolean */ public static function checkForPayments() { if (!self::isConfiguredService()) { return; } \CashWay\Log::info('== Starting CashWay background check for orders updates =='); $open_orders = self::getLocalPendingOrders(); if (count($open_orders) == 0) { \CashWay\Log::info('No order payment pending by CashWay.'); return true; } $cw_orders = self::getRemoteOrderStatus(); if (false === $cw_orders) { return false; } $cw_refs = array_keys($cw_orders); $open_refs = array_keys($open_orders); $common_refs = array_intersect($open_refs, $cw_refs); $missing_refs = array_diff($open_refs, $cw_refs); if (count($missing_refs) > 0) { \CashWay\Log::warn(sprintf('Some orders should be in CashWay DB but are not: %s.', implode(', ', $missing_refs))); } foreach ($common_refs as $ref) { switch ($cw_orders[$ref]['status']) { case 'paid': \CashWay\Log::info(sprintf('I, found order %s was paid. Updating local record.', $ref)); if ($cw_orders[$ref]['paid_amount'] != $open_orders[$ref]['total_paid']) { \CashWay\Log::warn(sprintf('W, Found order %s but paid amount does not match: is %.2f but should be %.2f.', $ref, $cw_orders[$ref]['paid_amount'], $open_orders[$ref]['total_paid'])); } if ($open_orders[$ref]['total_paid_real'] >= $cw_orders[$ref]['order_total']) { \CashWay\Log::warn('Well, it looks like it has already been updated: skipping this step.'); } else { $order = new Order($open_orders[$ref]['id_order']); $order->addOrderPayment($cw_orders[$ref]['paid_amount'], 'CashWay', $cw_orders[$ref]['barcode']); $order->setInvoice(true); $history = new OrderHistory(); $history->id_order = $order->id; $history->changeIdOrderState((int) Configuration::get('PS_OS_WS_PAYMENT'), $order, !$order->hasInvoice()); } break; case 'expired': \CashWay\Log::info(sprintf('I, found order %s expired. Updating local record.', $ref)); $order = new Order($open_orders[$ref]['id_order']); $history = new OrderHistory(); $history->id_order = $order->id; $history->changeIdOrderState((int) Configuration::get('PS_OS_CANCELED'), $order, !$order->hasInvoice()); break; default: case 'confirmed': case 'open': \CashWay\Log::info(sprintf('I, found order %s, still pending.', $ref)); break; } } return true; }