diff --git a/src/modules/restaurant/composables/useCheckout.ts b/src/modules/restaurant/composables/useCheckout.ts index f42e6c8..fdf75ab 100644 --- a/src/modules/restaurant/composables/useCheckout.ts +++ b/src/modules/restaurant/composables/useCheckout.ts @@ -236,7 +236,8 @@ export function useCheckout(): UseCheckoutReturn { async function payBolt11Raw( bolt11: string, - adminkey: string + adminkey: string, + extra?: Record ): Promise { const response = await fetch(`${apiBaseUrl}/api/v1/payments`, { method: 'POST', @@ -244,7 +245,7 @@ export function useCheckout(): UseCheckoutReturn { 'Content-Type': 'application/json', 'X-Api-Key': adminkey, }, - body: JSON.stringify({ out: true, bolt11 }), + body: JSON.stringify({ out: true, bolt11, ...(extra ? { extra } : {}) }), }) if (!response.ok) { let detail = response.statusText @@ -272,7 +273,15 @@ export function useCheckout(): UseCheckoutReturn { state.value.step = 'paying' state.value.currentRestaurantSlug = placed.restaurantSlug try { - await payBolt11Raw(placed.invoice.bolt11, adminkey) + // Tag the outgoing payment so the customer's wallet history + // can later surface it as a restaurant order. Mirrors the + // `extra={"tag": "restaurant", ...}` the extension stamps on + // its incoming invoice. + await payBolt11Raw(placed.invoice.bolt11, adminkey, { + tag: 'restaurant', + restaurant_id: placed.restaurantId, + order_id: placed.order.id, + }) // Set semantics keeps `paidOrderIds` from re-renders; rebuild // it on update so Vue picks up the change. state.value.paidOrderIds = new Set([