Resiliente Systemarchitektur
Webhook-Idempotenz & Sichere Wiederholungen
Stellen Sie sicher, dass Ihr Commerce-Stack Zahlungen exakt einmal verarbeitet — selbst wenn Netzwerkverzögerungen automatische Webhook-Wiederholungen auslösen.
Warum Idempotenz bei Web3-Zahlungen entscheidend ist
Da Blockchain-Bestätigungszeiten variieren und Internet-Routing kurzzeitigen Schwankungen unterliegen kann, wiederholt der automatische Dispatcher von XPayr unbestätigte Webhooks bis zu 5 Mal. Ein idempotenter Listener garantiert, dass Ihr Shop niemals eine Bestellung doppelt ausführt.
Spezifikationen der wichtigsten HTTP-Header
X-XPayr-Delivery: Eindeutige UUID für jedes Webhook-Ereignis (z. B.deliv_9f8a2c1e4d). Bleibt über alle Wiederholungsversuche desselben Transaktionsereignisses hinweg identisch.X-XPayr-Signature: HMAC-SHA-256-Hash zum Schutz vor Manipulation und Replay-Angriffen.X-XPayr-Event: Ereignisbezeichner (payment.confirmed,payment.failed).
Produktionsreifes Listener-Muster (PHP)
<?php
// Secure Webhook Listener with Idempotency Protection
$rawPayload = file_get_contents('php://input');
$deliveryId = $_SERVER['HTTP_X_XPAYR_DELIVERY'] ?? '';
$signature = $_SERVER['HTTP_X_XPAYR_SIGNATURE'] ?? '';
// 1. Verify HMAC Signature
$expectedSignature = 'sha256=' . hash_hmac('sha256', $rawPayload, $webhookSecret);
if (!hash_equals($expectedSignature, $signature)) {
http_response_code(401);
exit('Invalid signature');
}
$event = json_decode($rawPayload, true);
$orderId = $event['data']['order_id'] ?? null;
// 2. Check if this delivery or order was already processed (Atomic DB Lock)
$stmt = $pdo->prepare("INSERT INTO processed_webhooks (delivery_id, order_id, created_at) VALUES (?, ?, NOW())");
try {
$stmt->execute([$deliveryId, $orderId]);
} catch (PDOException $e) {
// Duplicate event detected (Unique constraint violation)
// Return HTTP 200 OK immediately so XPayr stops retrying!
http_response_code(200);
echo json_encode(['status' => 'already_processed']);
exit;
}
// 3. Fulfill Order (Guaranteed to execute exactly ONCE)
fulfillCustomerOrder($orderId, $event['data']);
http_response_code(200);
echo json_encode(['status' => 'success']);
Offizielle NPM-SDKs (v0.2.0) & Remote-MCP-Server
Schneller integrieren mit offiziellen XPayr-Paketen & installationsfreiem MCP
Installieren Sie @xpayr/node-sdk (v0.2.0), @xpayr/payment-evidence (v0.2.0), @xpayr/extension-kit (v0.2.0)oder @xpayr/mcp-server (v1.0.0) über NPM oder führen Sie Live JSON-RPC 2.0 Tool-Aufrufe aus über POST https://xpayr.com/api/mcp.