
WooCommerce & Shopify Integration for Minecraft Servers
Tebex-like self-hosted shop plugin for Paper 1.21 — sell ranks, items, and packages directly through your WooCommerce or Shopify store with Stripe payments, without high fees or third-party lock-in.
MineCommerce connects your store and your Minecraft server:
/minecommerce link <code>)mappings.yml)Download the latest MineCommerce.jar.
Drop into your server’s plugins/ folder.
Restart the server to generate configs:
config.ymlmappings.ymlminecommerce.db (if SQLite)config.ymlserver:
http_enabled: true
http_port: 8443
webhook_secret: "CHANGE_ME"
store_url: "https://example.com/store"
platform: woocommerce # generic|woocommerce|shopify
link_template: ""
delivery:
retry_attempts: 5
retry_backoff_seconds: 60
link:
code_length: 6
code_ttl_seconds: 900
security:
verify_ssl: true
max_webhook_age_seconds: 600
database:
type: sqlite
sqlite:
path: minecommerce.db
mysql:
host: 127.0.0.1
port: 3306
user: minecommerce
password: secret_password
database: minecommerce
ssl: true
postgres:
host: 127.0.0.1
port: 5432
user: minecommerce
password: secret_password
database: minecommerce
ssl: true
woocommerce:
base_url: "https://yourstore.example"
consumer_key: "ck_..."
consumer_secret: "cs_..."
shopify:
shop: "your-shop"
api_version: "2024-07"
access_token: "shpat_..."
sync:
enabled: true
schedule_minutes: 60
mode: write_mappings
image_as_button: true
mappings.ymlLink SKUs from WooCommerce/Shopify → in-game actions.
products:
vip_30d:
name: "VIP Rank (30 days)"
icon: "EMERALD"
price: 9.99
description: "30 days of VIP access"
product_id: "123" # WooCommerce product ID
variant_id: "45678901" # Shopify variant ID
actions:
- type: permission_group
group: vip
duration_days: 30
- type: command
command: "say {player} is now a VIP!"
- type: currency
amount: 1000
categories:
featured:
name: "Featured"
icon: "GOLD_INGOT"
description: "Top picks"
skus:
- vip_30d
Actions supported: command, permission_group, currency, item.
Placeholders: {player}, {uuid}, {order_id}, {sku}.
/minecommerce admin sync
mappings.ymlConfigured via:
sync:
enabled: true
schedule_minutes: 60
POST http://<server>:<port>/api/v1/syncX-Timestamp + X-Signature (HMAC SHA256 with webhook_secret)/api/v1/webhooks/shopify{ "id": 9876543210 }
/api/v1/webhooks/woocommerce{ "resource": "product", "id": 12345 }
| Command | Permission | Description |
|---|---|---|
/store |
minecommerce.store |
Open in-game store GUI / send store link |
/minecommerce link <code> |
— | Link player to store account |
/minecommerce status |
— | Check order status |
/minecommerce admin sync |
minecommerce.admin |
Run manual sync |
/minecommerce admin deliver <id> |
minecommerce.admin |
Manually deliver order |
/minecommerce admin revoke <id> |
minecommerce.admin |
Revoke an order |
/minecommerce admin reload |
minecommerce.admin |
Reload config |
max_webhook_age_seconds)Player buys VIP (30 days) on WooCommerce/Shopify.
Store → Stripe → order completed.
Webhook → MineCommerce plugin.
Plugin looks up SKU → runs mapped actions:
vip (30d expiry).Delivery logged; retries if failure.
image_as_button: true and confirm product has images./api/v1/orders, /api/v1/refunds, /api/v1/health)plugins/MineCommerce/logs/config.yml, mappings.yml (remove secrets)