Documentation

Lerteco Membership Documentation

Quickstart (TL;DR)

Note that if you're testing on localhost (or anything that can't receive web requests from the internet), you'll need to use Authorize.net or configure Paypal PDT.

  1. Install add-on
  2. Set up Membership Maintainer job to run daily
  3. From configuration dashboard, enter, at the least, your Paypal account email address
  4. Create a new product, specifying, at the least, a name, price, and group
  5. Create a link to the page /Membership Products/[Product Name] from anywhere on your site that can link to a c5 page (such as from a block).
  6. Follow the link. For testing purposes, you might want to go back and make the product price really low -- $0.25 works nicely.
  7. See that you've been added to the appropriate group, and verify the transaction details in the dashboard.

Full Documentation

  1. Installation - First-time configuration, including payment processors
  2. Product Setup - Setting up membership products
  3. Site - Allowing users to purchase products from the front-end
  4. Reporting - Transaction reporting dashboard
  5. Advanced Topics - Advanced topics

Installation

Planning and Pre-Setup

  1. Consider what content you want to offer, and how you’ll make that available through concrete5’s groups. Remember that purchasing a product can place a user into more than one group; this might be able to help you better “model” the way your site will work.
  2. Set up the necessary groups through your dashboard.
  3. Create a paypal or authorize.net account, if you don’t already have one.
  4. Install the add-on through your dashboard.

Installation & Configuration

  1. Configure the Membership Maintainer job to run daily.
  2. Go to the configuration dashboard to set your global and payment options.

Global Preferences

  1. Payment Processor - Currently paypal and authorize.net are available, and there's a plugin infrastructure to easily create new payment processors (just send me an email).

  2. Default Currency - The currency can be specified later, per-product, but this defines default. Note that your payment processor must support this currency.

  3. Allow Only Logged-in Users - Select to prevent non-registered or non-logged-in (ie, anonymous) users from purchasing products. If an anonymous user attempts to follow a link to purchase a product, they’ll be redirected to the login page.

    Membership Commerce “matches” users by:

    1. If the user is logged-in when they follow the link the purchase will be credited appropriately. (In the case of paypal, a token with their user ID is sent and returned.)
    2. If a person has a c5 account with the same email address provided, then that user account will be credited with the purchase.
    3. If the email address cannot be found, a new user account is created and credited with the purchase.

    Without this checkbox selected, a existing c5 user may a) make a purchase without being logged in, and b) provide an email address other than the one on their account, and that the add-on will create a second account for this user.

  4. Default Success Page - The default page which the user will be sent to after a successful transaction. This can be overridden by each product and, if not provided, users will be redirected to the home page.

    Note that Paypal doesn’t immediately redirect users, but might make them go through several screens.

    Note that if you’ve enabled auto-return (or PDT), Paypal terms require you to add a confirmation message to the return page (see site setup).

  5. Default Cancel Page - The default page which the user will be sent to after a cancelled transaction. This can be overriddden by each product and, if not provided, users will be redirected back to the page that they came from.

  6. Send Email With User Info - If a user account is created (see Allow Only Logged-in Users), a random password will be assigned and an email will, by default, be sent to the user with their username and password. Uncheck this box to prevent the email from being sent. This would only typically be used if you don't want people to be able to log in.

  7. Send Email With Receipt - After each successful transaction, an invoice email will automatically be sent to the user. Uncheck this box to prevent this email from being sent. This would typically be useful if your payment processor sends the receipt directly.

Payment Processors

Paypal

  1. Account Email Address - You must enter your Paypal email address.

  2. PDT Token - Membership Commerce supports two ways to receive purchase information from Paypal: Instant Payment Notification (IPN), which is sent from Paypal’s server to your server (“behind-the-scenes”), and is always enabled, and Payment Data Transfer (PDT), which is sent along with the client as part of the redirect. IPN is generally more reliable but is sometimes delayed, whereas PDT will, by definition, arrive at as soon as the client is returned back to your site. When you’re selling access to a page, you probably don’t want to have to show a message that says, “We’re processing your purchase... check again in five minutes”, and PDT provides that instantaneous confirmation. To enable, PDT, follow these steps:

    1. Log in to your PayPal account and go to your "My Account" page.
    2. Hover over the Profile subtab and click "My Selling Tools" (at the bottom of the dropdown).
    3. Click "Update" next to "Website Preferences" in the "Selling Online" section.
    4. Under Auto Return for Website Payments, click the On radio button.
    5. For the Return URL, enter the primary URL of your site. This will be overridden for each transaction.
    6. Under Payment Data Transfer, click the On radio button.
    7. Click Save.
    8. Copy the token from the confirmation message and paste it into the “PDT Token” on the Configuration page.
  3. Use Sandbox - Select to use the Paypal sandbox. You must sign up for a (free) sandbox account with Paypal. This is not supported. See “Testing” for more information.

