Sector(s)
Our now regular client (see the MLSE: TFC Insider, MLSE: Leafs Nation and MLSE: Raptors Insider projects), Maple Leafs Sports & Entertainment, wanted to add a new kind of experience to the set of exceptional sports fan experiences that they were already providing:
A bidding experience ...
Fans would bid on various items and valuables presented to them in a dedicated area.
In short, what the MLSE assigned us to build was an Auctions section for their whole “ecosystem” of Drupal instances.
One to be configured and delivered as a module pack of specific features and bidding functionalities — auction bidder notifications, easy credit card registration, easy payment and shipping.
A package that could be easily “plugged into” the various Drupal sites and apps forming the MLSE environment.
About the project
Our client's requirements could get easily summed up to the following:
A whole new auction section
We were expected to set up a new auctions area for MLSE, where various valuables and items would get displayed for the registered sports fans to bid on.
Project-Specific Bidding Features
The requested features were the standard ones on auction websites:
- the bidders should be able to register credit card profiles
- … to place their bids using the same profiles repeatedly
- real-time updates to bidders: SMS notifications on any activity on the auctions that they participate in (bid won, new bid on a previously bid item, outbid notification etc.)
- winning bidders should get automatically charged
- quick shipment of the bought items to the physical addresses indicated in their bidders' profiles
An easy-to-deploy module package
All the newly created features had to be bundled up in a module package that was expected to be easily installed and deployed on MLSE's multiple Drupal 7 instances.
Special Requirements & Custom Work
First of all, there were 2 main integrations that we had to consider for this MLSE-Auctions project:
- the Drupal Commerce bundle
- the Drupal Commerce Auction contributed module
Next, we had to do some custom work in order to implement those specific features and functionality requested by our client:
- build a custom Commerce payment module that was due to add credit card online payment integration leveraging a 3rd party API: Bambora
- … one that would integrate “Card on File” module functionality, as well; users would then be able to save and store credit card data using a TD gateway profile on a PCI compliant server
- automate the creation of orders for winning bidders: sorting the won items into individual orders, registering the transactions using the card profile, notifying the bidder on the user order via email, issuing digital invoices ...
- add a custom pop-up form to the bidding system, that would enable bidders to use async request to update their profiles - address and card profiles
- … one that would enable users to inline edit their profile pages
Biggest Challenges & Solutions
Automated bidding was one of the top challenges we faced.
The solution we found?
We extended the Commerce Auction module's functionality to include an automatic bids algorithm.
One that would enable automated bidding sessions: users get to set a maximum bid amount on their auto bid and the auctions system places a bid on their behalf automatically, once their bids get outbid.
In an autobid scenario involving multiple bidders, it's the bidder with the maximum limit that wins. The bid then gets automatically reflected in the bid system, in connection with both manual and auto bids.
How did we tackle the “multiple players” challenge?
We set up the logic behind to use an FCFS mechanism for negotiating autobids. The system would then negotiate winning bids automatically, based on the different autobids conditions defined by multiple bidders simultaneously.
Why Drupal was chosen
Because the main MLSE website was already built on Drupal — on Drupal 7, more precisely.
Furthermore, we were expected to deliver the newly built Auction features in a module pack. One that would complement the already existing MLSE “cluster” of Drupal products and be easily deployed and installed on all of them, with minimal configuration.
In conclusion, Drupal 7 was preserved as the unifying underlying technology.
Technical Specifications
Drupal version:
Key modules/theme/distribution used:
Commerce: by using the popular Drupal 7 commerce bundle we were able to easily add all the major generic commerce elements — Products, Carts, Orders, Payments — as well as the processes and rules workflow related to them.
Commerce Addressbook: we've used it for storing and referencing user address book entries inside their customer profiles, which were further extended by our customer profile forms on the popup form.
Commerce Card On File: we've used it for integrating with the PCI compliant TD gateway, extended by our custom module to allow saving and edit operations on user credit card profiles and using them in the custom popup forms for bid and auto bid forms.
Commerce Auction: we've used it as the core logic behind the bidding functionality, which was further extended with the custom logic for bid negotiation and autobid mechanism inside the custom modules.
SMS Twilio: we've used it for auction event notifications via SMS - start/end times and integrated it with custom bid functionality: outbid, bid won, “payment failed” notification, order processing notifications.
Outcome
A Commerce package supporting all the auction features requested by our client, that can get installed, with minimal configuration, on any Drupal platform.
The pack includes:
- an auction product
- an auction item product display
- an auction content type with references to multiple auction items and several bidding configurations (e.g. minimum bid, minimum bid increment, starting price, autobid options, maximum bid price, autobid increment step)
- profile pages for Drupal users to handle both their Address profiles and Credit card profiles
- a custom payment method: Credit Card via TD gateway profiles and notification settings for SMS alerts