In the simplest checkout scenarios, three steps are required: pricing, payment and receipt.

Inspired by the many questions you should ask yourself before designing a checkout workflow, djaoapp contains the multiple steps to accommodate the most complex scenarios, with pages grouped into four blocks:

Add to cart

The shopping cart functionality works with both anonymous visitors and authenticated users. An anonymous visitor can interact with the redeem and pricing pages. The session for the anonymous visitor is stored in an HTTP cookie. That cookie is associated to an authenticated user after registration or login.

Redeem page


The redeem page is a potential entry point for the checkout workflow. If you want to give away discount codes that can be used before registration to customize the pricing page, this page is a great place to start. Otherwise you can directly send visitors to the pricing page.

Pricing page


The pricing page can be a simple <form> HTML tag that will POST the value of the plan selected, or it can be a complex shopping cart implemented through the Cart API.

Associate cart to a billing profile

A cart contains a set of plans an anonymous visitor or an authenticated user wishes a profile to subscribe to. Subscriptions are attached to organization or personal profiles. Before an order can be completed, a user must be authenticated and a billing profile attached to the cart of that user.

When used in the simplest business-to-customer (B2C) setup, an authenticated user and a billing profile are one and the same. The steps to choose (or create) a billing profile are skipped, the cart is automatically associated to the personal profile for the user, and the user is redirected to the payment information pages.

When used in a business-to-business (B2B) setup, djaoapp supports organization profiles where multiple users can have a role of profile manager for the organization. Similarly, a user can be a profile manager for multiple organizations. A user can also have the ability to create new organizations.

Checkout redirect page


Create profile page


Enter payment information

First, the payment page is a classic display of plans a profile subscribes to, the amount charged and the input form required to enter credit card information.

Before the payment page displays, an options page might appear to enable a user to pay multiple periods in advance at a discount. For the options page to appear, all you need to do is to set a positive value in the advance_discount field for a plan, either through the dashboard interface (Settings > Plans > plan name) or through the Plan Update API.

In professional certifications scenarios, the delivery of a Continuous Education Unit (CEU) will be assigned to a personal profile, yet the training will be paid for by the organization the person works for at the time. GroupBuy is perfect for those use cases.

Before the payment page displays and the options page appear, a GroupBuy page will enable one billing profile to pay for a subscription while another profile benefits from the subscription. The profile paying for the subscriptions can enable GroupBuy pages by clicking "Enable GroupBuy" in their profile page or through the Profile Update API.

Payment page


Payments can also be processed through the checkout API.

Discount options page


Group buy page


Complete the order

Once a successful charge is completed, a receipt page is displayed. A copy of the receipt is also automatically sent to the e-mail address on file for the billing profile. On the receipt page, a user has the ability to e-mail the receipt again, or download it as a PDF file.

The description of the charge items on a receipt are specially crafted so that clicking on the highlighted link will browse through to /app/{organization}/{plan}.

Receipt page


Receipt E-mail


An e-mail receipt can be re-sent to the user through the E-mail Charge Receipt API.

Receipt PDF