Behavior, Content, Money – 3 Things you should never give away for free!!!

BCmoney MobileTV

E-Commerce Shopping Cart in JavaScript and PHP

Posted by bcmoney on May 18, 2015 in E-Commerce, JavaScript, PHP with No Comments


No Gravatar
English: Jewel-Osco - monster shopping cart truck

English: Jewel-Osco – monster shopping cart truck (Photo credit: Wikipedia)

In E-Commerce, a “frictionless experience” is often described as the ultimate design goal when it comes to the consumer’s purchasing experience. An easy-to-use, robust shopping cart solution that can easily have any number of diverse types of items added to it, calculate shipping & handling, taxes and any other additional fees (where such apply), provides transparency and immediacy to the customer’s purchase decision. Doing this well can mean the difference between huge sales numbers and lackluster or disappointing sales figures.

Boiling all the Shopping Cart solutions out there to the most common, key functions we should expect a solution to support are:

  • Add/Remove items
  • Tabulate itemized sub-total
  • Calculate shipping & handling
  • Calculate taxes & fees
  • Tabulate total
  • Remember History for later purchase completion
  • Purchase/Checkout confirmation process

Other nice-to-have features that begin to move away from basic “Cart” functionality and into holistic E-Commerce platforms, include:

  • Multi-Address memory (billing, shipping… home, work, summer, etc)
  • Multi-Currency support (switch currency at any time)
  • Multi-Lingual support (switch languages at any time, i18n)
  • Multi-Layout support (switch look & feel at any time, l10n)
  • Storefront & “canned store templates”
  • Layout drag&drop/point-click customization (as per SquareSpace, Wix, etc)
  • Auto-fill forms (with customers’ stored Address info)
  • Auto-billing (subscriptions/recurring payments)
  • Notification options for receipt (Email, SMS, Phone notification, etc… in addition to on-screen)
  • International Shipment Tracking (parcel status check)
  • Returns processing
  • 3rd party payment support options (CreditCard, Interac eTransfer via Moneris/PaySafe, PayPal, 2checkout, etc)
  • PCI & PA-DSS compliance (possibly by payment gateway deferral for sensitive data)
  • Item import/export
  • Ratings (star, thumbs up/down, etc)
  • Reviews (public or private textual customer feedback)
  • Search
  • Wish List curation
  • Product/Service Recommendations
  • Discounts (coupons, limited-time offers, affiliate codes, etc)
  • Promotions (buy X get Y, welcome emails, inactive account enticements, etc)
  • Loyalty Program (points, rewards, etc)
  • Tracking company/brand affinity & engagement
  • Inventory Management (real-time RFID, NFC, etc)
  • Supply-Chain Management (SCM)
  • Customer Relationship Management (CRM)
  • Advertising platform integration
  • Analytics platform integration
  • Social Media platform integration

There are tons more possible features but those two lists capture the main ones. Having defined a Shopping Cart and our expectations of its basic capabilities, the remainder of this post will summarize how to roll your own super simple yet intuitive E-Commerce Shopping Cart in JavaScript and PHP that gets out of the customer’s way as much as possible, focusing on the first key set of options only; it will also include thoughts on how the base functionality could easily be expanded out to include some or all of the nice-to-haves of a full-fledged E-Commerce platform.
Read the rest of this entry »

Working with LimeSurvey’s RemoteControl2 JSON-RPC API in PHP

Posted by bcmoney on April 17, 2014 in Cloud Computing, JavaScript, Mobile, PHP, Semantic Web with 2 Comments


No Gravatar
Hideous LimeSurvey shirt

Hideous LimeSurvey shirt (Photo credit: juhansonin)

Recently, I needed to switch away from SurveyMonkey, which, while still a useful free service for quickly collecting some basic Survey results, leaves much to be desired in terms of what they offer in their basic version. Of course the fully paid versions offer significantly more functionality, but the upper-end of the pricing schemes that do everything I needed are just way out of my price range for small individually-funded and/or non-budget independent projects.

This lead me to LimeSurvey (formerly PHPsurveyor), the leading open source web-based Survey data collection software, with a back-end written entirely in PHP.

Getting LimeSurvey installed on my own server was incredibly easy, just download the latest release version and upload the files via FTP. Then load the installation script and it will guide you through the remaining install steps (which are basically just setting a username/password for the administrator account, as well as database configurations such as connection info, table naming, etc). Pretty standard fare for a long-running open source PHP project with a solid development community in place.

What really set LimeSurvey apart from the alternatives though, was the extensibility offered by its API, dubbed RemoteControl2 (with support for both XML-RPC and JSON-RPC).

I had initially started out with XML-RPC since I’m kind of a nerdcore “semantics” guy, and favour XML over JSON for most server-side integration use cases (unless I’m publishing data for client-side consumption, then I almost always favour JSON). The reason, well there simply are way more tools and methodologies already in place for XML than JSON and the reliability mechanisms built into XML such as well-defined schemas (DTD/XSD) which provide data validation, namespsaces (ns) which prevent conflicts in name/value label namings and help ensure you get the right values when parsing, stylesheets (XSL/XSLT)  which allow for on-the-fly transformations, query languages (XPath and XQuery) which simplify data filtering and extraction tasks, and XML security mechanisms such as Digital Signatures which enable better security. However that’s all sure to start a debate on here.

The point is, I wanted to go XML-RPC, I really did! However I have to say, the simplicity of their JSON-RPC API which seems particularly well-implemented won me over.