Authorize.net

  1. API Login ID & Transaction Key - Will be provided to you when you create your authorize.net account.

  2. Use Sandbox - Select to send transactions to the Authorize.net sandbox servers.

Product Setup

Create and edit products as appropriate by going to the products page clicking the “New Product” button or choosing an existing product, filling out the following fields, and then clicking “Save”.

  1. Name - The name of the product which will be shown to the user on the checkout page and in your transaction reports. This is also the name of the page that will be created for redirect purposes (see Site Setup).

  2. Key - Not currently used outside of product setup, but may be used in the future for reporting and exporting purposes and to otherwise identify a particular product. This can be blank or a duplicate.

  3. Description - Shown on the checkout page (not supported by Paypal) and added as the description metadata to the page object for displaying to users as part of a page list block.

  4. Price - The price (including currency), to be charged for the product. It should be numeric (decimal place as appropriate, no separators). The currency must be supported by the configured payment processor (including any bank account setup that the processor may require).

  5. Groups - One or more groups that the user should be placed into upon a successful transaction.

  6. Duration - The duration of the user’s membership in the group(s) after a successful transaction:

    1. Permanent - The user will remain in the group(s) permanently
    2. Defined - The user will be removed from the group(s) after a fixed period of time (a number of days, weeks, months, or years)
    3. End Date - The user will remain in the group(s) until a specific end date (e.g., Dec 31st, 2014)
  7. Warning and Expiration Emails - Sends an email to the user a configurable number of days before the product expires and after the expiration. If the number of days is blank or 0 then only the post-expiration email will be sent

  8. Success Page - The page which the user will be sent to after a successful transaction. This overrides the page set in Configuration; see that section for more information.

  9. Cancel Page - The page which the user will be sent to after a canceled transaction. This overrides the page set in Configuration; see that section for more information.

  10. Direct URL - After a product has been created, the direct URL will be availalbe. You can provide this link to users, but it's much better to use concrete5's page link functionality (like from within a content block).

Site Setup

Linking to Products

You should first understand that membership “products” are displayed and linked to in a different way than traditional products. There is no product listing page or shopping cart to link to. This provides a lot of flexibility -- you might want to create a “join now” link as part of a paragraph (content block), or as the linked image (image block).

Every product created through the dashboard has an associated page created underneath the “Membership Products” page (/membership-products) within your [sitemap](/index.php/dashboard/sitemap/full/. Just create a link to this page (through the standard concrete5 interface) and when a user follows the link they’ll be redirected to the appropriate checkout page (e.g., Paypal or a checkout page on your site). You can do this with most any block, such as Content, Image, Pagelist, a slider, or the “thank you” page of a form submission.

Note that this allows you to show your, e.g., “Join Now” buttons to only those users that aren’t members -- just put the link into a block, enable Advanced Permissions, and exclude that block from users already in the group.

You should add the “Membership Confirmation Message” block to the top of each “Success” page (or within a Global Area). The block will show a configurable message afer a successful transaction.

For Paypal, If you’ve enabled “auto-return” (or PDT, which requires auto-return), Paypal requires that you show a confirmation message to “help the buyer understand that the payment has been made and that the transaction has been completed”.

Checkout Page

After going to a product link, the user will be redirected to the appropriate checkout page depending on your payment processor (e.g., Paypal or an on-site page).

Configuration of off-site checkout pages (e.g., Paypal) can often by done through your dashboard with that particular payment processor.

The on-site page is simply a standard concrete5 single page. It uses HTML which you can easily style and includes two area ("Checkout Intro" and "Checkout Outro") which you can add blocks to after entering edit mode.

Reporting

You can view all successful transactions by going to Transactions page underneath Membership in your dashboard. Click the column title to sort by any column. The Search input will live-search all columns, and the Date inputs will allow you to specify a date range.

Advanced Topics

Testing

Paypal’s sandbox sucks; it’s difficult to setup and use and sometimes things don’t work that would in a live environment. You can configure Membership Commerce to use the sandbox for testing, but you really shouldn’t, and it’s not supported.

Instead, you should simply change your product prices to a low amount, such as $0.25.

Note that Instant Payment Notification will not work if you’re testing on a server not accessible from the web but Payment Data Transfer, if enabled, should.

On usernames and full-names, and addresses

Concrete5 doesn’t officially support personal names out of the box, and there is no standard for this. Membership Commerce will support personal names if there are attributes with handles of first_name and last_name. Support includes:

  • Providing the information to Paypal if the user is logged in so that Paypal will auto-fill the form (email address is provided regardless)
  • Setting the first_name and last_name attributes when a user account is automatically created
  • Displaying the full name (instead of the username) in the transaction report

Similary, the add-on supports the user of an address attribute named address. If that attribute exists, it will be set to the address that the user enters during checkout.