BayarCash in Laravel richtig einrichten
Wenn Sie SaaS für den malaysischen Markt entwickeln, werden Sie früher oder später FPX benötigen. BayarCash ist eine gängige Wahl.
Das SDK ist nicht das Problem. Das Problem ist Ihre Architektur. Wenn Sie das SDK aus einem Controller aufrufen oder Statuscodes hart in Ihren Views kodieren, werden Sie in der Produktion auf Probleme stoßen.
Ich habe BayarCash bereits in drei verschiedenen Laravel-Apps implementiert. Hier ist das Muster, das jedes Mal funktioniert.
Wichtige Begriffe, die man beherrschen muss
- Portal: Ihre Konfiguration für den Merchant-Checkout. Verwenden Sie den
portal_key. - API-Token: Dieser authentifiziert Ihre ausgehenden Aufrufe.
- Secret Key: Dieser signiert Ihre Payloads und verifiziert Webhooks. Halten Sie diesen sicher.
- Payment Intent: Sie senden eine Zahlung (POST), erhalten eine URL und leiten den Benutzer weiter.
- Channel: Verwenden Sie immer SDK-Konstanten anstelle von Rohwerten.
Strukturieren Sie Ihren Code gut
Ihr Domain-Code sollte niemals einen rohen BayarCash-Payload sehen. Sie benötigen drei Ebenen:
- Ein schlanker Client-Wrapper: Dieser verwaltet die Konfiguration und stellt typisierte Methoden bereit.
- Ein Gateway: Dieses implementiert ein Interface und spricht die Sprache Ihrer Domain.
- Eine Factory: Diese wählt das aktive Gateway aus, sodass Sie BayarCash problemlos gegen Stripe austauschen können.
Binden eines Fake-Gateways
Wenn Sie keinen API-Token angeben, binden Sie einen Fake-Provider in Ihrem Service-Container. Dies ermöglicht es Ihren Tests, ohne Netzwerk zu laufen, und erlaubt es Ihren lokalen Builds, ohne aktive Abrechnung zu funktionieren.
Best Practices für Webhooks
Der Webhook ist Ihre „Source of Truth“. Befolgen Sie diese Regeln, um einen Sturm in der Produktion zu vermeiden:
- CSRF-Ausnahme: Ihre Webhook-Route muss die CSRF-Schutzmechanismen umgehen.
- Signaturen verifizieren: Verifizieren Sie immer die Signatur, bevor Sie etwas anderes tun.
- Die 200er-Regel: Sobald Sie die Signatur verifiziert haben, geben Sie eine 2xx-Antwort zurück.
- Retries vermeiden: Wenn Sie einen 500er-Fehler zurückgeben, wird BayarCash Ihren Webhook 40 Mal erneut aufrufen. Dies kann Ihren Server zum Absturz bringen. Protokollieren Sie Fehler, aber geben Sie dennoch einen 200er zurück.
- Idempotenz: Stellen Sie sicher, dass Ihre Logik denselben Webhook zweimal verarbeiten kann, ohne doppelte Bestellungen zu erstellen.
Checkliste für den Erfolg
• Verwenden Sie die order_number als Korrelationsschlüssel. Halten Sie sie unter 30 Zeichen.
• Speichern Sie einen ausstehenden lokalen Datensatz, bevor Sie den Benutzer weiterleiten.
• Nutzen Sie den Server-zu-Server-Callback als Ihre primäre Instanz.
• Nutzen Sie die Return-URL als Sicherheitsnetz für den Abgleich (Reconciliation).
• Ordnen Sie Integer-Statuscodes sofort Ihren eigenen Enums zu.
Zahlungsintegrationen betreffen echtes Geld. Testen Sie Ihre Signaturprüfung und Idempotenz mehr als alles andere.
Quelle: https://dev.to/nasrulhazim/setting-up-bayarcash-fpx-in-laravel-the-right-way-4b2n
