Implementatie details

Voor de implementatie van Bitcoin Lightning betalingen via Lightning Checkout moeten er twee API calls worden geimplementeerd.

  1. Ten behoeve van het aanmaken van de lightning invoice
  2. Ten behoeve van het valideren van de status van de lightning betaling

 

Aanmaken Lightning Invoice

In de onderstaande snippet staat een curl voorbeeld voor onze API om een invoice aan te kunnen maken.

In het request dient de rubriek lnc_product gevuld te worden met het Lightning Checkout product.

  • In external_id kan een eigen kenmerk worden ingegeven.
  • Voor point-of-sale systemen is dit bijvoorbeeld BTCPOS.
  • Daarnaast kan voor de daadwerkelijke conversie ratio het fiat bedrag (lnc_amount) en de fiat currency (lnc_currency) worden meegegeven

Het resultaat van deze call is de onderstaande json response.

Het is gebruikelijk om voor een lightning betaling de invoice om te zetten naar een QR code. Daarnaast is het het meest gebruiksvriendelijk om daarnaast ook een link naar de invoice op te nemen waarmee de invoice naar het clipboard gekopieerd kan worden. De url naar een Lightning invoice moet de prefix lightning: bevatten en zie er in zijn geheel zo uit: lightning:<payment_request>. Op deze wijze wordt de Lightning wallet van de klant getriggerd bij het aanklikken van de link, zodat hij/zij direct kan betalen.

Een voorbeeld implementatie van een betaalpagina vind je op onze demoshop.

 

Ophalen status Lightning Invoice

Na het aanmaken en tonen van de QR code kan de webshop gaan pollen of de lightning invoice betaald is. Hieronder een curl voorbeeld van de call die dan moet worden uitgevoerd. In deze call moet de payment_hash worden opgenomen die bij de betreffende invoice hoort.

Het is voldoende als deze API elke 3 tot 5 seconden wordt aangeroepen om te controleren of de invoice volledig betaald is. Hieronder de response. Een invoice is volledig betaald als de tag paid uit de response op true staat.

Dit is alles wat er nodig is om Lightning Checkout te integreren in je website. Mocht je nog vragen hebben neem dan contact met ons op.