Fix checkout flow to redirect to specific order detail page
🔄 Better UX Flow: - After successful payment: redirect to /orders/{order_id} instead of /access - This shows the specific order details where users can see their purchase - Users can then proceed to payment if needed or access their content 📧 Updated Shortcodes: - {thank_you_page} now uses dynamic URL pattern: /orders/{order_id} - {order_id} will be replaced with actual order ID by ShortcodeProcessor - Added {thank_you_page} to order_created and payment_reminder templates 🎯 User Journey: 1. User receives email with payment link 2. After successful payment → redirected to specific order detail page 3. If not logged in → redirects to login, then back to order detail 4. Order detail page shows payment status and access information Much better user experience than generic dashboard redirect! 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,8 +26,8 @@ interface NotificationTemplate {
|
||||
const RELEVANT_SHORTCODES = {
|
||||
'payment_success': ['{nama}', '{email}', '{order_id}', '{tanggal_pesanan}', '{total}', '{metode_pembayaran}', '{produk}', '{link_akses}', '{thank_you_page}'],
|
||||
'access_granted': ['{nama}', '{email}', '{produk}', '{link_akses}', '{username_akses}', '{password_akses}', '{kadaluarsa_akses}'],
|
||||
'order_created': ['{nama}', '{email}', '{order_id}', '{tanggal_pesanan}', '{total}', '{metode_pembayaran}', '{produk}', '{payment_link}'],
|
||||
'payment_reminder': ['{nama}', '{email}', '{order_id}', '{tanggal_pesanan}', '{total}', '{metode_pembayaran}', '{batas_pembayaran}', '{jumlah_pembayaran}', '{bank_tujuan}', '{nomor_rekening}', '{payment_link}'],
|
||||
'order_created': ['{nama}', '{email}', '{order_id}', '{tanggal_pesanan}', '{total}', '{metode_pembayaran}', '{produk}', '{payment_link}', '{thank_you_page}'],
|
||||
'payment_reminder': ['{nama}', '{email}', '{order_id}', '{tanggal_pesanan}', '{total}', '{metode_pembayaran}', '{batas_pembayaran}', '{jumlah_pembayaran}', '{bank_tujuan}', '{nomor_rekening}', '{payment_link}', '{thank_you_page}'],
|
||||
'consulting_scheduled': ['{nama}', '{email}', '{tanggal_konsultasi}', '{jam_konsultasi}', '{durasi_konsultasi}', '{link_meet}', '{jenis_konsultasi}', '{topik_konsultasi}'],
|
||||
'event_reminder': ['{nama}', '{email}', '{judul_event}', '{tanggal_event}', '{jam_event}', '{link_event}', '{lokasi_event}', '{kapasitas_event}'],
|
||||
'bootcamp_progress': ['{nama}', '{email}', '{judul_bootcamp}', '{progres_bootcamp}', '{modul_selesai}', '{modul_selanjutnya}', '{link_progress}'],
|
||||
|
||||
@@ -407,7 +407,7 @@ export class ShortcodeProcessor {
|
||||
jumlah_pembayaran: 'Rp 1.500.000',
|
||||
batas_pembayaran: '22 Desember 2025 23:59',
|
||||
payment_link: 'https://accesshub.example.com/checkout',
|
||||
thank_you_page: 'https://accesshub.example.com/access'
|
||||
thank_you_page: 'https://accesshub.example.com/orders/{order_id}'
|
||||
};
|
||||
|
||||
static process(content: string, customData: Record<string, string> = {}): string {
|
||||
|
||||
@@ -67,7 +67,7 @@ export default function Checkout() {
|
||||
|
||||
if (order?.payment_status === "paid") {
|
||||
toast({ title: "Pembayaran berhasil!", description: "Akses produk sudah aktif" });
|
||||
navigate("/access");
|
||||
navigate(`/orders/${oid}`);
|
||||
} else {
|
||||
toast({ title: "Pembayaran pending", description: "Menunggu konfirmasi pembayaran" });
|
||||
}
|
||||
@@ -196,7 +196,7 @@ export default function Checkout() {
|
||||
|
||||
if (order?.payment_status === "paid") {
|
||||
toast({ title: "Pembayaran berhasil!", description: "Akses produk sudah aktif" });
|
||||
navigate("/access");
|
||||
navigate(`/orders/${orderId}`);
|
||||
} else {
|
||||
toast({ title: "Belum ada pembayaran", description: "Silakan selesaikan pembayaran" });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user