This module is unsupported now
Project supposes simultaneous work of two different systems. On the one part, it is an open-source electronic commerce platform Magento (http://www.magentocommerce.com/), on the other part, it is Drupal CMS (http://www.drupal.org/). Project is called to take the best from each system and unite them in the network of one website. The result of such integration of two systems is a platform, which has Magento as a backend, with all its powerful and easy-to-use means of eCommerce component management. In other words, we use a handy system of store administration from Magento. On the other part, we have Drupal CMS with all its wide range of ready-to-use modules and themes and flexible mechanism of customization (configuration) of website functional. Interaction of these two systems is performed via XML-RPC protocol. An interchange is implemented in both directions. From Drupal part it's a procedure calling for the purpose of acquirement of information of catalog, products, etc., and of quote and order forming. From Magento part it's an XML-RPC methods calling for the purpose of notification about events, happened within Magento system (if such functional is turned on at settings).


Magento part

A special extension has been developed for Magento, which expands a standard Application Programming Interface (API) and allows to use Magento framework as a backend of model and frontend component to be implemented on any other platform, for example, on Drupal CMS. Creation of quote and order has been added as a main functional to API, together with an acquirement of additional data from Magento. Also the mechanism of notification about events, happened within Magento system and related to integration with side frontend system, has been implemented.

Drupal part

Module "Magento", implementing functional of synchronization Magento data to Drupal database, has been developed for Drupal. Thereby, Drupal CMS possesses a set of data for working with catalog and products. Information of promotion rules is synchronized as well. Besides synchronization, module provides with functional for forming of quote (shopping cart) and order. Check/Money Order and PayPal Website Payments Standard are supported as payment methods.

Installation overview:

!!! Allways install corresponding versions of module drupal modules and magento extensions !!!

DRUPAL MODULE VERSION => MAGENTO EXTENSION VERSION REQUIREMENTS

  • 6.x-1.4 => 1.3.4
  • 6.x-1.3 => 1.3.2

quick facts:

  • Supported magento version: 1.3.2.4
  • Latest "magento" drupal module pack: 1.4
  • Latest "drupal" magento extension: 1.3.4

I know this guide can looks too complicated but it is just too detailed to cover as many things as possible to make installation process more plain and clean.

This is an overview only. You do not need to install anything at this point. Install process will cover installation and initial configuration “Drupal + Magento” making them work together and sync data, Drupal will be used as frontend and fetch data from Magento, where actual data will be stored. We will use fresh and clean Drupal and Magento sites, to avoid misunderstandings, you can apply same approach to existing Magento sites later (however I do recommend you to use clean sites). Drupal will be installed into http://magento.example.com/drupal and Magento into http://magento.example.com/mage .

Installation will consist of several steps:

  1. Install clean Drupal site.
  2. Install and enable required modules, make some configuration on Drupal site.
  3. Install clean Magento site (DO NOT install sample data or make any configurations).
  4. Install and configure “Drupal” extension on Magento site.
  5. Install and configure “Magento” module pack on Drupal site.
  6. Make initial synchronization between Drupal and Magento.

After this is done you should have working ligament of Drupal and Magento. Users, products and categories created in Magento will automatically appear in Drupal (nodes for products and taxonomy terms for categories). End Users will interact only with Drupal Site.

Installation process:

1. Install clean Drupal site

Download latest 6.x version of Drupal from http://drupal.org/. Just install it as is.

2. Install and enable required modules, make some configuration on Drupal site (UPDATED!!!)

2.1 Download latest stable versions of the following modules

you also have to install Services 6.x-0.15 - http://drupal.org/project/services, i know that this is not the latest version, but latest version have changes that require some investigation i haven't done yet. But i'm on it.

2.2 Navigate to Administer > Site building > Modules
Enable following modules: Content, Content Copy, FileField, ImageField, Node Reference, Number, Option Widgets, Text, Date, Date API, Date Popup, Date Timezone, ImageAPI, ImageAPI GD2, ImageCache, Transliteration, Services, XMLRPC Server, System Service, User Service, Views. IT IS CRITICAL TO ENABLE THEM BEFORE ENABLING “MAGENTO” MODULE, since “magento” module will use them during installation process.

2.3 Navigate to Administer > Site building > Services
Copy somewhere XMLRPC server path (you can save link on Servers > XMLRPC - /services/xmlrpc, in my case it was http://magento.example.com/drupal/services/xmlrpc ).

2.4 Navigate to Administer > Site building > Services > Settings
Uncheck “use keys”, check “use sessid” and save configuration.

2.5 Navigate to Administer > User management > Permissions
Grant “access services” permission to both Anonymous and Authenticated users.

3. Install clean Magento site (DO NOT install sample data or make any configurations)

3.1 Download Magento version 1.3.2.4 from here http://www.magentocommerce.com/download (you can see all available version by clicking “release archives” tab at the top of the page).Follow installation guideline for “Default Install” from here http://www.magentocommerce.com/wiki/magento_installation_guide, and DO NOT INSTALL SAMPLE DATA, and scroll page to “Default Install”.

3.2 Navigate to System > Web services > Roles
Add new role called “webservice” (you may call it as you like but to avoid mistakes we will refer to it like “webservice”) and grant it “All” resource access. Save role.

3.3 Navigate to System > Web services > Users
Add new user called “webservice” (you may call it as you like but to avoid mistakes we will refer to it like “webservice”) and assign “webservice” role to it. Save user.

4. Install and configure “Drupal” extension on Magento site

4.1 Navigate to System > Magento Connect > Magento Connect Manager
Paste extension key to install: magento-community/Drupal-1.3.4 and press install button. At the time of this writing the latest “drupal” extension for Magento version is 1.3.4.

provided by davidgraig : If you get an "INVALID POST DATA" when installing locally, you may need to provide Magento with your proxy information, something like this (in magento_directory/downloader/Maged/Pear.php, around line 123):

<?php
$config->set('http_proxy', 'http://proxy:3128/');
?>

(thanks to http://www.magentocommerce.com/boards/viewthread/29354/)

4.2 Relogin into Magento admin panel. By some mgento specific Access roles application you cannot access configuration page for “drupal” extension until you do that.

4.3 Navigate to System > Configuration > Magento Extended API

Set notification to YES
Enable event notification: Yes

Next put your XML RPC service path from 2.3
Remote XML-RPC host url: http://magento.example.com/drupal/services/xmlrpc

Next user name and password for Drupal user that have access to services (I strongly recommend you to use root/admin account for this at this point, later you can change it to specific user)
Remote XML-RPC username: root
Remote XML-RPC password: ********

Don’t forget to save settings :)

5. Install and configure “Magento” module pack on Drupal site

Finally we come to the point where we can enable “Magento” Drupal module

5.1 Download latest version of “Magento” Drupal module pack here http://drupal.org/project/magento
Install them all like any other modules, due they will do some complex installation this can take a while. If you follow this instruction closely so far than you should not see any warning or error messages, if you don’t – you may encounter them and this will indicate that modules does not properly installed there for you need to restart process from the point where you go away from instruction. DO NOT PROCEED UNTIL YOU INSTALL CORRECTLY ALL MODULES SINCE FUTURE STEPS WILL AFFECT YOUR EXISTING DATABASE.

5.2 Navigate to Administer > Site Configuration > Magento API Settings
Fill fields with appropriate values

Set the URL of your Magento installation followed by : /api/xmlrpc/
Magento host URL: http://magento.example.com/mage/api/xmlrpc/

provided by davidgraig : for some cases you may need to append /index.php/api/xmlrpc/ instead of just /api/xmlrpc/

Enter user name and password for “webservice” user we have created earlier in Magento
API user: webservice

API key (password): *******
Save settings.

6. Make initial synchronization between Drupal and Magento

6.1 Navigate to Administer > Site Configuration > Magento Synchronization Settings
Manually synchronies initial data between Magento and Drupal, to do this press all 4 synchronization buttons (one by one I mean, not all at the same time :) ). If you see any warnings/errors this mean you doing something wrong earlier.

6.2 Navigate to Administer > Site building > Blocks
Enable “Shopping Cart” block.

When all that is done, you can use your “Drupal + Magento” and enjoy power of both systems. I suggest you to create some products on Magento to check synchronization work properly.

Comments

paulkulp’s picture

The Services module has been updated since these instructions were written.

Can someone give some revised instructions for the Drupal setup portion?
I can't figure out how to set up the sessid based authentication with Services 6.x-2.0

Thanks!

************Update************
Ok, it makes more sense after you enable the Services - Key Authentication module
then add "Key Authentication" as an authentication type

wireyourworld’s picture

I've gone through this for 3 days now and finally made it to the very last step, enabling the shopping cart block. Only, there IS no shopping cart block in my drupal installation. I'm using a fresh install, where is it, did I miss that somewhere?

davidgraig’s picture

  • step 4.1: if you get an "INVALID POST DATA" when installing locally, you may need to provide Magento with your proxy information, something like this (in magento_directory/downloader/Maged/Pear.php, around line 123):
    $config->set('http_proxy', 'http://proxy:3128/');
    

    (thanks to http://www.magentocommerce.com/boards/viewthread/29354/)

  • step 5.2: you may need to append /index.php/api/xmlrpc/ instead of just /api/xmlrpc/
Qwaygon’s picture

Thanks for those notes, i'll add them to this guide, but i have working local drupal+magento and have http://magento.localhost.com/magento/magento/api/xmlrpc/ as magento's xmlrpc address, so i believe your case connected to your local settings, actually a i have many of them and all are follow same rule - added /api/xmlrpc/ with no index.php

gfxguru’s picture

I've actually thought about downgrading my magento version to try this out but Drupal 7 looks awesome too. Any plans on migration to D7 and Mage1.401 anytime soon? Serious headaches with moving from 1.3. to 1.4, just a little weary.

wireyourworld’s picture

well I finally did get it installed, and then had immediate problems setting up a root category in Magento, the thing wouldn't save it saying that this user didn't have permission or some such nonsense though I set up permissions as stated in these instructions. I went to check and totally locked myself out. Even with help from magento forums I could not get back in under any name. Well I got back in, but only to an ACCESS DENIED screen. I ended up deleting magento and trying ubercart. Someone did say I need to clear my var, but having no idea what that meant, how to do it and having already moved on, I did not try that. Now ubercart is having its own unique problems, my product descriptions can only be seen by me, not by anonymous users, Imagecache takes all my photos out of product listings when I change sizes, etc etc etc. VERY buggy. And no one seems to frequent the ubercart forums very much. I'm very frustrated right now. Thinking maybe I should go back and take a look at joomla and carts for them.

alit’s picture

I've installed and configured both systems and their extensions. Taxonomy and catalog seem synchronized correctly. But when I'm trying to create a new Drupal user, I'm getting the following error:

Could not get state name because the remote site gave an error: Server error. Requested method magento_api.customerSaveEventHandler not specified. (1).

Trying to create new customer from Magento side, I'm getting the same error:
Server error. Requested method magento_api.customerSaveEventHandler not specified.

I can't find the service called "customerSaveEventHandler" both on /admin/build/services page and and it's definition in "Magento API" module (and it's extensions code), though other methods like magento_api.productSaveEventHandler are there.

Does anyone have an idea of what direction I should discover to solve it?

Also I have a question for those lucky who got it working: does Magento user become authenticated once corresponding Drupal user logged in?

Upd: Well, I found the problem. The 1.4 version's .tar.gz seems contain old files from 1.3. version. Both releases are exactly 47.81 KB. Solved by downloading files from SVN.

samsouk’s picture

I have the same issue
Could you please point me to the svn ?

scott_lee’s picture

i also found this problem, and I downloaded the correct version from svn, but the error messege is still appear.

fonant’s picture

Agree, the tar bundle is incomplete, it's missing some XMLRPC functions.

We seem to be up and running by checking out the latest version:

cd drupal/sites/all/modules
cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib checkout -d magento -r HEAD contributions/modules/magento/

http://www.fonant.com - Fonant Ltd - Quality websites

sjoerdsdrupal’s picture

Hello I have followed the steps till Magento Connect, the following error occurs:

>>>>Error: Please check for sufficient write file permissions

Your Magento folder does not have sufficient write permissions, which this web based downloader requires.

If you wish to proceed downloading Magento packages online, please set all Magento folders to have writable permission for the web server user (example: apache) and press the "Refresh" button to try again.

<<<<<<<<<<<

I have put the files mage/var/.htaccess, the directories mage/app/etc, mage/var, and all (!) the directories under mage/media on 777.

But it still doesn't work. I have installed Magento with Direct Admin Installatron.

Does Anyone know what I do wrong?

thanks!

Sjoerd

Josephnewyork’s picture

It seems to me that the files uploaded are owned by the apache user, which is the user that created them...

If the apache user doesn't have permissions it can altar the files.

Seems that all ownership that are apache need to be changed via CL.

gfxguru’s picture

Was able to get it to work with Drupal6 and Magento 1.4.1.1. Getting error "Could not get state name because the remote site gave an error: Server error. Requested method magento_api.customerSaveEventHandler not specified. (1)." Trying to create user in drupal. Can connect and sync catalog and products although I don't see the use. I think magento does a fine job with products. We just need to sync customers from magento into drupal and users "authenticated" with customers in magento.

gfxguru’s picture

Is this project dead? That I would hate to see. So much potential if we could get this to work with latest Magento. I can't figure out why a user is not created in Drupal during the event fired from Magento. I had to disable it because it breaks the checkout. I'm believe it's when the actual user is created.
Does anyone have a clue?

glueck-medien’s picture

Hi,

thank you for this great module.
I have one problem and think that it is not a bug but a false configuration by myself... Can anyone help?

-> My Products are synchronized, and are in stock, in magento i can add the products to the cart, but in Drupal i cannot. The "Add to cart" text shows, but isn't a link.

Thanx for your help in advance.

vivdrupal’s picture

Trying to install the module on Wamp.
After following all the steps without error, when pressing synchronize buttons, am getting the following error -

'Could not get state name because the remote site gave an error: Access denied. (2).'

Have checked the user and password for the 'webservice' as also for Remote XML-RPC user.

Thankful for any help.

Summit’s picture

Wouldn't it be great if there was a install profile with all these settings?
greetings, Martijn

gfxguru’s picture

Yes it would be great if we had an install profile. Also would be great to know if anyone has figured out how to get this to work with Latest Magento 1.4.1.1.; Quite a few bug fixes since 1.3.2 and I don't feel safe going back.

joe.davila@gmail.com’s picture

When I go to add the new 'webservice' user to Magento there are two required fields "API Key" and "API Key Confirmation". Where do I get the key to put into those fields? This is from step 3.3 in the instructions here. Any help is appreciated.

mmironenko’s picture

"API Key" is just another name of password here. Just type your custom pass phrase and retype it in confirmation field. Also, this pass phrase will be needed on step 5.2.

msl.diarra’s picture

Salute,

Here's my configuration
Magento 1.3.2.4 / drupal extension 1.3.2
Drupal 1.6 / magento module 1.3

I've got no error message.
I can import the product from magento except images.

As anyone had this issue before.

Thanks for any help...

M.

koriley’s picture

I have followed these instructions and double checked myself.

I have a fresh install of Drupal and Magento on a server.
I started with 6.x-1.4 => 1.3.4 had these problems
1. my quantity in my cart was always blank
2. the price in the cart was 0.00 even though the total showed the correct amount
3. after putting in my address I would get this error: "There was some error during getting information from Magento"

I switched to 6.x-1.3 => 1.3.2
everything works except for when I type my billing and ship to address, I still get the error: "There was some error during getting information from Magento"

I had no problem syncing the two systems, I got no errors when installing. Everything up to the point of checking out worked like a dream.

googling the issue, I see others have had this issue too, but the problems seemed so long ago, they either were fixed and nobody posted a solution, or they chose to use another system. I can not use another system, so I am hoping that there is a fix!

Please somebody help me, thanks
koriley

koriley’s picture

I got past this problem by creating a new user in drupal, when I did this that user appeared in the magento user data base, this is good; the problem now is that the users I have in magento are not recognized by drupal. Is there a way to import my magento users into drupal?

koriley’s picture

1. If you add your product to your cart and then go to check out, you do not see the quantity in the quantity block, then the only fix I have found is to down grade to the last version, make sure you down grade both the Magento to Drupal and the Drupal to Magento. (this is not the main Magento or Drupal engine, just the modules)

2. When you are trying to check out and you are at the enter address section and you get the error, "There was some error during getting information from Magento" Then try making an account in Drupal and checking out again. It seems that you MUST make the account in Drupal, as the accounts in Magento are not seen on the Drupal side, but when you make the accounts in Drupal, they are ported over to Magento.

3. You must make your product in Magento, Drupal will see everything except the image, you then must edit the product in Drupal to add an image. I have not been able to add a product into Drupal and it go to the Magento side, so, so far I have to do it this way.

4. You have made it to the select payment part finally and when you select any type of payment other than the middle one and you get the error "There was some error during getting information from Magento", my guess is that you have to set up the payment options in Magento. I will edit this when I get that info from my clients.

I am pretty sure that this is not the intended fixes for these problems, but I have followed these instructions 3 times now on 3 installs, and this is the only way I have been able to get these issues working.

I'm not sure if this project is alive or not, there seems to be very little chatter for it.
So to you all attempting this, good luck!

Anonymous’s picture

Hi there

I would like to use the backend of magento with drupal. I have successfuly installed magento to www.mysite.com/magento. I am trying to install the drupal extension from Magento Connect but I get the error "community/Drupal: Invalid response headers returned from server". Is this due to magento being in a subfolder? in which case is there some config changes I need to make to magento. Cheers!

yash_kothari’s picture

I am getting very low performance in importing products from Magento to Drupal.
I will have more than 5,00,000 Products in future.
Will this magento drupal integration work for me?

Can any one let me know, how the orders and will go from Drupal to Magento?
I am getting 404 error in magento side while I am click on "Test Button" of Drupal Integration module in magento admin.

I am using magento 1.10.1.1 Enterprise, Drupal 6.26.

Summit’s picture

Hi,
I think Drupal Commerce is maturing so much the latest months that moving to drupal commerce is a much better solution.
With drupal commerce you can use commerce feeds to import your products!

greetings, Martijn

twistedindustries’s picture

I am having trouble with the install. I used all of the recommended moduels (Services 6.015) but I used the newest Drupal 6 and Magento 1.7.0.2.

I am at the API setup part in Drupal and I get a connection error that says: Calling parameters do not match signature

Can someone help me figure out whats up?