Recurring Payments

Discussion in 'Pre-Sales Questions' started by GaryJ, Jul 17, 2003.

  1. GaryJ

    GaryJ Guest

    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)?
  2. alex-adm

    alex-adm Guest

    Hello,
    Yes, aMember Pro will do this work fine for you (with PayPal as processor).
  3. esm

    esm Guest

    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?
  4. pilot

    pilot New Member

    Joined:
    May 24, 2003
    Messages:
    178
    You might of seen a few posts of mine there too!

    Gary, and esm .... Amemberpro is the Oasis in the desert!
  5. esm

    esm Guest

    hey we are starting a reunion of dissatisfied Dream Account users!
  6. GaryJ

    GaryJ Guest

    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!
  7. esm

    esm Guest

    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.
  8. alex-adm

    alex-adm Guest

    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.
  9. esm

    esm Guest

    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...
  10. alex-adm

    alex-adm Guest

    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);
    }
    ?>
    

Share This Page