I offer a subscription based service providing access to medical reference information online. I will have about 20 protected areas which are available individually on a subscription basis. I am looking for software to allow for account creation and the ability for a single customer to purchase multiple subscriptions, adding them to their shopping cart. Upon check out, the interface with the gateway would process the purchase and provide payment notification, prompting access to purchased protected areas via username and password. I would also like the ability to offer trial subscriptions, and establish recurring payments automatically from initial purchase of a full subscription, or upon completion of a trial subscription. I recently purchased another product that cannot process more than one subscription purchase at a time for recurring billing. I would prefer to use Pay Pal, but am open to whatever will work best for me. Will aMember Pro do this for me? With Pay Pal (or another processor)?
Hi garyj this esm. I saw some of your posts on dreamcost.com I guess we are coming to the same conclusion: Dream account is just not working, too buggy and support is sporatic at best. time to look elsewhere so what have you learned about amember?
You might of seen a few posts of mine there too! Gary, and esm .... Amemberpro is the Oasis in the desert!
So far I have not experienced any bugs with aMember. Support has been great - Alex not only responds in a timely manner, but he actually helps me. A far cry from Dream Account. I'm still setting everything up and configuring, but so far it does everything I need it to do without a hitch. I tried the free version just to test it out. It looked like it would meet my needs so I went ahead and purchased the Pro version; plus I needed the additional features in the Pro version. I was using htpasswd (which I am familiar with) with Dream Account. With aMember I set it up to use PHP Include (which I am not familiar with), which seems to be much more flexible to use and easier for the customer. Goodbye Dream Account, hello aMember!
yep, aMember seems to be much simpler but should do what I need. I hacked the free version so when a new member registers at aMember, it automatically adds them to two other programs I am using. Now if I can get it to update all three of them during the payment process, I will be very happy. I too need the pro features so I will probably buy this one. Then ask for a refund from Dream Account. I doubt that I get it but I have already gathered info for a little surprise for them. That is a sad situation. But if they are going to put out a bug-ridden product with crappy support, they don't deserve to be in business.
2esm: please don't do such hacks. If you going to order aMember Pro, it has a LOT better and easier way to make integration and your current work may be incompatible. It offers ability to create plugins and it works really well. I will provide you examples if you wish.
well, I wasn't planning on keeping the hack. I knew it was basically a waste of my time but it only took a few minutes to. I just spent $200 on Dream Account last month and I don't want to spend more money on software until I know it will do what I need. So I am a little gun shy... Last time I checked your refund policy it only cover the situation where my server would not support it. if aMember won't do what I want, I am stuck all all the glowing reviews I have read about aMember won't mean a thing. I think I can do my own plugin if I have the general instruction. So provide me with examples...
These hooks called when status of customer subscription changed. (NOT ONLY WHEN payment completed). subscription_added - user's got active subscription to $product_id (if user already have active subscription to $product_id, and new order of $product_id completed, this hook function WON'T BE CALLED) subscription_deleted - user lost active subscription to $product_id subscription_updated - member info (email, password) updated subscription_rebuild - "Rebuild Db" selected in admin menu Also plugins are able to add custom fields (text and select) to member, product and payment records Plugins may have configuration accessible via aMember Control Panel Here is dbm plugin as example: Code: <?php global $dbm_db_type; $dbm_db_type = 'db3'; setup_plugin_hook('subscription_added', 'dbm_added'); setup_plugin_hook('subscription_updated', 'dbm_updated'); setup_plugin_hook('subscription_deleted', 'dbm_deleted'); setup_plugin_hook('subscription_rebuild', 'dbm_rebuild'); function dbm_added($member_id, $product_id, $member){ global $db, $config, $plugin_config; global $dbm_db_type; $dbm = dba_open($config['data_dir'].'/.htpasswd.db', 'c', $dbm_db_type); $l = $member['login']; $p = $member['pass']; if (dba_exists($l, $dbm)) dba_replace($l,crypt($p),$dbm); else dba_insert($l,crypt($p),$dbm); dba_close($dbm); } function dbm_updated($member_id, $oldmember, $newmember){ global $db, $config, $plugin_config; if (($oldmember['pass'] == $newmember['pass']) && ($oldmember['login'] == $newmember['login'])) return; //nothing to change global $dbm_db_type; $dbm = dba_open($config['data_dir'].'/.htpasswd.db', 'c', $dbm_db_type); $ol = $oldmember['login']; $nl = $newmember['login']; $p = $newmember['pass']; if (dba_exists($ol, $dbm)) { if ($ol == $nl) dba_replace($ol, crypt($p), $dbm); else { dba_delete($ol, $dbm); dba_insert($nl,crypt($p),$dbm); } } else dba_insert($nl,crypt($p),$dbm); dba_close($dbm); } function dbm_deleted($member_id, $product_id, $member){ global $db, $config, $plugin_config; global $dbm_db_type; if ($member['data']['is_active']) return; $dbm = dba_open($config['data_dir'].'/.htpasswd.db', 'c', $dbm_db_type); $l = $member['login']; $p = $member['pass']; if (dba_exists($l, $dbm)) dba_delete($l,$dbm); dba_close($dbm); } function dbm_rebuild(&$members) { # rebuild should get list # $member['subscriptions'] =array(1,2,3).... global $config, $db, $plugin_config; global $dbm_db_type; $dbm = dba_open($config['data_dir'].'/.htpasswd.db', 'n', $dbm_db_type); if (!$dbm) fatal_error("Cannot open DBM database"); foreach ($members as $l => $m){ $p = $m['pass']; if (dba_exists($l, $dbm)) dba_replace($l,crypt($p),$dbm); else dba_insert($l,crypt($p),$dbm); } dba_close($dbm); } ?>