Skip to main content

Suspected Fraud orders in magento



Magento orders paid via paypal, eway or any other payment gateway, sometimes mark the orders as Suspected Fraud. The Suspected Fraud status is assigned to state "Payment Review". This means the order doesnot have invoice issued and the confirmation email is also not sent. We cannot create the invoice for it either.

The Suspected Fraud status is assigned to order because of exchange rates or tax rounding. For example, the amount of money which Paypal charges the customer is out by 1p compared to the amount of money that Magento thinks should have been charged. When Paypal tells Magento that the order has been paid and how much money has been paid, Magento sees this difference and marks it as Suspected Fraud.

The solution is to update the state of the Suspected Fraud status to "processing" instead of "payment review".
For this, go to magento admin panel and to System -> Order Statuses section. There you can see the list of Order Statuses and the Suspected Fraud status assigned to the Payment Review state.


Now, we need to unassign the status of Suspected Fraud by clicking the Unassign link. After unassigning it, click on "Assign status to state" button. We need to assign it to the "Processing" state as shown in fig below.

Select the Order status "Suspected Fraud" from first dropdown and Order State to "Processing" from the next select. Then save status assignment.


This solution solves the problem of updating the status of "Suspected Fraud" orders. We can now update the status to processing and create invoice for it too. However, this applies to orders created after we have done above.

For the orders that are already created before, the above solution won't work. We need to run a script for this.

Sample script:

require_once('app/Mage.php');
Mage::app();

//Get orders having status of "fraud".

$orders = Mage::getModel('sales/order')->getCollection()
    ->addFieldToFilter('status', 'fraud');

//update the order state to processing
foreach ($orders as $order) {
    $orderId = $order->getId();
    $fullOrder = Mage::getModel('sales/order')->load($orderId);
    $fullOrder->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
    $fullOrder->setStatus('processing', false);
    $fullOrder->save();

    //create invoice and send order confirmation email
  try {
        if(!$fullOrder->canInvoice()) {
            Mage::throwException(Mage::helper('core')->__('Cannot create an invoice.'));
        }
        $invoice = Mage::getModel('sales/service_order', $fullOrder)->prepareInvoice();
        if (!$invoice->getTotalQty()) {
            Mage::throwException(Mage::helper('core')->__('Cannot create an invoice without products.'));
        }
        $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
        $invoice->register();
        $transactionSave = Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder());
        $transactionSave->save();
    } catch (Mage_Core_Exception $e) {
    }
}
}


This script can be saved on a separate file and can be runned manually.

Comments

Popular posts from this blog

Error on payment method when placing order "No Such Entity With Cart ID"

No Such Entity With Cart ID Error on payment method when placing order. If you receive the error message " No such entity. ", " No such entity with " or "No such entity with  customerId,OrderId " in Magento 2, the issue usually occurred when you try to load not existing object via Magento 2 Repository Class. To debug this issue, please open the file vendor/magento/framework/Exception/NoSuchEntityException.php and at the beginning of the  __construct  method temporary add debug backtrace code: foreach ( debug_backtrace () as $_stack ) { echo ( $_stack [ "file" ] ? $_stack [ "file" ] : '' ) . ':' . ( $_stack [ "line" ] ? $_stack [ "line" ] : '' ) . ' - ' . ( $_stack [ "function" ] ? $_stack [ "function" ] : '' ); } exit (); example: public function __construct ( Phrase $phrase = null , \...

Magento 2.3 Admin panel blank issue

After the Installation of Magento from the composer, we cannot access the admin panel. Also, the deploy command doesn't work. (On Windows 10 OS). Note: Magento 2.3 supports Linux OS. Windows and Mac OS is not supported. This is a Magento bug. Wrong paths to Windows are generated. The fixed fix is Magento 2.3.0 - 2.3.3 #/vendor/magento/framework/View/Element/Template/File/Validator.php:140 the string if (0 === strpos($realPath, $directory)) {     return true; } to replace $realDirectory = $this->fileDriver->getRealPath($directory); if (0 === strpos($realPath, $realDirectory)) {    return true; } Magento 2.2.7 /vendor/magento/framework/View/Element/Template/File/Validator.php:113 code protected function isPathInDirectories($path, $directories) {     if (!is_array($directories)) {         $directories = (array)$directories;     }     foreach ($directories as $directory) {   ...

Changing the attribute type in Magento

Sometimes, we need to change the input type of attributes in Magento. Magento by default doesn't allow to change the input type from backend simply. We need to do this programmatically. Here is a code to change the input type from dropdown to text. $installer = new Mage_Eav_Model_Entity_Setup('core_setup'); $installer->startSetup(); $iProductEntityTypeId = Mage::getModel('catalog/product')->getResource()->getTypeId(); $idAttributeOldSelect = $installer->getAttributeId($iProductEntityTypeId, 'manufacturer'); $installer->updateAttribute($iProductEntityTypeId, $idAttributeOldSelect, array(     'frontend_input' => 'text' )); $installer->endSetup(); Finally, we need to remove the old values or they will conflict with the new setup. DELETE FROM catalog_product_entity_int WHERE entity_type_id = 4 and attribute_id = YOUR_ATTRIBUTE_ID_HERE; Cheers!!