Voucher Key Features (Introduced in v2.7)

  • Two types of vouchers; New Service & Renewal
  • Multiple billing cycles
  • Each voucher is map to a specific product in WHMCS
  • Can be used without Gift Card mode

Configuration

Enabling Voucher Mode

To enable Voucher Mode, go into your WHMCS Addon Modules → Gift Card Admin Module → Configure → Voucher Status

Templates Used

New additional templates use for Voucher Mode are the following

Template file nameFunction

gcVoucherIndex_horizontal.tpl

The horizontal voucher listing template

gcVoucherIndex.tpl

The vertical voucher listing template

gcVoucherIndexOrder.tpl

The checkout page for voucher purchases

gcVoucherRedeem

The redemption page for vouchers

gcRedeem.tpl

The common page for checking a gift card/voucher code

gcVCManage.tpl

The manage voucher page under a user within the client area

Creating a Voucher for Sale

To put a voucher up for sale, first you must create a New Voucher Mapping. 

Head to WHMCS → Addons → Gift Card Admin Module 

Then click on the Voucher Management tab and Create New Voucher Mapping

On the next screen, you will be able to fill in the fields to create a new mapping

Voucher Mapping Options

Option NameExplanation
Voucher NameThe display name of the Voucher
Voucher MappingThe mapping which the voucher will redeem to
Voucher TypeSelect this voucher will be a new service or renewal
Billing Cycle (For New Service)The new service will set to this billing cycle
Extend Renewal (For Renewal)The selected existing service will have the next billing date extended to this period
Required Input for Redemption (For New Service)Whether the voucher require a user input to process the redemption. This value will be used in the domain field of the service.
Voucher ValueThe display value of the voucher. No bearing of the price
Voucher PriceThe selling price of the voucher
EnableEnable the selling of this voucher
Show on Voucher Listing IndexIf disabled, the voucher will not be visible on the listing but users will still be able to purchase
ValidationRequire user to perform validation before the voucher is provisioned
Validation ConditionThe condition which the module will require the user to perform a validation on new voucher orders
Allow Self UserAllow the purchaser of the voucher to redeem the voucher
Personalized Message (Email)Allow the purchaser of the voucher to send a personalized message when sending the voucher to a friend
Code LengthThe length of the voucher code
PrefixThe prefix to add in front of the voucher code during generation
Code StyleThe allowed characters in the voucher code
Code CombinationThe style of how the code is divided
ExpiryThe amount of time the voucher will go expire after activation 
Restriction GroupThe restriction group which is allow to purchase & redeem the voucher
Voucher DescriptionThe description of the voucher shown on the listing index

Click on Add to Listing to add this voucher to your voucher listing.

You will find current Voucher Mappings for your system under the Voucher Management tab as well. 

Click on the bubble and it will expand the properties for the particular Voucher Mapping

You will not be able to delete a Voucher Mapping if there is an existing Voucher under it.

Operations

Buying

Your users can purchase a voucher by going to index.php?m=giftcard&action=indexvoucher of your WHMCS. You can simply enable the Menu options under the Module's config.

Redemption

Once the user have an active voucher, they can goto index.php?m=giftcard&action=redeemgc of your WHMCS or click on the Gift Cards & Vouchers Redemption link in the menu above.

Advance Voucher Redemption Guide


Due to the customizability of this, we will not be providing support on this.


Part 1 - Template front end

If your WHMCS product require additional user input before it is provisioned, then you will need to add additional fields manually to the template.

To do this, open the  gcVoucherRedeem.tpl template. To add a new field, look at the codes under IF statement of

{if $data["type"] == 0}

{elseif $data["type"] ==1}

You may copy and paste and use the existing code such as 

<input type="hidden" id="requiredinputtype" value="1"/>
                                <div class="col-sm-12">
                                    <div class="form-group row">
                                        <label for="requiredinput-host" class="col-sm-2 col-form-label">{$ADDONLANG.gcPage_redeem_vc_requiredinput_1}</label>
                                        <div class="col-sm-10">
                                            <input type="text" class="form-control" id="requiredinput-host" placeholder="hostname">
                                        </div>
                                    </div>
                                </div>

Change the id so that you can distinguish it during PHP processing and Javascript validation

If you need this required input to show up with Hostname input, then put in the (["requiredinput"] == 1) condition. If show up with FQDN input, then put it in the (["requiredinput"] == 2) condition. For IP input, put it in the (["requiredinput"] == 3) condition.

If you need this required input to show up for all vouchers, then you need to create a new IF condition within the ({if $data["type"] == 0}) condition, and a ({else}) condition. 

For example,

                           {if $data["data"]["properties"]["requiredinput"] == 1}
                             <input type="hidden" id="requiredinputtype" value="1"/>
                                <div class="col-sm-12">
                                    <div class="form-group row">
                                        <label for="requiredinput-host" class="col-sm-2 col-form-label">{$ADDONLANG.gcPage_redeem_vc_requiredinput_1}</label>
                                        <div class="col-sm-10">
                                            <input type="text" class="form-control" id="requiredinput-host" placeholder="hostname">
                                        </div>
                                    </div>
                                </div>
                            {elseif $data["data"]["properties"]["requiredinput"] == 2}
                                <input type="hidden" id="requiredinputtype" value="2"/>
                                <div class="col-sm-12">
                                    <div class="form-group row">
                                        <label for="requiredinput-fqdn" class="col-sm-2 col-form-label">{$ADDONLANG.gcPage_redeem_vc_requiredinput_2}</label>
                                        <div class="col-sm-10">
                                            <input type="text" class="form-control" id="requiredinput-fqdn" placeholder="domain.com">
                                        </div>
                                    </div>
                                </div>
                            {elseif $data["data"]["properties"]["requiredinput"] == 3}
                                <input type="hidden" id="requiredinputtype" value="3"/>
                                <div class="col-sm-12">
                                    <div class="form-group row">
                                        <label for="requiredinput-ip" class="col-sm-2 col-form-label">{$ADDONLANG.gcPage_redeem_vc_requiredinput_3}</label>
                                        <div class="col-sm-10">
                                            <input type="text" class="form-control" id="requiredinput-ip" placeholder="1.2.3.4">
                                        </div>
                                    </div>
                                </div>
                             {else}
								**Your new codes
                            {/if}

If you need the required input to show up for a particular voucher mapping then you can perform a IF condition such as 


{if $data["data"]["id"] == X}

{/if}

Where X is the voucher's ID. 

Once you have added the fields, you may want to add additional Javascript validation.

Part 2 - PHP Backend

Do not allow user input without running some sort of validation of user's input. 


You will want to run some validation in the backend before it is inserted into your database. To do this, open the following file

modules/servers/giftcardprovision/include/processhookVC.php

This file is not encoded. There for you can make any changes you need for New Service redemption that require additional user input.

The codes are in the redemptionProcessHook function. 

You can refer to the WHMCS AddOrder API guide for additional information.

That's it. You new codes should be running for your new inputs.

Running codes after successful Renewal Redemption

If you run any custom code after a user successfully redeemed a voucher, simply open the following file.

modules/servers/giftcardprovision/include/processhookVC.php

then you can insert your own code in the redemptionRenewalHook function.

The $vars variable contains the following

$vars = array("uid"=>$_SESSION['uid'],"vcdata"=>$vcdata);

$vcdata are the voucher's properties which you can locate it in the mod_giftcard_voucher table in the database

$serviceid is the service id of the user chose to extend the renewal to.