- PayFast (custom integration): signed form (PHP-style encoding, checked against a real sandbox), ITN checks (signature over all posted fields, PayFast host, VALID from /eng/query/validate, amount vs checkout). - ProviderCheckout records every checkout (amount, metadata, request); webhooks match payments to it and hold a different amount for review (ProviderTransaction.note). - /pay/<id>: payers choose a provider when several are on, and the browser posts PayFast's form from there, so payment links work for every provider. - Site settings → Payments: PayFast card (merchant ID/key, encrypted passphrase, sandbox/live) while PayFast is enabled. - Payer-facing wording no longer names Yoco; legal pages name both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11 lines
452 B
JavaScript
11 lines
452 B
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const { handleYocoWebhook, handleWhatsappWebhook } = require('../controllers/webhookController');
|
|
const { handleProviderWebhook } = require('../payments/webhook');
|
|
|
|
// Payment provider webhooks (src/payments)
|
|
router.post('/yoco', handleYocoWebhook);
|
|
router.post('/payfast', handleProviderWebhook('payfast'));
|
|
router.post('/whatsapp', handleWhatsappWebhook);
|
|
|
|
module.exports = router; |