Experimental project

This is a sandbox project, which contains experimental code for developer use only.

Ubercart Patron consists of a set of modules providing the following:

Ubercart Product field

The ability to have a 'product' and 'payment' field available in an entityform. These fields are based on the field API which could potentially be used in any field API based entity structure (for exmaple a Node field).

The product field will allow a user to not only add products as a field into an entityform (with selectable/custom display modes) but also bind recurring payment rules.

You can attach an Ubercart store enabled payment method to the entityform and optionally map existing entityform fields to the Ubercart checkout address for generated order information.

Ubercart 'shortcut' payment system

Attach an Ubercart purchase action on an entityform and redirect straight to a payment gateway (currently only DPS). This prevents the need to pass through the orthodox Ubercart checkout process.

Recurring payments

Provides options for recurring payments and management for orders containing values in 'recurring_payment_time_unit' and 'recurring_payment_time_frequency' under product data.

Ubercart DPS

DPS Payment supporting the newer PxPay 2.0 API and based on some of the work from the Ubercart PaymentExpress module.

How to use:

Example 1: Setting up a donation payment form

--------------------------------------------------------------------------------
(You may want to enable Entityforms Block to be able to expose your form in a block)

  1. Enable all the required modules
  2. Go to admin/store/orders/ubercart-product-field-config to generate a 'donation' attribute
  3. Configure your Ubercart Store admin/store/settings/store. At the very least you need to 'save configuration' on the 'Countries and addresses' page located at admin/store/settings/countries/fields
  4. Enable DPS payment admin/store/settings/payment and update the settings.
    Note: You'll need to obtain the DPS URL and PX Access User Id from DPS (https://www.paymentexpress.com). If you also require recurring payments then additionally ask DPS for your PX POST Access url, PX POST Access User Id and PX POST Access Key
  5. Add a “Product” node titled appropriately for your case.
    • In the "Product Information" tab enter a mandatory Product SKU and disable the "Product is shippable" check box
    • Save (or Save and continue) the node and in the "Attributes" button top right of the page add the generated attributes from step 2.
    • Enable / tune related options from “Options” tab.
    • Enter your alternate SKU codes via the "Adjustments” button. Important: if you don't make changes here your options won't show up.
  6. Add a new "entityform type" at admin/structure/entityform_types.
    • Set up roles permission based on your requirements
    • Assuming you have enabled the "Entityforms Block" module you will have an option under “Entity block settings” to create a block from this form.
    • Once saved, add a new “Ubercart Donate Product” field
      • Choose the "Product" node created in step 4. as the "Allowed Product"
      • Leave “Allowed Display” as "none" unless you have special display/view mode requirements.
      • Uncheck “Allowed none option” if your selection is a compulsory field.
      • If you want to allow recurring payments, check the “Product allowed recurring payment?” box and you will be presented with more options. Note that "Payment time unit" has to be an integer value and at least one frequency value has to be selected.
    • Add an Email field and make it required. (https://www.drupal.org/project/email is recommended)
    • Add an “Ubercart Payment” field.
      • Select “DPS” as a "Payment method" and "Allowed Payments"
      • Do the mapping between the custom entityform fields and Ubercart address fields. Retain the default option if you have no related entity form fields.
      • Choose the previously added email field for “Field from the entity form that used to generate a new user if none login and no matched mail address”.
  7. If you'd like your form rendered in a block then create a separate node and assign the entity form block to that node path via the normal block interface
  8. Visit admin/store/orders/recurring-payment-config to config how many recurring orders can be processed in each cron run.
  9. Visit admin/store/orders/remove-recurring-payment to manage the recurring payment orders

Some other examples:
--------------------------------------------------------------------------------
1)“Ubercart Product - Without Attributes” field: Fill in all required value.
“Allowed Qty Options” will allowed user choose quantity of product from purchase
form. Set up quantity select field is same as standard drupal selection field.
For example: 0|None or 1|1.

2)Ubercart Product: Same as 1) without quantity setting.

3)Ubercart Dynamic Product - Without Attributes: Allowed user set up dynamic product
field on which product loaded via pre defined logic. For now it is based on
current entity form attached node (more logic and hook on development and for
developer use only)

4)“Assign node info to product” option allowed user define int position which used
as pass in var in arg() to load related node. The loaded node info then saved
into the product data section of the purchased order and can be checked / displayed
when load the order later on. This is normally used for node view / publish
permission purchase. For example, created a product “node publish for 30 days for
$50 “ and assign it to a node purchase form (developer use only function and more
easy config hook and function will come later)

Supporting organizations: 

Project information