PayHazeDocsTableau de bord

GuidesCommencerSDK et boutique d’exemple

SDK et boutique d’exemple

Le SDK JavaScript fait pour vous les appels de votre serveur, la vérification des notifications et l’ouverture de la caisse. La boutique d’exemple Atelier Lumen l’utilise de bout en bout.

Sur votre serveur

La clé secrète reste sur votre serveur : le SDK refuse de démarrer dans un navigateur. Chaque création demande une clé d’idempotence.

Créer le paiement et la session de caisseNode.js
import { payhaze } from "@payhaze/sdk";

const api = payhaze({ apiKey: process.env.PAYHAZE_KEY, merchantId: process.env.PAYHAZE_MERCHANT, baseUrl: process.env.PAYHAZE_API });

const payment = await api.payments.create(
  { merchant_reference: "CMD-2026-0412", amount: "124.90", currency: "EUR", capture_mode: "automatic" },
  { idempotencyKey: "CMD-2026-0412-creation" },
);
const session = await api.checkout.create(payment.id);
// Renvoyez checkout_url et launch_token à votre page, rien d’autre.

Vérifier une notification

Votre adresse de notificationNode.js
import { verifyWebhook } from "@payhaze/sdk";

const ok = verifyWebhook({ body: rawBody, eventId: req.headers["payhaze-event-id"],
  signature: req.headers["payhaze-signature"], secrets: [process.env.PAYHAZE_WEBHOOK_SECRET] });
if (!ok) return res.status(400).end();
// Dédupliquez sur PayHaze-Event-ID, relisez le paiement, puis confirmez la commande.

Le SDK et PayHaze partagent le même exemple de signature dans leurs tests : leurs calculs ne peuvent pas diverger sans qu’un test échoue.

La boutique d’exemple

En local, /boutique montre une vraie commande : création du paiement par le serveur de la boutique, passage en caisse, retour, confirmation après relecture du paiement, et la notification signée vérifiée par le récepteur d’exemple. Le panneau « Côté serveur » affiche chaque appel au moment où il a lieu.

  • Clé de test avec payments:read et payments:write, et l’espace, dans le fichier privé work/demo-shop.json
  • Destination de notification vers le récepteur local, et sa clé, dans work/demo-receiver-config.json
  • Aucune clé ne quitte le serveur de la boutique