validated(); // TODO: determine amount from event pricing table $amount = 1000000; // placeholder IDR $intent = PaymentIntent::create([ 'registration_id' => $registration->id, 'provider' => 'XENDIT', 'channel' => $data['method'], // INVOICE 'amount' => $amount, 'currency' => 'IDR', 'status' => 'PENDING', ]); $invoice = $xendit->createInvoice($intent, $registration); $intent->provider_ref_id = $invoice['provider_ref_id']; $intent->checkout_url = $invoice['checkout_url']; $intent->raw_payload = $invoice['raw_payload'] ?? null; $intent->save(); return response()->json([ 'payment_intent_id' => $intent->id, 'checkout_url' => $intent->checkout_url, ]); } }