DocsPlugin Oficial EDPay para Shopify

Plugin Oficial EDPay para Shopify

Integre a plataforma EDPay na sua loja virtual Shopify para aceitar pagamentos com canais de Moçambique através de checkout seguro e compatível com Hosted Payment SDK.

Shopify Payments App

Disponível no GitHub (Node.js & GraphQL)

Implementação backend em Node.js com suporte a Shopify Payments App Extension, Checkout Redirection e Webhooks.

Ver no GitHub

Arquitetura e Fluxo de Pagamento

Multi-Gateway

Receba através de carteiras móveis (M-Pesa, e-Mola), cartões e referências bancárias no mesmo checkout.

Checkout Alojado

O cliente é redirecionado para a página segura EDPay com contagem decrescente USSD e confirmação instantânea.

Reconciliação Automática

A encomenda no Shopify é automaticamente marcada como "Paid" através de webhooks assinados com HMAC SHA-256.

Serviço Backend em Node.js

O aplicativo atua como gateway intermediário registado no Partner Dashboard da Shopify, orquestrando as sessões de checkout:

Iniciação de Sessão (server/index.js)
// server/index.js - EDPay Payments App para Shopify const express = require("express"); const { EDPayClient } = require("./edpay-client"); const app = express(); const client = new EDPayClient({ publicKey: process.env.EDPAY_PUBLIC_KEY, privateKey: process.env.EDPAY_PRIVATE_KEY, webhookSecret: process.env.EDPAY_WEBHOOK_SECRET, }); // Endpoint chamado pelo Shopify Checkout ao iniciar sessão app.post("/payment-session", async (req, res) => { const { id, amount, currency, customer } = req.body; const checkoutUrl = await client.createPaymentLink({ id, amount: parseFloat(amount), currency: currency || "MZN", title: `Shopify Order #${id}`, customerEmail: customer?.email, returnUrl: `${process.env.APP_URL}/shopify/return?id=${id}`, }); res.json({ redirect_url: checkoutUrl }); });
Resolução de Sessão via Webhook
// Webhook EDPay para resolver sessão no Shopify GraphQL app.post("/webhook/edpay", async (req, res) => { const signature = req.headers["x-edpay-signature"]; if (!client.verifyWebhookSignature(req.rawBody, signature)) { return res.status(401).json({ error: "Invalid signature" }); } const { type, data } = req.body; if (type === "payment.succeeded") { const sessionId = data.metadata?.shopify_payment_session_id; // Dispara mutation GraphQL no Shopify: paymentSessionResolve await shopifyGraphQL.mutate(PAYMENT_SESSION_RESOLVE, { id: sessionId }); } res.json({ status: "acknowledged" }); });
Condições Comerciais e Prazos

Tarifa plana de 6% em MZN. Saques para contas bancárias em Moçambique são liquidados no prazo de 2 a 7 dias úteis.