⭐Automatic Store 🛒

⭐ This plugin is private! Can be purchased on our Discord Marketplace.

It is used to create an automated store on your Discord server with integrated PayPal payments. Use it to sell VIP memberships, credits, special Discord roles, and much more. Our solution works just like the Marketplace on the SourceFactory Discord and offers you unlimited product creation possibilities. â€ĸ After an order is paid, you can automatically perform the following actions:

  1. Send commands to your CS2 server

  2. Assign a special discord roles to the user

  3. Execute any SQL command to your MySQL database

The plugin includes extensive configuration options, allowing you to set up products for individual servers (up to 25 products per CS2 server), customize embed messages, and much more.

Config Preview
{
  "Response Server": false,
  "Live Mode": false,
  "Currency": "EUR",
  "Allow Unlinked Users To Create Orders": false,
  "Database Connection": {
    "Host": "",
    "Port": 3306,
    "User": "",
    "Database": "",
    "Password": ""
  },
  "PayPal Account": {
    "Name": "Name",
    "Surname": "Surname",
    "Email": "Email",
    "Client ID": "",
    "Secret": ""
  },
  "Invoice Data": {
    "Note": "After paying for your order, you will receive your VIP benefits within 5 minutes! If there is any problem, please contact us.",
    "Term": "No refunds.",
    "Tax ID": "",
    "Website": "https://sourcefactory.eu",
    "Logo URL": "https://i.imgur.com/P8SYw0H.png",
    "Invoice Lifetime": 120
  },
  "Servers List": [
    "Public",
    "Only Mirage"
  ],
  "Actual Server": "Public",
  "Messages List": {
    "1": {
      "Embed": {
        "Content": "",
        "Title": "Public Server \u2022 Store",
        "Description": "\u003E Buy VIP on our Public server using the PayPal payment gateway! After completing the payment, VIP will be added to you within 5 minutes!",
        "Thumbnail": "",
        "Image": "",
        "HEXColor": "#99ff33",
        "Footer": "",
        "FooterTimestamp": false
      },
      "Products": [
        {
          "Name": "VIP 1 Month - Public",
          "Price": 9.99,
          "CommandsAfterPurcharse": [
            {
              "Key": "Public",
              "Value": "say {USERNAME} ({STEAMID}) purchased VIP for 1 month!"
            },
            {
              "Key": "Public",
              "Value": "css_addvip {STEAMID}"
            }
          ],
          "RolesAfterPurcharse": [
            "YOUR_ROLE_ID",
            "YOUR_ROLE_ID2"
          ],
          "SQLCommandAfterPurcharse": "",
          "Button": {
            "Text": "Buy VIP (1 Month) - 9.99\u20AC",
            "Color": 2,
            "Emoji": ":euro:"
          }
        },
        {
          "Name": "VIP 3 Months - Public",
          "Price": 15.99,
          "CommandsAfterPurcharse": [
            {
              "Key": "Public",
              "Value": "say {USERNAME} ({STEAMID}) purchased VIP for 1 month!"
            },
            {
              "Key": "Public",
              "Value": "css_addvip {STEAMID}"
            }
          ],
          "RolesAfterPurcharse": [],
          "SQLCommandAfterPurcharse": "",
          "Button": {
            "Text": "Buy VIP (3 Months) - 15.99\u20AC",
            "Color": 3,
            "Emoji": ":euro:"
          }
        }
      ]
    },
    "2": {
      "Embed": {
        "Content": "",
        "Title": "",
        "Description": "",
        "Thumbnail": "",
        "Image": "",
        "HEXColor": "#99ff33",
        "Footer": "",
        "FooterTimestamp": false
      },
      "Products": [
        {
          "Name": "100 Credits - Only Mirage",
          "Price": 4.99,
          "CommandsAfterPurcharse": [
            {
              "Key": "Only Mirage",
              "Value": "say {USERNAME} ({STEAMID}) purchased 100 credits!"
            },
            {
              "Key": "Only Mirage",
              "Value": "css_addcredits {STEAMID} 100"
            }
          ],
          "RolesAfterPurcharse": [
            "YOUR_ROLE_ID",
            "YOUR_ROLE_ID2"
          ],
          "SQLCommandAfterPurcharse": "",
          "Button": {
            "Text": "Buy 100 Credits - 4.99\u20AC",
            "Color": 2,
            "Emoji": ":moneybag:"
          }
        },
        {
          "Name": "200 Credits - Only Mirage",
          "Price": 9.99,
          "CommandsAfterPurcharse": [
            {
              "Key": "Only Mirage",
              "Value": "say {USERNAME} ({STEAMID}) purchased 200 credits!"
            },
            {
              "Key": "Only Mirage",
              "Value": "css_addcredits {STEAMID} 200"
            }
          ],
          "RolesAfterPurcharse": [],
          "SQLCommandAfterPurcharse": "",
          "Button": {
            "Text": "Buy 200 Credits - 9.99\u20AC",
            "Color": 3,
            "Emoji": ":moneybag:"
          }
        }
      ]
    }
  },
  "Log Messages": {
    "When Order Created": true,
    "When Order Cancelled": true,
    "When Order Expired": true,
    "When Order Paid": true
  },
  "Response Embeds": {
    "Confirm Purchase": {
      "Content": "",
      "Title": "",
      "Description": "\u003E Please confirm the creation of an order for product \u0060{PRODUCT}\u0060\n\u003E -# SteamID: \u0060{STEAMID}\u0060",
      "Fields": "",
      "Thumbnail": "",
      "Image": "",
      "HEX Color": "#00ffcc",
      "Footer": "",
      "Footer Timestamp": false,
      "Confirm Order Button": {
        "Button Text": "Create an order ({PRICE}\u20AC)",
        "Button Color": 3,
        "Button Emoji": ":shopping_cart:"
      },
      "Edit SteamID Button": {
        "Enabled": true,
        "Button Text": "Edit the SteamID",
        "Button Color": 1,
        "Button Emoji": ":pencil:",
        "Modal": {
          "Modal Name": "Insert Steam ID",
          "Value Label": "Which SteamID do you want to create an order on?"
        }
      }
    },
    "Order Created": {
      "Content": "",
      "Title": "The order has been created!",
      "Description": "\u003E Product: \u0060{PRODUCT}\u0060\n\u003E Price: \u0060{PRICE}\u20AC\u0060\n\u003E Order Expiration: \u0060{EXPIRATION}\u0060\n\n\u003E After payment, the purchased product will be activated within 5 minutes!",
      "Fields": "",
      "Thumbnail": "",
      "Image": "",
      "HEX Color": "#ff9933",
      "Footer": "If you have any problems with your order, please contact us via ticket",
      "Footer Timestamp": false,
      "Checkout Button": {
        "Button Text": "Checkout",
        "Button Emoji": ""
      },
      "Cancel Order Button": {
        "Button Text": "Cancel order",
        "Button Color": 4,
        "Button Emoji": ":heavy_multiplication_x:"
      }
    },
    "Order Sent": {
      "Content": "",
      "Title": "",
      "Description": "\u003E Your order has been created! Checkout URL has been sent to direct message.",
      "Fields": "",
      "Thumbnail": "",
      "Image": "",
      "HEX Color": "#00ccff",
      "Footer": "",
      "Footer Timestamp": false
    },
    "Order Paid": {
      "Content": "",
      "Title": "",
      "Description": "\u003E Thank you for your purchase! :heart:\n\u003E Your purchased \u0060{PRODUCT}\u0060 product has been successfully activated!",
      "Fields": "",
      "Thumbnail": "",
      "Image": "",
      "HEX Color": "#ffdb4d",
      "Footer": "",
      "Footer Timestamp": false
    },
    "Order Cancelled": {
      "Content": "",
      "Title": "",
      "Description": "\u003E Your order for product \u0060{PRODUCT}\u0060 has been cancelled.",
      "Fields": "",
      "Thumbnail": "",
      "Image": "",
      "HEX Color": "#ff0066",
      "Footer": "",
      "Footer Timestamp": false
    },
    "Order Failed": {
      "Content": "",
      "Title": "",
      "Description": "\u003E Could not create an order, you probably have private messages disabled!",
      "Fields": "",
      "Thumbnail": "",
      "Image": "",
      "HEX Color": "#ff3333",
      "Footer": "",
      "Footer Timestamp": false
    },
    "Order Already Created": {
      "Content": "",
      "Title": "",
      "Description": "\u003E You have already created an order for product **{PRODUCT}**",
      "Fields": "",
      "Thumbnail": "",
      "Image": "",
      "HEX Color": "#ff4d4d",
      "Footer": "",
      "Footer Timestamp": false
    },
    "Not Linked": {
      "Content": "",
      "Title": "",
      "Description": "\u003E You can\u0027t create an order because you don\u0027t have your Discord account linked to your Steam profile!",
      "Fields": "",
      "Thumbnail": "",
      "Image": "",
      "HEX Color": "#ff4d4d",
      "Footer": "",
      "Footer Timestamp": false
    },
    "Invalid SteamID Format": {
      "Content": "",
      "Title": "",
      "Description": "\u003E The SteamID \u0060{STEAMID}\u0060 is in invalid format!",
      "Fields": "",
      "Thumbnail": "",
      "Image": "",
      "HEX Color": "#ff4d4d",
      "Footer": "",
      "Footer Timestamp": false
    }
  },
  "ConfigVersion": 1
}
Images

