Documentation
vAlexa

Installation

1. Requirements
  • PHP version 7.3 or greater
  • PHP Curl extension
  • FileInfo PHP extension
  • JSON PHP extension
  • Intl PHP extension
  • MbString PHP extension
  • OpenSSL PHP extension
  • Pdo_mysql PHP extension
  • XML PHP Extension
  • Mysql version 5.6 or greater
2. Installation

The .zip file contains two folders, one named "Doc" contains the documentation and one name "Script" contains the main script of the application.

- The documentation serves as a reference to configure your website and know how things work.

- The main Script folder is the application.

  • Extract the zip file.
  • Move the content of "Script" folder to your domain name folder.
  • cpanel-1.png
    Note: The .htaccess file you see in the list of files contains the necessary directives to redirects all requests to /public folder.

    A better solution to redirect requests to public folder is to change the "Document root" from your cPanel >> Domains or Subdomains.

    With a Primary domain (the main domain name in your server), it may not be possible to change to Document root, so, the .htaccess file above will take care of the redirection.
    cpanel-domains-1.png
    cpanel-domains-2.png
    cpanel-domains-3.png
  • To start the installation, access your website via the address bar, https://example.com , you will be redirected automatically to the installation form.
  • Note: Some fields of the installation form will be stored in .env file (Database info, website url) while the rest will be stored in your database.
  • Once the installation is completed, you will be redirected to the website administration, there, you can start configuring your website (Mailer, Payment gateways, Files hosts, ...).
3. General

General settings, site name, title, description, logo, favicon...

4. Database