So here’s what I made, a simple Survey response submission script that I call “limesurvey.collector.php“:
Read the rest of this entry »

HTML5 Radio Tuner (powered by ShoutCast API)

Posted by bcmoney on June 30, 2013 in AJAX, Multimedia, PHP, Web Services, XML with 1 Comment


No Gravatar
Pioneer radio tuner 70s

Pioneer radio tuner 70s (Photo credit: Barrie Sutcliffe)

Since I wrote about Skeumorphs last month, I thought I’d include this piece I had worked on. This is an older idea I had that I’d done the initial design for but forgot (ahem… procrastinated) to do the coding for back when I had the idea. The general concept was to replicate the look of an old-school needles and knobs analog radio.

I’ve always sought to bring more humanity to the online content experience. If we have to be forced to sit in an office or stare into a screen for most of our waking lives, just to be considered “modern and relevant” and have a chance to compete in this global marketplace, then the experience might as well feel natural and familiar to our interactions with the real world. It might as well be a pleasant co-existence with technology, rather than a mechanical, robotic, in-human and uncomfortable one.

So enough of that esoteric philosophy nonsense and on to the interesting stuff. The concept is that I missed the radio dial on my grandfather’s old analog radio. As a child, I used to play with the knobs and enjoy tuning into many different stations. It was a long-range radio so on a good day in my teenage years, I could even tune into the Howard Stern show broadcast from New York and some of the more edgy french stations from Quebec. Even my grandfather’s gone digital now though, so I figured the fond memory of this technology from the past might as well too.

There were 5 main components to this project:
Read the rest of this entry »

Parser for XMLTV format and SchedulesDirect data

Posted by bcmoney on September 25, 2011 in JavaScript, PHP, Web Services, XML with 2 Comments


No Gravatar
EPG

Image via Wikipedia

For a long time now, I’ve been a paying customer of SchedulesDirect, and by that token their parent company Zap2it (now a Tribune Media Services company).

Recently, I’ve started publishing my own personal Electronic Programming Guide (EPG) here on BCmoney MobileTV in an accessible format:
BC$ EPG

One of the secondary goals of my MobileTV project has always been to be able to provide all XMLTV users a venue to easily access and conveniently plan/schedule their TV viewing via the web, on a variety devices (i.e. mobiles/tablets/desktop computers).

Soon I’ll be adding in a User Management feature that allows you to signup for SchedulesDirect and synch your account through BC$, and most importantly, protect your EPG and viewing data by your username and password (this is required to meet the SchedulesDirect usage terms and privacy policy).

I found that GET requests are not supported so technically the Tribune Web Service must still be following the SOAP 1.1 not SOAP 1.2 standard which specifies both GET and POST are acceptable as long as the SOAP request enveloppe is passed via URL.
Since that is not supported, you have to use POST and it also has to have the BASIC authentication information included in the header in the exact pattern:
Read the rest of this entry »

Resurrecting the Google SOAP API

Posted by bcmoney on October 28, 2009 in AJAX, PHP, Web Services with 1 Comment


No Gravatar

Original Photo courtesy of Magicfantasy on Flickr: http://www.flickr.com/photos/manicfantasy/889984960/

I know what you’re thinking, Let Sleeping Corpses Lie right?

Well let me first start off by saying I am not a huge fan of SOAP or anything, in fact, I much prefer REST about 90% of the time. However, there are still some cases where a fully controllable SOAP API which simply lists results as XML wrapped in a SOAP envelope, is a better way of interacting with data; particularly when that data is updated less frequently and is larger in size. Seeing Google results as XML can make them easier to manipulate and exchange, oh and lets not forget, that XML is what the X in AJAX stands for anyway, though JSON is used interchangeably these days, if not more often. With the debate between the SOAP and RESTful crowd all but won by REST and its simplicity, lets go ahead and awake the sleeping dinosaur that is the Google Search SOAP API for experimentation’s sake. For a quick history lesson, in 2006 the headlines rang to the predictable tune of “Google Drops the SOAP“, which Google eventually responded to by effectively saying “move on” and former managers for Google’s SOAP APIs came out and explained Why SOAP sucks.

In choosing between web scrapping and using the new Search API, I’ve opted to go for the more advisable Search API approach. The wrapper code for the Google AJAX Search API was done in PHP, using a simple client/server implementation, and referring to an old archive of the SOAP API’s WSDL here:
http://bcmoney-mobiletv.com/widgets/google/GoogleSearch.wsdl (here’s a sample SOAP request)
Read the rest of this entry »

BC$ = Behavior, Content, Money

The goal of the BC$ project is to raise awareness and make changes with respect to the three pillars of information freedom - Behavior (pursuit of interests and passions), Content (sharing/exchanging ideas in various formats), Money (fairness and accessibility) - bringing to light the fact that:

1. We regularly hand over our browser histories, search histories and daily online activities to companies that want our money, or, to benefit from our use of their services with lucrative ad deals or sales of personal information.

2. We create and/or consume interesting content on their services, but we aren't adequately rewarded for our creative efforts or loyalty.

3. We pay money to be connected online (and possibly also over mobile), yet we lose both time and money by allowing companies to market to us with unsolicited advertisements, irrelevant product offers and unfairly structured service pricing plans.

  • Calendar

    • June 2022
      M T W T F S S
       12345
      6789101112
      13141516171819
      20212223242526
      27282930  
  • Archives