Shopify
Shopify app for USDT/USDC blockchain payment monitoring. Self-hosted Express.js app that integrates PayzCore with your Shopify store for stablecoin checkout.
Shopify Integration
The PayzCore Shopify app adds USDT/USDC blockchain monitoring as a payment method for your Shopify store. It's a self-hosted Express.js application that handles the Shopify OAuth flow and payment processing via PayzCore API.
- Source: github.com/payzcore/shopify
- Requirements: Shopify store, PayzCore account, Node.js 18+ server
How It Works
- Customer selects "Pay with USDT/USDC" at Shopify checkout.
- Redirected to your hosted PayzCore app (Express.js).
- App calls the PayzCore API and shows the wallet address, QR code, and amount.
- Customer sends stablecoins from their wallet.
- PayzCore sends a webhook to your app.
- App marks the Shopify order as paid via the Shopify API.
- Customer is redirected back to the Shopify confirmation page.
Architecture
Unlike WooCommerce/WHMCS plugins that run inside the platform, the Shopify app is a separate Express.js server you host yourself. It acts as a bridge between Shopify and PayzCore.
| Component | Role |
|---|---|
| Shopify Store | Customer-facing storefront, sends orders to your app |
| Your Hosted App (Express.js) | Bridge between Shopify and PayzCore. Handles OAuth, payment pages, and webhooks |
| PayzCore API | Monitors blockchain, sends payment status webhooks |
Installation
1. Create a Shopify Custom App
- In Shopify admin: Settings > Apps and sales channels > Develop apps
- Create a new app
- Configure app scopes:
read_orders,write_orders,read_products - Note your API Key and API Secret
2. Deploy the App
Clone and deploy the Express.js app to your server:
git clone https://github.com/payzcore/shopify.git
cd shopify
npm installSet environment variables on your hosting platform:
| Variable | Description |
|---|---|
SHOPIFY_API_KEY | Your Shopify app API key |
SHOPIFY_API_SECRET | Your Shopify app API secret |
PAYZCORE_API_KEY | Your PayzCore project API key (pk_live_...) |
PAYZCORE_WEBHOOK_SECRET | Your PayzCore webhook secret (whsec_...) |
APP_URL | Your app's public URL (e.g., https://pay.yourstore.com) |
The app calls GET /api/v1/config on startup to auto-detect available chains and tokens from your connected wallet. There is no need to set chain or token environment variables — the configuration is discovered automatically from the PayzCore API.
Hosting options: Any Node.js hosting works — Railway, Render, VPS, Docker, etc.
3. Install on Your Store
- Navigate to
https://your-app-url.com/auth?shop=yourstore.myshopify.com - Authorize the app
- The app registers itself as a payment method
4. Configure Webhook URL
In your PayzCore dashboard, set the webhook URL to:
https://your-app-url.com/webhooks/payzcoreSecurity
The app performs multiple layers of verification:
| Check | Purpose |
|---|---|
| Shopify HMAC | Verifies requests come from Shopify (not spoofed) |
| PayzCore signature | Verifies webhooks come from PayzCore |
| Order amount match | Ensures payment amount matches Shopify order total |
| Nonce validation | Prevents replay attacks during OAuth |
Order Status Mapping
| PayzCore Event | Shopify Action |
|---|---|
payment.completed | Order marked as paid |
payment.overpaid | Order marked as paid (note added) |
payment.partial | Order stays pending |
payment.expired | Order cancelled |
Troubleshooting
Payment method not appearing
- Ensure the app is properly installed and authorized
- Check that the app URL is accessible from the internet
- Verify environment variables are set correctly
Webhooks not received
- Confirm the webhook URL in PayzCore dashboard points to your app
- Check your app server logs for incoming requests
- Verify the app is running and accessible
OAuth errors
- Ensure
SHOPIFY_API_KEYandSHOPIFY_API_SECRETmatch your Shopify app credentials - Verify
APP_URLmatches the actual URL where the app is hosted