Here, you should already have a database created in your server, in order to do that (if it's not already done), in yout server cPanel, click on "MySQL® Databases"

then create a new database
then create a new user for your database
and finally add the user you've just created to your database

Note: the user's username & password and the database's name are what you need to configure your database

The database's Host is usually "127.0.0.1" or "localhost", if it doesn't work, which is rare, you need to contact you hosting provider.

5. Admin access

The user administrator of your website

Note: the avatar is not required during the installation, you can upload one from the website's admin area.

Settings

Website general settings
Blog
Pricing table
  • Accumulation : allow / disallow users to accumate multiple subscriptions before their expiration.
Products
  • Generate audio peaks : generate peaks for the selected items of type audio, if no item is selected, the action will be applied to all items of type audio.
  • Enable Masonry layout : show items in masonry layout. This is useful when the products covers have different size.
Cookie
Languages
  • The translation can be done and edited from the "Administration >> Settings >> Translations", otherwise, the default texts are used.
Fonts
  • Fonts : Specify custom fonts to use for your website front-office (visitors/buyers side). You can use fonts from google-fonts or from your server.

    • - From google fonts : Enter the font URL
    • - From your server : Upload fonts (files/folders) to "/publi/assets/fonts/(FONT_FOLDER)/FILE_NAME'
    Example for local fonts :

    @font-face { font-family: 'Spartan'; src: url("/assets/fonts/Spartan/Spartan-Regular.ttf"); font-weight: 400; font-style: normal; }
    @font-face { font-family: 'Spartan'; src: url("/assets/fonts/Spartan/Spartan-Medium.ttf"); font-weight: 500; font-style: normal; }

Templates

Default
Tendra
Valexa
Home pages items
  • The number of items to fetch (in total) and the number of items to show per line.
Social links
Favicon, Logo, Cover, Watermark, ...
  • Watermark : A watermark if selected, to be applied on the products covers.
Admin notifications
Comments and reviews approval
Debug mode
Maintenance & Comming soon mode
Envato purchase code

Mailer gateways

Email account
  • In your server's cPanel, search/click on "Email Accounts"
  • Then click on "Connect Devices" for your default email account or create a new one
  • Then, at the bottom, you have two choices, secure and none-secure configuration (settings), the password is the one you used to create the new email account or the cPanel one if it's the default email account.

  • Reply to : An email address to which users messages will be sent when they try to reply to your messages.
  • Forward to : An email address to which users email messages will be resent. E.g, when a user send you a message, the message will be sent to your server email account and also to your gmail address.
  • Queueing messages : This if enabled, will put email messages in the queue to be sent later and avoid waiting for the mail server to complete the task immediately. We need to create a cron job for it before we enable it.
  • You can create a cron job from your server "cPanel" >> "Cron jobs".
  • Example of a cron job command : /usr/local/bin/php /absolute_path_to_your_domain_name_folder/artisan queuedMails:send >> /dev/null 2>&1
  • Test mailer connection : you can check if the credentials are correct and get a response if the connection is "success" or an error message.

Payment gateways

PayPal Checkout

Client and Secret ID

  • Create a PayPal business account
  • Login to PayPal Developer Dashboard Here
  • In "My Apps & Credentials" click on "Create App"
  • Give your application a name, select a sandbox account and then click on "Create App"
  • Once back to the previous page, click on the name of the app you've just created
  • The default mode is "Sandbox" (testing mode), it has its Client ID and Secret ID (Click on "Show" to see it), if you want to use "Live" mode (real payments, no testing) switch to it and you will be shown the IDs for Live mode.

Change store name

  • login to your real paypal account (or sandbox)
  • Click on Cog icon (beside logout button) and select "Account Settings"
  • on the left menu, click on "Business information"
  • For "Business information" click on "Update"
  • At the right side of your store's logo, click on "Edit"
  • In "Business name", click "Change"
  • For "Let us know why you're changing your name" select "Your business name has changed"
  • Enter your new business (store) name and validate the changes (click on "Update business name")
  • That's it. This name is visible for users/buyers on paypal payment page if they want to go back to your website "store" rather than completing the purchase.
Stripe

Client and Secret ID

  • Create a Stripe account
  • Login to your Stripe account dashboard
  • On the left menu, click on "Developers" and then "API Keys"
  • You will have a "Publishable key" which is the Client ID in your website and a "Secret key" which is the Secret ID in your website.
    Those two keys or IDs are for testing only (paypal sandbox equivalent mode).
  • Copy/paste those IDs in your website Stripe settings fields, enable stripe and save the changes (by clicking on the Update button).
  • Note : In order to get Keys/IDs for non-testing mode (Live mode) you wil need to fill in the form Here and submit it to stripe for review.
  • Test cards can be found Here

Change store name and widget color|logo

  • Login to your stripe account
  • On the left menu, click on "settings", then, select "Account information"
  • In "Public business information / Public business name" enter your new business (store) name
  • You can edit the other fields too, 'support email', 'Statement descriptor', 'Business website' ...
  • For wiget color and logo, back to the previous page and select "Branding" (Public business information / Branding)
CoinGate
  • Create a sanbox CoinGate account Here
  • Connect to your Coingate account.
  • Create and App and get an Auth token following the instructions Here
  • Copy/Paste your Auth token in your website >> Administration >> Settings >> Payments >> Coingate >> Auth Token
  • Enter the currency (Code of 3 chars, e.g. USD) to which you want to exchange the received currency.
  • To get an Auth token for live mode, create a non-sandbox account here Here, and follow the same previous steps. You may be prompted to provide more details about your activity.
Midtrans
  • Create a Midtrans account Here
  • Connect to your Midtrans sandbox account Here
  • On the left menu click on "Settings" >> "Configuration".
  • For "Payment Notification URL*" enter https://example.com/checkout/webhook (where example.com is your domain name. Https ot Http depends on whether you have an ssl certificate or not.)
  • For "Recurring Notification URL*" enter any url, it won't be used.
  • For "Finish Redirect URL*" enter https://example.com/checkout/payment/order_completed (where example.com is your domain name. Https ot Http depends on whether you have an ssl certificate or not.)
  • For "Unfinish Redirect URL*" enter https://example.com/checkout (where example.com is your domain name. Https ot Http depends on whether you have an ssl certificate or not.)
  • For "Error Redirect URL*" enter https://example.com (where example.com is your domain name. Https ot Http depends on whether you have an ssl certificate or not.)
  • Save the changes.
  • Get your Client Key, Server Key and Merchant ID from "Settings" >> "Access Keys"
  • Copy/Paste them in your website >> Administration >> Settings >> Payments >> Midtrans
  • You can edit your Midtrans payment form preferences form Settings >> Snap Preferences
  • To switch to live mode, select "Production environment" in your Midtrans dashboard, and then follow the registration steps Here
  • Test payments
Razorpay
  • Create a Razorpay account
  • Login to your Razorpay account dashboard
  • On the left menu, click on "Settings" and then "API Keys"
  • Copy the "Key Id" and "Key Secret" (you may need to click on "Generate Test key" blue button to get the necessary keys).
  • Copy/paste those IDs in your website Razorpay settings to their corresponding fields and save the changes.
  • Back to Razorpay dashboard, click on "Webhooks" tab to create a Webhook.
  • In Webhook URL feild enter https://example.com/checkout/webhook (where example.com is your domain name.)
  • In Secret field enter a secret phrase like a password.
  • In Active events search for and select "payment.captured" (there must one result)
  • Copy/Paste the webhook secret to its field in your website Razorpay settings, enable Razorpay and save the changes.
  • Back to razorpay dashboard, click on "Create webhook".
  • Note : In order to get Keys/IDs for non-testing mode (Live mode) you wil need to fill in the form Here and submit it to Razorpay for review.
  • Test cards can be found Here
Iyzico
  • Create a sandbox Iyzico account Here
  • Login to your sandbox Iyzico account dashboard
  • On the left menu, click on "Settings" and then on "Merchant Settings"
  • SCroll down to "Merchant Notifications" and enter : https://example.com/checkout/webhook (replace example.com with your domain name)
  • Scroll up to "API Keys" and click on "Show detail" for "API Key" and "Secret Key"
  • Copy/paste those IDs in your website Iyzico settings fields ("API Key" to "Key ID" and "Secret Key" to "Key Secret"), save the changes.
  • Note : In order to get Keys/IDs for non-testing mode (Live mode) you wil need to create a non-sandbox account Here, activate your account via the received email and follow the required steps for applying to a business account.
  • Test cards can be found Here
Skrill
  • Skrill payment gateway integration was done via Skrill_Quick_Checkout_Guide.pdf documentation, that is based on their way of working where users/developers are not allowed to access their business control panel for testing purposes (” Test Skrill accounts could be offered only to pre-approved merchants ”), so, you will need to contact them to get a Skrill merchant test account.
  • Test merchant and test cards are in page 20 of Skrill_Quick_Checkout_Guide.pdf documentation.

Test account
------------------------------------

Merchant account : demoqco@sun-fish.com

MQI/API secret word : skrill

MQI/API password : skrill123

Paystack
  • Create a Paystack account Here
  • Connect to your Paystack account
  • On the left menu, click on "Settings" and then on "API Keys & Webhooks" tab.
  • In "Test Webhook URL" field enter https://example.com/checkout/webhook (replace example.com with your domain name)
  • Copy/Paste your "Test Secret Key" and "Test Public Key" in your website >> Administration >> Settings >> Payments >> Paystack.
  • Once done with testing, you can activate your account following the instrcutions in this page.
  • Paytack Test payments.
Adyen
  • Create a Adyen account Here
  • Connect to your Adyen test account
  • To create a webhook follow the instructions this page.
    In the "URL" field enter https://example.com/checkout/webhook (replace example.com with your domain name).
    In the "Method" field select JSON.
    In Additional Settings > HMAC Key (HEX Encoded), click on "Generate new HMAC key" and paste the key in your website adyen settings.
  • To generate API credentials, follow the instructions in this page
  • Copy/Paste your "API key", "Client key" and "Merchant account" in your website >> Administration >> Settings >> Payments >> Adyen
  • Test card numbers
  • To activate live mode, connect to your Adyen test account and click on "Apply for live".
Instamojo
  • Create a business Instamojo test account Here
  • Connect to your Instamojo test account
  • On the left menu click on "API & Plugins"
  • Copy/Paste your "Private API Key", "Private Auth Token" and "Private Salt" in your website >> Administration >> Settings >> Payments >> Instamojo
  • To switch to live mode, create a business Instamojo non-test account and proceed as before.
Payhere
  • Create an sanbox account from here and connect to it.
  • Under "Integration Settings" click on "Domains & Credentials"
  • Copy/Paste your marchant ID to your website Payhere settings (administration > settings > payments > Payhere)
  • Click on "Add Domain/App" button
  • Copy/Paste the Secret to your website payhere settings, enable Payhere and save the changes
Spankpay
  • Create an sanbox account from here and connect to it.
  • On the left menu, click on "Account settings"
  • Again on the left menu, click on "Developer"
  • Copy/Paste the public and secret keys to your website Spankpay settings, enable Spankpay and save the changes.
    Note that there are keys for Real mode (Production Enviroment) and for Test mode (Staging Enviroment (Testing))
  • Back to Spankpay, under "Account settings >> Developer >> Webhook", in "Callback URL" enter https://example.com/checkout/webhook (replace example.com with your domain name).
  • That's it.
Omise
  • Create an account from Here and connect to it.
  • On the left menu, under API, click on Keys
  • Copy/Paste the public and secret keys to your website > administration >> settings >> payments >> omise settings
  • Enable Omise and save the changes.
  • Test cards : https://www.omise.co/api-testing
Paymentwall
  • Create an account from Here and connect to it.
  • Once in the dashboard, on the left menu, click on "Projects" and then on "ADD NEW PROJECT"
  • In the "Web" field, enter your website URL
  • Click on "Settings"
  • Enter a name for your project
  • Enter your website url in the Project URL field
  • Select "Digital goods" for Your API
  • In "Pingback type" check "URL" box
  • In "Pingback signature version" select 2.0
  • In "Pingback URL" field enter : https://example.com/checkout/webhook (replace example.com with your domain name)
  • In "Custom Pingback parameters", create the following parameters:
    Name : reference_id - Value : REFERENCE_ID
    Name : order_id - Value : OWN
  • Copy/Paste the Project and Secret keys to your website PaymentWall settings, enable paymentwall and save the changes.
  • Return back to your paymentwall dashboard and save the newly created project.
  • Test cards : https://docs.paymentwall.com/integration/direct/brick/sandbox
Authorize.Net
  • Create a sanbox account from Here and connect to it.
  • On the left menu under 'ACCOUNT', click on 'Settings'
  • On the left menu under 'ACCOUNT', click on 'Settings'
  • Get your 'API login ID' from 'API Credentials & Keys' under "Security settings"
  • On the same page, obtain a 'New Transaction Key' and 'New Signature Key'
  • Back to Settings page under "Security settings", click on 'Manage Public Client Key' and copy the 'Client Key'
  • Paste the 'API login ID', 'Transaction Key', 'Signature Key' and 'Client Key' to your website Authorize.net settings
  • Enable Authorize.net and save the changes
  • Test cards : https://developer.authorize.net/hello_world/testing_guide.html
General settings
  • Allow guest checkout : Allow users to checkout without being logged in.
  • Enable « Pay What You Want » : Make it possible for users buyers to pay a custom price for what they want to buy with an optional minimum amount based onthe selected payment service. It can be enabled either for only products or only subscriptions or both.
  • Currency exchange API : An API to get echanges rate for the foreign allowed currencies.

Files Hosts

Wasabi
  • Create an account Here
  • Connect to your account https://console.wasabisys.com/#/login
  • Click on "Create bucket" blue button
  • Give your bucket a name
  • Select a region
  • Click on next, next and on 'Create bucket'
  • Copy/Paste the bucket name and the region name to your website Wasabi settings
  • Back to Wasabi, on the left menu, click on 'Access keys'
  • Click on 'CREATE NEW ACCESS KEY' blue button
  • Select 'root user' and click on 'Create'
  • Copy/Paste the Access Key and Secret Key to your website wasabi settings
  • In your website wasabi settings, click on 'Test connection' to check if the entered data is ok, you will get a 'success' response if the connection is established, otherwise, you'll get an error message.
  • Enable Wasabi and save the changes.
Amazon S3
  • Create an account Here
  • Connect to your account as root user
  • From "All services" underer 'Security, Identity, & Compliance', click on "IAM"
  • On the right menu under 'Quick links' click on 'My access key'
  • In 'Access keys (access key ID and secret access key)' tab, click on 'Create New Access Key'
  • Paste the keys to your website Amazon S3 settings
  • Back to amazon dashboard, in the top menu >> Services, click on 'S3' (under Storage)
  • Click on 'Create bucket' orange button
  • Give your Bucket a name
  • Select an AWS Region
  • Paste the Bucket name and the region name (just the last hyphened name, e.g : us-west-2) to your website amazon settings
  • Back to amazon website, click on 'Create bucket' to complete the creation
  • In your website amazon settings, leave the version unchanged (latest) and check if the connection is success, if it's ok then enable amazon S3 and save the changes.
Yandex disk
  • Login to Yandex Disk https://disk.yandex.com/
  • Access https://oauth.yandex.ru/
  • Click on 'Register a new app'
  • Enter a name for your application
  • A brief description for your application
  • An Icon for your application
  • A Link to your website
  • In 'Platform' select 'Web services'
  • In 'Callback URI #1:' enter https://example.com/admin/settings/files_host (where example.com is your domain name)
    You can add multiple callbacks, like with www and without www ...
  • In 'Access*' click on 'Yandex.Disc REST API' and check all the choices
  • Scroll down to the bottom of the page and click on 'Create an app'
  • Copy/Paste the ID and the password to your website yandex disk settings
  • Save the changes
  • In your website yandex disk settings, click on 'Connect account' to connect one of your yandex disk account to your website.
  • Once the connection is done, a refresh token will be put in 'Refresh token' automatically.
  • Enable Yandex disk and save the changes again
Google drive
  • Login to Google Console API Here with your prefered gmail acccount
  • Click on "Select a project" at the top left corner and select or create a new project in the popup window
  • At the top, click on "ENABLE APIS AND SERVICES"
  • Search for "Google Drive API", select it and then click on "ENABLE" (the blue button)
  • On the left menu, click on "Credentials" and then on 'CREATE CREDENTIALS' and select 'API key'
  • Copy/Paste the API key in the popup into your "File Hosts Google Drive" settings in your website and close the popup window.
  • Give a name (required) and a logo (optional) to your application, put your website's domain name in "Authorised domains" field (required), your website's privacy policy page's link into "Application Privacy Policy link" and the same for "Terms of Service" (required).
    Note: the "Privacy policy" and "Terms of Service" page are by default in "http(s)://your_domain_name.tld/page/privacy-policy" and "http(s)://your_domain_name.abc/page/terms-and-conditions"
  • In 'Authorised domains' enter your domain name. E.g; 'example.com' (no https no www)
  • in 'Developer contact information' enter your email address (any email address)
  • Click on "SAVE AND CONTINUE" and again on "SAVE AND CONTINUE" and again on "SAVE AND CONTINUE"
  • You can click on 'Back to dashboard' to complete the creation or on 'Prepare for verification'
  • On the left menu, click on "Credentials" and then on "Create credentials" and select "OAuth Client ID"
  • On "Application type" select "Web application"
  • In "Authorised redirect URIs" put "http://your_domain.name.tld/login/google/callback" hit Enter to validate and then put another one "http://your_domain.name.tld/gd_callback"
    Note: you can use http or https depending on whether your website under a secure protocol or not, and, with "www." or not.
  • In "Authorized JavaScript origins" put "http://your_domain.name.tld" (as said above, with https / http, www. or not or all the possibilities if you want to)
  • Once finished, click on "Save", you will get a "Client ID" and "Client secret" (the client secret corresponds to the "Secret ID" in your website settings)
  • Copy/Paste those two IDs in their respective fields in your website / settings / file hosts /google drive (close the popup "OK")
  • Save the changes in your website and thereafter click on "Connect" and select the account corresponding to your google drive (you can switch to another one later if you want to)
  • Once accepted and agreed to your Google Console APP conditions, you will get a refresh token, enable "Google Drive" in your website if you want and save the changes.
    Note: you will probably get a "This app isn't verified" warning message while trying to connect your account with your app, just click on "Advanced" (a grey underlined text) and click on "Go to ... (unsafe)"
    Click on "Allow" to give your "Google Console APP" the authorisation to use your google drive (see, edit, create and delete files in your google drive) and again click on "Allow"
Dropbox
  • Login to your Dropbox developers Here with your prefered email
  • Once in, click on "Create app"
  • Select "Dropbox API"
  • Select whether you want to get files only from the app folder all dropbox.
  • Give a name to your application, it's going to be your App folder's name, so, if you've choosen "App Folder" above, your requests to dropbox will be limited to this folder, else, to your whole dropbox.
  • Click on "Create app"
  • Once done, your App Key and APP Secret will be on the given page, copy/pase them into their respective fields in your website / settings / file hosts / dropbox, and save the changes (Update)
  • For the "Redirect URIs", put "https://your_domain_name.tld/admin/settings/files_host" and click on "Add" (https is required)
  • If you want this app this be uesd by different accounts, click on "Enable additional user" at the top of the page, by that, your app will be allowed to be used by 500 users (accounts) as max.
  • Back to you website /settings / file hosts / dropbox, click on "Connect", connect with the dropbox accont you want to use, click on "Continue" and then "Allow", you will be redirected to your website with an "access token" place in its place for dropbox.
  • Enable Dropbox if you want, save the change and that's it.

Social login

Facebook
  • Create a Facebook account (if you don't have one)
  • Login to Facebook Developers Here
  • From "My Apps" dropdown menu, select "Create App"
  • Give a name to your App and a contact email and then click on "Create App ID"
  • In "Add a Product" click on "Set up" for "Facebook Login" product
  • In the left menu, under "Facebook Login" click on "Settings"
  • In "Valid OAuth Redirect URIs" put "https://your_domain_name.tld/login/facebook/callback"
  • In the left menu, click on "Settings" and then "Basic"
  • In "App Domains" enter your domain name with and without www. (withour http)
    e.g. your_domain_name.tld and www.your_domain_name.tld
  • In "Privacy Policy URL" put http(s)://your_domain_name.tld/page/privacy-policy
  • In "Terms of Service URL" put http(s)://your_domain_name.tld/page/terms-and-conditions
  • In "Category" select which category your website's activity belongs to
  • The Client ID and Secret ID are at the top of the page (Settings / Basic), copy/paste them to their places in your website / settings / social login / facebook
VKontacte
  • Create a VK account (if you don't have one)
  • Login to VK Dev Here
  • At the top menu, click on "My Apps"
  • Click on "Create app"
  • Give your app a title
  • On "Platform" select "Website"
  • In "Website address" and "Base domain" entre respectively "http(s)://your_domain_name.tld", "your_domain_name.tld"
  • Thereafter, click on "Connect website"
  • In "Terms and Conditions" write "http(s)://your_domain_name.tld/page/terms-and-conditions"
  • In "Privacy Policy" write "http(s)://your_domain_name.tld/page/privacy-policy"
  • In "Screenshots" Upload an image for your application if you want to
  • On the left menu, click on "Settings"
  • Scroll down to "Authorized redirect URI" end enter "http(s)://your_domain_name.tld/login/vkontakte/callback"
  • In "Website focus" select your website activity
  • The "App ID" at the top serves as "Client ID" and "Secure key" as "Secret ID" for your VKontacte login settings
  • That's it, don't forget to enable it and save the changes.
Linkedin
  • Create a Linkedin account (if you don't have one)
  • Login to Linkedin developpers Here
  • On "My Apps" dropdown menu, select "Create app"
  • Enter a name for your app, a company name
  • In "Privacy policy" put "http(s)://your_domain_name.tld/page/privacy-policy"
  • Upload a logo for your linkedin app
  • For "Products" leave everything as is
  • Accept the "Legal terms" and hit "Create" button
  • Once done, from the previous dropdown menu (My Apps), select the App you've just created
  • Select "Auth" on the top menu, scroll down to "Redirect URLs:" and put in "http(s)://your_domain_name.tld/login/linkedin/callback"
  • At the top of the same page, you have your Client ID and Secret ID shown as 'Client Secret' for your Linkedin app
  • Copy/Paste those to IDs to their respective fields in your website / settings / social login / Linkedin
Twitter
  • Create a twitter account (if you don't have one)
  • Login to Twitter Developper website Here
  • On the dropdown menu (the one with your name), select "Apps" and then click on "Create an app"
  • Enter a name, a description for your application, your website's url (https://your_domain_name.tld), check the "Enable Sign in with Twitter" checkbox
  • In "Callback URLs", enter "https://your_domain_name.tld/login/twitter/callback"
  • In "Terms of Service URL", enter "https://your_domain_name.tld/page/terms-and-conditions"
  • In "Tell us how this app will be used", tell them you want to allow users to login to website with their twitter accounts and for that you will need their usernames, emails and optionally their avatars (no tweets, no contacts, not anything else).
  • Click on "Create" to complete the process
    You will need to wait for sometime for Twitter dev Team to review your request.
  • Once your request is validated, login to twitter developers / Apps / Your application (the place your were in before)
  • Click on "Keys and tokens"
  • In "Consumer API keys", the (API key) corresponds to your twitter Client ID and (API secret key) to your twitter Secret ID
  • Copy/Paste those two IDs to their places in your website / settings / social login / twitter
Github
  • Create a github account (if you don't have one)
  • Login to your github account
  • on the profile dropdown menu, select "Settings"
  • On the left menu, select "Developers settings" (the last option in the menu)
  • On the left menu, click on "OAuth Apps" and then "New OAuth APp"
  • Enter a name for yout application and a description
  • For "Homepage URL" enter your website's url (https://your_domain_name.tld)
  • For "Authorization callback URL" enter "https://your_domain_name.tld/login/github/callback", once finished, click on "Register application"
  • Click on the application you've just created, you'll see your Client ID and Secret ID, (you can upload a logo for your github application if you want to)
  • Copy/paste the Client ID and Secret ID to their respective fields in your website (settings / social login / github)
Google

You can either use the credentials you got from "Files Hosts" step (Client ID and Secret ID for google drive) or create other Credentials with another gmail account followwing the same steps mentionned in "Files Hosts" for google drive but without enabling "Google Drive API", because it's not necessary, just Credentials for "OAuth Client ID" and the "OAuth Consent Screen".

Search engines

Site verification

Google

  • Connect to Google Webmaster Here
  • In "Domain", enter your domain name "your_domain_name.tld" (without http) and click on "Continue"
  • In the windows that shows up, copy the "google-site-verification" value, just the code after "=" sign
    e.g. google-site-verification=THE_CODE_HERE
  • Paste it in your website / settings / search engines / Site verification / Google and save the changes (update)
  • Back to google webmaster page, click on "Verify" to complete the verification

Bing

  • Connect to Bing Webmaster Here
  • In "Add a Site" under My Sites", enter your website's url "http(s)://your_domain_name.tld" and click on "Add"
  • Next, copy the content value in '<meta name="msvalidate.01" content="THIS_ONE" />'
  • Paste it in your website / settings / search engines / Site verification / Bing
  • Back to Bing webmaster, click on "Verify" (the one under "Copy and paste a <meta> tag in your default webpage") to complete the verification

Yandex

  • Connect to Yandex Webmaster Here
  • Click on your profile and then "Settings"
  • At the top menu, click on the "+" sign beside "Select site"
  • Click on "Confirm" or close the popup that shows up
  • In "Site address", enter your website url "http(s)://your_domain_name.tld" and hit "Add" button
  • Once done, select the content's value '<meta name="yandex-verification" content="THIS_ONE" />'
  • Copy/Paste this value in your website / settings / search engines / Site verification / Yandex
Analytics
Robots

Advertisment

Popup, Banners, Auto-ad and Responsive ad
  • 728x90 banners get automatically changed to their smaller size if they exist, based on the device screen (728x90 > 468x60 > 300x250)
  • Ads are loaded via a php function : {!! place_ad($name) !!} where $name can be one of the following values (responsive_ad or auto_ad or ad_728x90 or ad_468x60 or ad_300x250 or ad_320x100 or popup_ad)
  • The template files can be found in "/resources/views/front", in their corresponding template folders.
  • An example on how to use the ad function {!! place_ad($name) !!}
    ads-php-func-example

Chat

Twak.to
  • Create an account at https://www.tawk.to/
  • Select your language and click "Next Create Propery"
  • Enter your website name, your website URL and a name for the chatbox and click Next
  • Click Next Install Widget
  • Copy/Paste the code shown below from the given script code to your website settings >> chat >> Tawk.to >> Property ID
  • Enable Tawk.to and save the changes
Getgist.com
  • Create an account at https://getgist.com/
  • Select 'continue with the free plan'
  • Click on Install for 'Install Javascript Tracking Code' option
  • Copy/Paste "Your Workspace ID" at the bottom of the page to your website settings >> chat >> Getgist.com >> Workspace ID
  • Enable Getgist.com and save the changes
Other chat service
  • Get the code from your chat & messaging service
  • Copy/Paste it to your websiet admin >> settigns chat >> Other
  • Enable the service and save the changes.

Note: You can enable only one service at a time.

Captcha

Google reCaptcha
  • Connect to Google reCaptcha with one of your google accounts
  • Enter a label
  • Select reCAPTCHA v2 and then "I'm not a robot" Checkbox
  • Accept the reCAPTCHA Terms of Service
  • Click on Submit
  • Copy/Paste the site and secret keys to your website >> admin >> settigns >> catpcha >> google recatpcha
Mewebstudio Captcha
  • Lenght : the number of characters in the captcha
  • Image with and height and quality of the captcha

Translations

Add a translation / language
  • Select a language
  • Translate the value on the left side to your language on the right side without changing or translating the red parameters.
  • If a text is missing, you can add it from the form at the bottom of the page.
  • Once you finish the translation for all the texts, save the changes
  • Open Settings >> General and add the newly translated language to your website supported languages. It's also possible to have only one language.

Products Licenses

General

  • Products licenses are created by product type
  • A license marked as regular is the one that will be used to show the item price in the homepage, products page and single product page.
  • Each product can have multiple licenses with their corresponding prices and promo prices in the product form (Add / Edit product).

Products

General
  • Products are divided into 5 types, audios, videos, graphics, ebooks and - for the rest.
  • The "quantity in stock" field, if used, will mark your product as 'Out of stock' once the value is 0. You can also put a zero to make the product out of stock manually. The value decrements automatically based on purchases.
  • Again with the stock, if your product is based on some CD keys or Accounts then the stock this time will be depending on the number of CD keys or Accounts not on the the number in "quantity in stock" field.
  • With 'Available via subscription only' option, you can make a product accessible only via subscriptions, it cannot be purchased individually.
  • Filtering products per country and city needs to be enabled first from the Administration >> Settings >> General, after that, you will have a country and city fields on the product form (during the creation or edition), and, a dropdown list on the products page (for users) to filter the procuts by country / city.
  • The product preview file can be an audio, an ebook, a video, a PDF, a zip file or anything else.
  • The main file must be an archive, preferably a zip file, wheither for images, audio, videos, folder ... it's always an archive.
  • The product price differs depending on the created/available licenses and each license may have a promo price with an optional limited time.
  • You can add more fields to your products if needed, uding a form in 'Additional fields' tab.
  • Products are divided into 5 types, audios, videos, graphics, ebooks and - for the rest.
  • You can create a table of contents for your ebooks :

Coupons

General
  • Value

    The value can be either monatary or percentage by setting the "Is percentage" option to Yes ot No.

  • Products (required if "Subscriptions" is empty)

    The products to which you want to authorize the coupon.

  • Subscriptions (required if "Subscriptions" is empty)

    The subscriptions plans to which you want to authorize the coupon.

  • Users

    Users who can use the coupon. If left empty, all users can use the coupon.

  • Valid for regular licenses only

    Make a coupon usable only with products with regular license on the cart.

  • Allow one time use per user

    If enabled (Yes), the coupon can be used only one time by the same user.

Note : 100% Off coupon zerofies/nullifies the item's price to 0, once this concerned item is purchased, it's added to the purchased items of the user/buyer.

CD keys, Accounts, Licenses ...

General
  • You can create cd keys, accounts ... one by one or importe a file of keys to make a bluk creation.
  • The separator indicates how your keys are listed in the file.

Transactions

General
  • Transactions can be marked as refunded, the refund is done then from your payment service account (PayPal, Stripe, ...).
  • If a transaction is marked as refunded or not-paid, the buyer will lose access to the items of the transaction..
  • The details about any transaction can be seen from "Actions / Details" in the transactions list.
  • A "N-A" payment processor is used when a transaction contains only free items, user/buyer doesn't have to go through the normal payment process to complete a free-purchase.

Payment link

Creating a payment link

  • You can create payment links with the following payment services : PayPal, Razorpay, Iyzico, Coingate, Midtrans, Paystack, Adyen, Instamojo, Paymentwall.
  • It is possible to assign a custom price other than the total amount
  • It is possible to assign a custom exchange rate, it will be used instead of the one from the API

Newsletter

Create newsletter
  • You can select specific emails (subscribers) to which you want to send the newsletter, or, leave the emails field empty to send it to all subscribers.
  • The subject field is mandatory
  • For the newsletter's body, you can either use the html editor and write you own newsletter, or, use the selections to prepare your newsletter.
    The search product field (dropdown list) is based on a search that returns 5 results so you don't load 1k items or more at once.
  • You can preview the newsletter before you send it.

Newsletter

FAQs
  • FAQs are shown in Support page.

Support Messages

FAQs
  • Messages sent by users/visitors through the support form (in Support page).
  • You can reply to them via "Actions / Reply"
  • If you did specify a "reply to" email address in "Settings / Mailer / Mail" then if the user/visitor decide to response back to your message, his/her message will be sent to this email address which may be different than the one you contacted him with.

Validate licenses (Form & REST API)

How it works
  • You can validate license keys via the form in your website >> "Administration" >> "Validate licenses", on the left menu, you only need to enter the license key you want to validate and submit it.
  • You can also validate license keys via a REST API which requires an bearer token and a license key to validate. Example showing how to do that and your bearer token can be found in the same page mentioned previously (your website >> "Administration" >> "Validate licenses")

Sitemap

Generating sitemap files
  • Sitemaps are generated, created and updated automatically from the admin area and put in your website root under the following names (posts.xml, products.xml and pages.xml).
  • You can access them via "http(s)://your_domain_name.tld/{sitemap_name}" where {sitemap_name} is one of the three names mentioned above.
  • In case a file get corrupted just delete it from your website's root and get to the administration in your website and then to the items list of the concerned sitemap file (posts, products, pages), it will be recreated automatically.

Assets

CSS Files
  • Administration
    public/assets/admin/app-ltr.css | app-rtl.css
  • Non-Administration Tendra template
    public/assets/front/tendra-ltr.css | tendra-rtl.css
  • Non-Administration Valexa template
    public/assets/front/valexa-ltr.css | valexa-rtl.css
  • Non-Administration Default template
    public/assets/front/default-ltr.css | default-rtl.css

Note

CSS files result from compiled scss files that can be found at "/resources/sass" folder.

You can read more about Laravel mix Here

Javascript Files
  • Administration
    public/assets/admin/app.js
  • Non-Administration Tendra template
    public/assets/front/tendra.js
  • Non-Administration Valexa template
    public/assets/front/valexa.js
  • Non-Administration Default template
    public/assets/front/default.js

3.0.0 Upgrade

  • Before you proceed to the upgrade, please check the payment services you are using to see if a webhook is required or not. Webhooks have just been used in this version.
  • Again, before you proceed to the upgrade, i highly recommend you to create a backup for your website, both script and database, and, i highly recommend you to apply the upgrade in a copy of your script+database to avoid any problem, if the upgrade is done correctly then execute it on your original script+database.

    If your website is at an insignificant stage (you have not started yet), you can omit the recommendation above and execute the upgrade directly or remove your old script + drop your database tables and launch a new installation with the new version.
  • Installation steps :
  • Move "upgrade" folder from the extracted zip file to your website document root ("/public" folder)
  • Move "Script" folder from the extracted zip file to "/upgrade/releases/2.0.1/" (where you have an empty file named 'PLACE_THE_SCRIPT_FOLDER_HERE')
  • Access the upgrade folder via the address bar (e.g. https://example.com/upgrade)
  • The old versions should be disabled and the new one have a Yellow button to execute the upgrade. If you see 2.0.1 enabled, just ignore it and install 3.0.0 directly.
  • Click on "Execute" to install the new update.
  • Once the upgrade is done, you will be redirected back to the available upgrades page, but, this time the latest one will be disabled also.
  • Click on "Home" in the top menu to go back to your website home page.
  • Remove the "upgrade" folder from your Document root ("/public" folder).

Note : If you face any error during or after the installation, please send me the error log file that you will find in "storage/logs" folder, you can send it to contact@codemayer.net

To faster the processes, you can attach your FTP credentials to the log file.