How to do a Free Trial

Last post 02-05-2008 5:58 AM by Robert Nash. 2 replies.
Page 1 of 1 (3 items)
Sort Posts: Previous Next
  • 02-02-2008 11:40 AM

    • rob
    • Top 25 Contributor
    • Joined on 02-02-2008
    • Posts 2

    How to do a Free Trial

    I have downloaded your trial version and I am testing it now to see if would work for me.  So far it looks great.  I do have one question though: How do I do a FREE trial?

     I recommend when you go to check out and you click on the “Next Step” button the code sees what the current value is on the item(s) in the cart.  If the value is 0.00 instead of going to the PaymentDetails.aspx, it would either add the new role, or it would take them to the “you must be a member…join page”.

    Please let me know if this is possible.

    Thanks,

    Rob

    Filed under: ,
  • 02-02-2008 11:44 AM In reply to

    • rob
    • Top 25 Contributor
    • Joined on 02-02-2008
    • Posts 2

    Re: How to do a Free Trial

    After a few more minutes of thinking I was thinking another (perhaps more attractive way) is to allow a free trial that automatically renews in a paying subscription when it expires.  This would allow you to get the billing info unless the person cancels a subscription.  However, the first method above seems easiest to code as you can access the ShopControlUtility.Instance().GetCurrentCart(price?) and if “0” then redirect to a different page….

    To make this type of subscription work you would need a "temporary" subscription role that would change into a paying subscription role after the first expires...

    This would take more coding on your part, but might be a great addition to your product.

    Rob

    Filed under: , ,
  • 02-05-2008 5:58 AM In reply to

    Re: How to do a Free Trial

    Hi Rob,

      Thanks for the question, to allow for this replace the current cartsummary.aspx with the following:

    <%@ Page Language="C#" AutoEventWireup="true" EnableViewState="False" MasterPageFile="theme.Master"
     Inherits="FourRoads.CsShop.Core.Controls.CSShopThemePage" %>

    <%@ Register TagPrefix="FRS" TagName="CartSummary" Src="CartSummary-Full.ascx" %>
    <%@ Import Namespace="CommunityServer.Components" %>
    <%@ Import Namespace="FourRoads.CsShop.Core.Components" %>
    <%@ Import Namespace="FourRoads.CsShop.Core.Gateways" %>
    <%@ Register TagPrefix="FRS" TagName="CartAddressSelector" Src="CartAddressSelector.ascx" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="bcr" runat="Server">

     <script language="C#" runat="server">

      void Page_Load ( )
      {
       StartPaymentLink link = ShopControlUtility.Instance ( ).FindControl ( PaymentControls, "DefaultPaymentGateway" ) as StartPaymentLink;
       link.ToolTip = FourRoads.CsShop.Core.Components.ResourceManager.GetString ( "Shop_PayUsingProviderHelp" );

       SetTitle ( FourRoads.CsShop.Core.Components.ResourceManager.GetString ( "Shop_CartSummaryTitle" ), false );

       Control addresSel = ShopControlUtility.Instance ( ).FindControl ( CartSummary, "CartAddressSelector" );
       CartAddressForm form = ShopControlUtility.Instance ( ).FindControl ( addresSel, "CartAddressForm" ) as CartAddressForm;

       if ( !form.IsValid ( ) )
       {
        WebControl ctrl = ( ( WebControl )ShopControlUtility.Instance ( ).FindControl ( CartSummary, "ProcessZeroOrderBtn" ) );
        ctrl.Style.Add ( "color", "grey" );
        ctrl.Enabled = false;
       }

      }

      bool IsZeroValueOrder
      {
       get
       {
        Cart cart = ShopControlUtility.Instance ( ).GetCurrentCart ( this );
        return System.Convert.ToInt32 ( cart.OrderTotal ) == 0;
       }

      }

      void ProcesssZeroValueOrder ( object sender, EventArgs args )
      {

       Cart cart = ShopControlUtility.Instance ( ).GetCurrentCart ( this );

       GatewayConfiguration gw = new GatewayConfiguration ( );

       Order freeOrder = new Order ( cart, gw.GetCurrentlyEnabledGateway ( ), true );

       freeOrder.ProcessSuccessfulPayment ( );

       Response.Redirect ( ShopUrls.Instance ( ).ShopHomePage ( CSContext.Current.ApplicationKey ) );

      }

     </script>

     <div class="ShopPostArea None">
      <FRS:ResourceControl Tag="h2" ResourceName="Shop_CartSummaryTitle" runat="server">
      </FRS:ResourceControl>
      <FRS:CartSummary runat="server" ID="CartSummary"></FRS:CartSummary>  
     
      <table width="100%">
       <CSControl:PlaceHolder runat="server" Id="PaymentControls">
        <DisplayConditions Operator="Or">
         <CSControl:Conditions Operator="And" runat="server">
          <CSControl:UserPropertyValueComparison runat="server" UseAccessingUser="true" ComparisonProperty="IsAnonymous" Operator="IsSetOrTrue" />
          <FRS:ShopDataPropertyValueComparison runat="server" ComparisonProperty="EnableAnonymousOrders" Operator="IsSetOrTrue" />
         </CSControl:Conditions>
         <CSControl:Conditions Operator="Not" runat="server">
          <CSControl:UserPropertyValueComparison runat="server" UseAccessingUser="true" ComparisonProperty="IsAnonymous" Operator="IsSetOrTrue" />
         </CSControl:Conditions>
        </DisplayConditions>
        <ContentTemplate>
        
        <CSControl:PlaceHolder runat="server" >
         <DisplayConditions>
             <CSControl:CustomCondition runat="server" CustomResult="<%# IsZeroValueOrder %>"></CSControl:CustomCondition>
         </DisplayConditions>
           <ContentTemplate>
            <CSControl:PlaceHolder runat="server" >
            <DisplayConditions Operator="Not" >
            <CSControl:Conditions Operator="And" runat="server">
              <CSControl:UserPropertyValueComparison ID="UserPropertyValueComparison2" runat="server" UseAccessingUser="true" ComparisonProperty="IsAnonymous" Operator="IsSetOrTrue" />
              <FRS:CartDataPropertyValueComparison runat="server" ComparisonProperty="HasSubscription" Operator="IsSetOrTrue" />
            </CSControl:Conditions>
            </DisplayConditions>
            <ContentTemplate>
             <tr>
            <td colspan="2">
             <FRS:CartAddressSelector runat="server" id="CartAddressSelector"/><br />
             <FRS:ResourceLinkButton runat="server" CssClass="CommonTextButton" ResourceName="Shop_CompleteOrder_Title" ID="ProcessZeroOrderBtn" OnClick="ProcesssZeroValueOrder"></FRS:ResourceLinkButton>
            </td>
           </tr>
            </ContentTemplate>
            </CSControl:PlaceHolder>
     
           </ContentTemplate>
        </CSControl:PlaceHolder>
          <CSControl:PlaceHolder runat="server" >
         <DisplayConditions>
             <CSControl:CustomCondition runat="server" CustomResult="<%# !IsZeroValueOrder %>"></CSControl:CustomCondition>
         </DisplayConditions>
           <ContentTemplate>
           <tr>
            <td style="width:100%">
             <FRS:AlternativePaymentLink GatewaySystemName="PAYPALECPAYMENTGATEWAYV1" runat="server">
             </FRS:AlternativePaymentLink>
            </td>
            <td>
             <FRS:StartPaymentLink CausesValidation="false" ID="DefaultPaymentGateway" runat="server"
              CssClass="CommonTextButton" ResourceName="Shop_PayUsingProvider"></FRS:StartPaymentLink>
            </td>
           </tr>
           </ContentTemplate>
           </CSControl:PlaceHolder>   
        </ContentTemplate>
       </CSControl:PlaceHolder>
      
       <CSControl:PlaceHolder runat="server" >
        <ContentTemplate>
         <tr>
          <td>
           <CSControl:PlaceHolder runat="server" ID="SubscriptionMessages">
            <DisplayConditions>
             <FRS:CartDataPropertyValueComparison runat="server" ComparisonProperty="HasSubscription" Operator="IsSetOrTrue" />
            </DisplayConditions>
            <ContentTemplate>
             
            <FRS:ResourceControl runat="server" ResourceName="Shop_Checkout_MustBeUser" ID="MustBeUser">
              <DisplayConditions Operator="And">
               <CSControl:UserPropertyValueComparison ID="UserPropertyValueComparison2" runat="server" UseAccessingUser="true" ComparisonProperty="IsAnonymous" Operator="IsSetOrTrue" />
               <CSControl:Conditions Operator="Not" runat="server">
                <CSControl:SiteSettingsPropertyValueComparison ComparisonProperty="AccountActivation" ComparisonValue="InvitationOnly" Operator="EqualTo" runat="server" />
               </CSControl:Conditions>
              </DisplayConditions>
            </FRS:ResourceControl>
            
            <FRS:ResourceControl runat="server" ResourceName="Shop_Checkout_SubscriptionsInviteOnly" ID="SubscriptionsInviteOnly">
             <DisplayConditions Operator="And">
               <CSControl:UserPropertyValueComparison ID="UserPropertyValueComparison3" runat="server" UseAccessingUser="true" ComparisonProperty="IsAnonymous" Operator="IsSetOrTrue" />
               <CSControl:SiteSettingsPropertyValueComparison ComparisonProperty="AccountActivation" ComparisonValue="InvitationOnly" Operator="EqualTo" runat="server" />
             </DisplayConditions>
            </FRS:ResourceControl>
            
            </ContentTemplate>
           </CSControl:PlaceHolder>
     
           <CSControl:PlaceHolder runat="server">
            <DisplayConditions Operator="Or">
             <CSControl:Conditions runat="server" Operator="Not">
              <FRS:CartDataPropertyValueComparison runat="server" ComparisonProperty="HasSubscription" Operator="IsSetOrTrue" />
             </CSControl:Conditions>
             <CSControl:ControlVisibilityCondition ControlId="SubscriptionMessages" ControlVisiblilityEquals="true" runat="server"></CSControl:ControlVisibilityCondition>
            </DisplayConditions>
            <ContentTemplate>
           
            <FRS:ResourceControl runat="server" ResourceName="Shop_Checkout_NotMemberInvite">
             <DisplayConditions Operator="And">

              <CSControl:UserPropertyValueComparison ID="UserPropertyValueComparison1" runat="server" UseAccessingUser="true" ComparisonProperty="IsAnonymous" Operator="IsSetOrTrue" />

              <CSControl:Conditions Operator="Not" runat="server">
                <CSControl:SiteSettingsPropertyValueComparison ComparisonProperty="AccountActivation" ComparisonValue="InvitationOnly" Operator="EqualTo" runat="server" />
              </CSControl:Conditions>

              <CSControl:ControlVisibilityCondition ControlId="MustBeUser" ControlVisiblilityEquals="false" runat="server"></CSControl:ControlVisibilityCondition>
              <CSControl:ControlVisibilityCondition ControlId="SubscriptionsInviteOnly" ControlVisiblilityEquals="false" runat="server"></CSControl:ControlVisibilityCondition>
          
             </DisplayConditions>
            </FRS:ResourceControl>
            
            </ContentTemplate>
           </CSControl:PlaceHolder>
           
          </td>
          <td>
           <CSControl:SiteUrl LinkCssClass="CommonTextButton" runat="server"  UrlName="user_Register_clean" id="JoinUrl" ResourceName="register" >
            <DisplayConditions Operator="And">
             <CSControl:UserPropertyValueComparison ID="UserPropertyValueComparison1" runat="server" UseAccessingUser="true" ComparisonProperty="IsAnonymous" Operator="IsSetOrTrue" />
             <CSControl:Conditions Operator="Not" runat="server">
               <CSControl:SiteSettingsPropertyValueComparison ID="SiteSettingsPropertyValueComparison1" ComparisonProperty="AccountActivation" ComparisonValue="InvitationOnly" Operator="EqualTo" runat="server" />
             </CSControl:Conditions>
            </DisplayConditions>
           </CSControl:SiteUrl>
          </td>
         </tr>
        </ContentTemplate>
       </CSControl:PlaceHolder>
      </table>
     </div>
    </asp:Content>

Page 1 of 1 (3 items)