Loading...
Loading...
Docs / Plugin guide / Shopify
The Shopify integration is a self-hosted bridge between Shopify checkout and Payvra settlement. Use this page to validate the deployment model, signed webhook contract, sandbox rehearsal path, and the exact settings you switch when you promote the store to live funds.
Keep the rollout boring: install the app on HTTPS infrastructure, verify one sandbox order from checkout to paid state, then swap only the Payvra key and webhook secret when you go live.
What this guide proves
Checkout handoff
Signed delivery
Sandbox rehearsal
Operator facts
Runtime model
Checkout route
Store requirement
Live promotion
Checkout handoff
Signed delivery
Sandbox rehearsal
Create the Shopify app container
Clone the repository and install the Shopify app
plugins/shopify in the main repository. Install it in isolation and keep the deploy target pointed at that app directory.git clone https://github.com/Payvra/main-app.git payvracd payvra/plugins/shopifynpm installConfigure environment variables
# Shopify Payments App credentialsSHOPIFY_API_KEY=your_shopify_api_keySHOPIFY_API_SECRET=your_shopify_api_secretSHOPIFY_SCOPES=write_payment_gateways,write_orders,read_orders# Public URL for the app (HTTPS required)APP_URL=https://your-app.example.comPORT=3456# Payvra credentialsPAYVRA_API_KEY=sk_test_...PAYVRA_WEBHOOK_SECRET=whsec_test_...Deploy to HTTPS and verify the health endpoint
APP_URL matches the public HTTPS origin exactly. Before you touch Shopify checkout, confirm GET /health returns {"status":"ok"}.Install the app on the target store
https://your-app.example.com/auth?shop=yourstore.myshopify.comDistributed by Payvra. Self-hosted Express bridge published in the Shopify Partners dashboard.
Listing facts
Payvra API key
sk_test_... until the whole path is proven. Only move to sk_live_... once the signed webhook flow and order updates are predictable.Webhook secret
Settlement currency
Sandbox toggle
Register the Payvra callback URL
https://your-app.example.com/webhooks/payvraSubscribe only to the order-facing events
payment.confirmed, payment.completed, payment.failed, payment.expired, refund.completed, and refund.failed.Verify the signature before the order update path runs
Origin parity
APP_URL, the Shopify Partners app URL, the OAuth callback host, and the Payvra webhook endpoint all resolve to the same public HTTPS origin. A single mismatch between any of these breaks both the install path and signed delivery.OAuth scope changes
Custom-app-only callbacks
Replay tolerance
/webhooks/payvra is never served from cache.Order creation
Payment lifecycle
Order state
sk_test_... value with sk_live_....whsec_... secret in the app config.OAuth or installation fails
SHOPIFY_API_KEY, SHOPIFY_API_SECRET, and the store hostname used in the install URL. Most install failures come from a mismatch between the deployed app origin and the app settings in Shopify.Orders do not update after payment
/webhooks/payvra, not the Shopify-facing callback. Then check the Payvra webhook delivery log and the app logs together to see whether the signature failed or the order mutation did.Deployment looks healthy but checkout still fails
GET /health and the payment creation route directly from the deployed origin. If those work but Shopify checkout does not, the gap is usually in the app installation or store permission scope.HTTPS or callback URL mismatch
Start with sandbox credentials, verify one signed order lifecycle from checkout to paid state, and then promote the exact same app to live mode with only the Payvra secrets swapped.