Main Configuration

PropertyValue

Response Server

Determines which server creates replies to messages, PayPal orders, checks, etc.. Only one server can have Response server enabled! ( true / false )

Live Mode

If PayPal Live Mode will be enabled (If this value is false, Sandbox mode will be used) What's the Live and Sandbox mode

Currency

Allow Unlinked Users To Create Orders

If unlinked users can create orders, if this feature is enabled, they must enter SteamID64 when creating an order ( true / false )

PayPal Account

PropertyValue

Name

Your name

Surname

Your surname

Email

Email of your PayPal account

Client ID

Client ID of your PayPal account (If Live Mode is enabled use Live Client ID otherwise use Sandbox Client ID) How to get a PayPal Client ID & Secret

Secret

Secret of your PayPal account (If Live Mode is enabled use Live Secret otherwise use Sandbox Secret How to get a PayPal Client ID & Secret

Invoice Data

PropertyValue

Invoice Lifetime

Lifetime of the created order/invoice (minutes)

Note

--->

Term

------>

Tax ID

---------> Invoice Details (Can be empty)

Website

------>

Logo URL

--->

Servers Data

PropertyValue

Servers List

List the name of all your servers (All servers must have the same list of servers!)

Actual Server

The name of the current server from your Servers List (Each server must have its own server name set from the Servers List)

Messages List

Used to create embed messages and products (This means that each message has its own products)

PropertySection PropertyValue

Embed Section

------------->

What the embed message will look like

Products Section

------------->

List of all products for actual message

Name

Name of the product

Price

Price of the product

CommandsAfterPurcharse

List of commands that will be sent to the server. Key > Means the name of the server from the Servers List Value > The exact command that will be sent

RolesAfterPurcharse

List the Role IDs that will be assigned to the user

SQLCommandAfterPurcharse

SQL command that will be sent to your MySQL database

Button

What the button will look like

How to send an embed message with products

  • In the server console, type: css_du_storemessage <message> <channel_id>

- Message means: Message ID from Messages List

To edit the embeds, follow the instructions: Custom Embeds Format

Available Variables

â€ĸ {PRODUCT} > Name of the product â€ĸ {PRICE} > Price of the product â€ĸ {INVOICEID} > Invoice ID â€ĸ {USERNAME} > Discord Name of the user who created the order â€ĸ {USERID} > Discord ID of the user who created the order â€ĸ {STEAMID} > SteamID64 of the user who created the order

Last updated