Traitement côté serveur

Lorsque vous utilisez la fonction de passerelle de paiement personnalisée, le traitement du paiement se fait en dehors de Snipcart. À partir de votre page de paiement externe, vous devez gérer le paiement vous-même et renvoyer un payload de confirmation à Snipcart. Cela nous permettra de traiter la commande de notre côté et de l'afficher dans le tableau de bord.

Une fois que vous avez géré le paiement de votre côté, et que vous l'avez traité via votre passerelle de paiement, envoyez les détails du paiement à notre point de terminaison de paiement.

Exemple de fonction sans serveur (fonctions Netlify/JavaScript)

exports.handler = async function (event, context, callback) {
  // Retrieve payment information (depends on how your application is made)
  const requestBody = JSON.parse(event.body);
  const paymentId = uuid();

  // Process the payment with the gateway of your choice here

  // Confirm payment with the /payment endpoint
  const response = await fetch(
    'https://payment.snipcart.com/api/private/custom-payment-gateway/payment', {
    method: 'POST',
    headers: {
      Authorization: 'Bearer <YOUR_SECRET_API_KEY>',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      paymentSessionId: requestBody.paymentSessionId,
      state: requestBody.state,
      error: requestBody.error,
      transactionId: paymentId,
      instructions: 'Your payment will appear on your statement in the coming days',
      links: { refunds: `<YOUR_REFUND_URL>?transactionId=${paymentId}` },
    }),
  });

  if (response.ok) {
    const body = await response.json();

    return {
      statusCode: 200,
      body: JSON.stringify({ ok: true, returnUrl: body.returnUrl })
    };
  }
}

Étape suivante

→ Rediriger les clients vers Snipcart