Files
2ro 94d0c0edba checkout: first-class grin1 / Slatepack payment method
The hosted /pay page now shows the wallet's grin1 Slatepack address (with
a QR and the exact amount) as a payment method alongside the Goblin/Nostr
option. A payer sends the amount from any Grin wallet via the Slatepack or
file method, pastes the S1 into the existing paste box, receives an S2,
and finalizes to complete the payment. Reuses the existing offline
receive_tx flow bound to the invoice token; the Nostr gift-wrap path, the
invoice matcher, and the proof/confirm logic are unchanged. No Tor
listener. The grin1 address is the wallet's stable index-0 address.
2026-07-02 19:22:35 -04:00

29 lines
983 B
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Slatepack response</title>
<link rel="stylesheet" href="/static/style.css">
</head>
<body>
<main class="checkout">
<h1>{% if ok %}Payment received{% else %}Could not receive{% endif %}</h1>
<p class="status {% if ok %}paid{% else %}expired{% endif %}">{{ message }}</p>
{% if ok %}
<label for="s2">Response slatepack (S2)</label>
<textarea id="s2" class="copybox" rows="8" readonly>{{ s2_armor }}</textarea>
<ol>
<li>Select all of the text above and copy it.</li>
<li>Paste it back into your wallet to finalize and broadcast the transaction; this completes the payment.</li>
<li>Your wallet posts it to the chain; GoblinPay confirms it on receipt.</li>
</ol>
{% endif %}
<p><a href="/pay/{{ token }}">Back to the invoice</a></p>
<p class="footer">Powered by GoblinPay</p>
</main>
</body>
</html>