Skip to main content

A Tutor plugin for Open edX E-Commerce

Project description

This is a plugin for Tutor that integrates the E-Commerce application in an Open edX platform.

Installation

This plugin requires tutor>=12.0.0, the Discovery plugin and the MFE plugin. If you have installed Tutor by downloading the pre-compiled binary, then both plugins should be automatically installed. You can confirm by running:

tutor plugins list

But if you have installed tutor from source, then you also need to install the plugin from source:

pip install tutor-ecommerce

Then, in any case you need to enable the plugins:

tutor plugins enable discovery ecommerce mfe

Services will have to be re-configured and restarted, so you are probably better off just running quickstart again:

tutor local quickstart

Note that this plugins is compatible with Kubernetes integration. When deploying to a Kubernetes cluster, run instead:

tutor k8s quickstart

For further instructions on how to setup E-Commerce with Open edX, check the official E-Commerce documentation.

Operations

Creating a user

The ecommerce user interface will be available at http://ecommerce.local.overhang.io for a local instance, and at ECOMMERCE_HOST (by default: http(s)://ecommerce.<yours lms host>) in production. In order to run commands from the UI, a user with admin rights must be created. There are two ways to proceed. To create a brand new user in E-Commerce which will not exist in the LMS, run:

tutor local run ecommerce ./manage.py createsuperuser

Then login with this new user at: http://ecommerce.local.overhang.io/admin/

To re-use an existing LMS user, first go to http://ecommerce.local.overhang.io/login. You should be redirected to the LMS login page, then to the dashboard. Then this user must be made a staff/superuser in E-Commerce:

tutor local run ecommerce ./manage.py shell -c "from django.contrib.auth import get_user_model; get_user_model().objects.filter(email='USER@EMAIL.COM').update(is_staff=True, is_superuser=True)"

Make sure to replace USER@EMAIL.COM by the actual user email address. You should then be able to view the Oscar dashboard at http://ecommerce.local.overhang.io.

Configuration

  • ECOMMERCE_HOST (default: "ecommerce.{{ LMS_HOST }}")

  • ECOMMERCE_PAYMENT_PROCESSORS (default: {cybersource: {...}, paypal: {...}} See below for details.)

  • ECOMMERCE_ENABLE_IDENTITY_VERIFICATION: (default: True)

  • ECOMMERCE_ENABLED_PAYMENT_PROCESSORS: (default: ["cybersource", "paypal"])

  • ECOMMERCE_ENABLED_CLIENT_SIDE_PAYMENT_PROCESSORS (default: ["cybersource"])

  • ECOMMERCE_EXTRA_PAYMENT_PROCESSOR_CLASSES (default: [])

  • ECOMMERCE_MYSQL_PASSWORD: "{{ 8|random_string }}")

  • ECOMMERCE_SECRET_KEY (default: "{{ 20|random_string }}")

  • ECOMMERCE_OAUTH2_SECRET (default: "{{ 8|random_string }}")

  • ECOMMERCE_API_KEY (default: "{{ 20|random_string }}")

  • ECOMMERCE_DOCKER_IMAGE (default: "{{ DOCKER_REGISTRY }}overhangio/openedx-ecommerce:{{ TUTOR_VERSION }}")

  • ECOMMERCE_WORKER_DOCKER_IMAGE (default: "{{ DOCKER_REGISTRY }}overhangio/openedx-ecommerce-worker:{{ TUTOR_VERSION }}")

  • ECOMMERCE_MYSQL_DATABASE (default: "ecommerce")

  • ECOMMERCE_MYSQL_USERNAME (default: "ecommerce")

  • ECOMMERCE_CURRENCY (default: "USD")

  • ECOMMERCE_OAUTH2_KEY (default: "ecommerce")

  • ECOMMERCE_API_TIMEOUT (default: 5)

  • ECOMMERCE_WORKER_JWT_ISSUER (default: "ecommerce-worker")

  • ECOMMERCE_EXTRA_PIP_REQUIREMENTS (default: [])

You will need to modify the ECOMMERCE_PAYMENT_PROCESSORS parameter to configure your payment providers credentials. By default, it is equal to:

cybersource:
  access_key: SET-ME-PLEASE
  cancel_checkout_path: /checkout/cancel-checkout/
  merchant_id: SET-ME-PLEASE
  payment_page_url: https://testsecureacceptance.cybersource.com/pay
  profile_id: SET-ME-PLEASE
  receipt_page_url: /checkout/receipt/
  secret_key: SET-ME-PLEASE
  send_level_2_3_details: true
  soap_api_url: https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.140.wsdl
  sop_access_key: SET-ME-PLEASE
  sop_payment_page_url: https://testsecureacceptance.cybersource.com/silent/pay
  sop_profile_id: SET-ME-PLEASE
  sop_secret_key: SET-ME-PLEASE
  transaction_key: SET-ME-PLEASE
paypal:
  cancel_checkout_path: /checkout/cancel-checkout/
  client_id: SET-ME-PLEASE
  client_secret: SET-ME-PLEASE
  error_url: /checkout/error/
  mode: sandbox
  receipt_url: /checkout/receipt/

We suggest you modify this configuration, save it to ecommerce-config.yml and then load it with:

tutor config save --set "ECOMMERCE_PAYMENT_PROCESSORS=$(cat ecommerce-config.yml)"

Custom payment processors

⚠️ WARNING: as of Lilac (Tutor v12), Open edX no longer supports custom payment processors with E-Commerce. There is an ongoing conversation about how to resolve this issue which you can follow here.

Image customisation

E-Commerce implementations vary a lot from one country to another. If all you need are the Paypal, Cybersource and Stripe payment processors, then it should not be necessary to customize the tutor-ecommerce docker image, which contains the vanilla E-Commerce platform. However, if you need to run a fork of E-Commerce, or install extra requirements, then you should re-build the docker image. To do so, first set the appropriate settings:

tutor config save \
  --set 'ECOMMERCE_EXTRA_PIP_REQUIREMENTS=["git+https://github.com/myusername/myplugin"]'

Then, build the image, pointing to your fork if necessary:

tutor images build ecommerce \
  -a ECOMMERCE_REPOSITORY=https://github.com/myusername/ecommerce \
  -a ECOMMERCE_VERSION=my/tag

Development

When running Tutor in development mode, the ecommerce service is accessible at http://ecommerce.local.overhang.io:8130.

To mount a local ecommerce repository in the ecommerce container, add the following content to the $(tutor config printroot)/env/dev/docker-compose.override.yml file:

version: "3.7"
services:
  ecommerce:
    volumes:
      - /absolute/path/to/ecommerce:/openedx/ecommerce

You will have to generate static assets in your local repository:

tutor dev run ecommerce npm install
tutor dev run ecommerce ./node_modules/.bin/bower install --allow-root
tutor dev run ecommerce python3 manage.py update_assets --skip-collect

To attach a debugger to the ecommerce service, run:

tutor dev runserver ecommerce

Funding

E-ducation

This plugin was developed and open sourced to the community thanks to the generous support of E-ducation. Thank you!

License

This work is licensed under the terms of the GNU Affero General Public License (AGPL).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tutor-ecommerce-12.0.4.tar.gz (12.5 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page