Embed POS checkouts in a modal/sheet using the seller email.
Deploy Ladill POS / deploy (push) Successful in 40s
Deploy Ladill POS / deploy (push) Successful in 40s
Card/MoMo always initializes with the merchant email, and Paystack/Flutterwave/Hubtel open in-page (desktop modal, mobile bottomsheet) instead of a full redirect. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -82,22 +82,34 @@ class SaleController extends Controller
|
||||
return redirect()->route('pos.sales.index')->with('success', 'Sale deleted.');
|
||||
}
|
||||
|
||||
public function callback(Request $request, PosSale $sale): RedirectResponse
|
||||
public function callback(Request $request, PosSale $sale): RedirectResponse|View
|
||||
{
|
||||
$reference = trim((string) $request->query('reference', $sale->payment_reference ?? ''));
|
||||
|
||||
if ($reference === '') {
|
||||
return redirect()->route('pos.sales.show', $sale)->with('error', 'Missing payment reference.');
|
||||
return $this->paymentReturn(route('pos.sales.show', $sale), error: 'Missing payment reference.');
|
||||
}
|
||||
|
||||
try {
|
||||
$sale = $this->sales->completePayCheckout($reference);
|
||||
} catch (RuntimeException $e) {
|
||||
return redirect()->route('pos.sales.show', $sale)->with('error', $e->getMessage());
|
||||
return $this->paymentReturn(route('pos.sales.show', $sale), error: $e->getMessage());
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('pos.sales.show', $sale)
|
||||
->with('success', 'Payment received.');
|
||||
return $this->paymentReturn(route('pos.sales.show', $sale), success: 'Payment received.');
|
||||
}
|
||||
|
||||
private function paymentReturn(string $url, ?string $success = null, ?string $error = null): View
|
||||
{
|
||||
if ($success) {
|
||||
session()->flash('success', $success);
|
||||
}
|
||||
if ($error) {
|
||||
session()->flash('error', $error);
|
||||
}
|
||||
|
||||
return view('pos.payment-return', [
|
||||
'redirect' => $url,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user