This component will manage a credits and billing system for later integration with [url removed, login to view] modules. It will be used to charge site users for their usage time. This project does not include integration of VideoWhisper modules: this will be done in a later project.
Component should be called VideoWhisper Credits and display as such in backend.
* Component will record these tables for later integration:
- balance table
credits = how many credits each user has
last transaction time
- transfers table
credits = negative/positive value modifier
comment = text
applied = if value modifier was applied
context = (varchar 255 ie. room name, admin name, account to withdraw where applies)
type = (internal known logic for processing/listing: ie index representing 1 = added by admin, 2 = payment, 3 = withdrawal, 4 = video consultation room usage, 5 = video conference room usage or other ...)
transfer start time = when transaction, ie. chat session started
transfer modified time = when transaction was last updated (ie will record last [url removed, login to view] call in later implementation)
transfer applied time = when transfer was applied to balance
* Frontent (for users):
+ A menu entry Balance to a page (view) showing current balance, transactions and buy credits.
+ A module that shows balance value and link to page mentioned above
+ Transactions (recent first) show paginated, 25/50/100 per page selector. Keyword search will be available to user to search for specific transaction based on comment, context.
+ Buy credits shows packages available to order (defined in backend).
+ Withdraw credits (for users that have this role).
If user's role has this permission, user has an request withdrawal link/button on balance page. This leads to a withdraw form [amount value, account text, details text] where user can request to withdraw credits (more than minimum withdrawal setting, and equal or less of total balance).
Also this page shows withdrawal info as defined by webmaster.
(ie: Fill your paypal address in account box to request a minimum withdrawal of 50 credits. Credits will be converted to usd at rate 1:1.).
When requesting withdrawal credits are removed from balance (to prevent spending) and a transfer is created to be processed by webmaster.
* Backend (for administrators):
+ List/search/filter (by user name) user balances (sort by value, last transaction time), pagination
+ List/search/filter (by user, type, applied) user transfers (sort by start time / user / type / value), pagination
+ Place a transfer (add/remove credits) with comment; icon to transfer next to username in previous listings.
+ Define withdrawal conditions (checkboxes user roles or usernames/emails list): who can withdraw; and withdrawal info to display to allowed users
+ Component Parameters/Settings:
- Starting user balance. IE admin could give 200 credits to each user that registers - this also applies to users that registered before installing this component.
+ Withdrawal processing (list with requested withdrawals, direct link/pay button or mini form to pay that account via paypal, link to mark withdrawal as processed: applied).
+ Define credit packages:
- recurring : one time, daily, weekly, monthly, quarterly, yearly
- allowed billing options for this package (checkboxes: Paypal, Plimus, Zombaio...)
- required parameters (ie. contract id, order link) for each of enabled billing processors
- enabled promotions (checkboxes)
- change user role (select from unchanged + list of available joomal user roles)
+ Promotions add/remove rows: label, coupons list (csv), first bill discount percent, recurring discount percent
+ Billing options view.
- For each supported billing site will include Enabled checkbox (that enables it for selecting in packages), configuration parameters and a link/button to setup info page/popup (describing how to set this up with your account on that billing site).
- Also will include withdrawal options (at this stage just paypal that displays the button/form to start paying user from backend).
* Required processors (suggest/specify if any present issues or new ones that can be easily added as a plus):
- Paypal [url removed, login to view] [url removed, login to view]
- Plimus [url removed, login to view] [url removed, login to view]
- Zombaio [url removed, login to view]
Must allow easily adding more processors in the future.
* Must include automated IPN processing.
Basically when transactions occur these sites will call a local script (as defined) ie. [url removed, login to view] with some variables (contract name, account email, price, transaction type: charge/recurring/cancellation/chargeback/refund). All IPNs will be saved, possibly as transfers (even subscription cancellations with 0 value) for webmaster to review details saved as comments.
Users can be identified by email (a notification will show when buying credits to use same email).
Package will be indentified by label (if same with contract name or product name) to transfer amount of credits required.
Transfers can be positive (charge/recurring) or reversals (chargeback/refund).
* Must include testing mode support (ie. with paypal/plimus/zombaio sandbox/developer accounts) to test IPNs.
* This should be developed using MVC (model view controller) design, for latest joomla version, respect joomla coding standards as described in Joomla documentation.
Communication will be done via PMB.
A compatible hosting account will be provided to upload progress.
Progress updates should be sent, shown at least 2 times per week.
Bid with realistic durations and include some extra time to make sure you can do it within the timeframe. Cancellation will be required if project is not ready within bid timeframe.
All amount will be escrow on project start and will be released when everything is done, functional, delivered as in project requirements.