41 lines
797 B
Go
41 lines
797 B
Go
package lnd
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/btcsuite/btcd/btcutil"
|
|
)
|
|
|
|
func (lnd *LNDClient) PayInvoice(tx *sql.Tx, bolt11 string) error {
|
|
ctx, cancel := context.WithTimeout(context.TODO(), 10*time.Second)
|
|
defer cancel()
|
|
|
|
log.Printf("attempting to pay bolt11 %s ...\n", bolt11)
|
|
|
|
maxFeeSats := btcutil.Amount(10)
|
|
payChan := lnd.Client.PayInvoice(ctx, bolt11, maxFeeSats, nil)
|
|
|
|
res := <-payChan
|
|
|
|
if res.Err != nil {
|
|
log.Printf("error paying bolt11: %s -- %s\n", bolt11, res.Err)
|
|
tx.Rollback()
|
|
return res.Err
|
|
}
|
|
|
|
log.Printf("successfully paid bolt11: %s\n", bolt11)
|
|
|
|
if _, err := tx.ExecContext(ctx,
|
|
"UPDATE withdrawals SET paid_at = CURRENT_TIMESTAMP WHERE bolt11 = $1",
|
|
bolt11,
|
|
); err != nil {
|
|
tx.Rollback()
|
|
return err
|
|
}
|
|
|
|
return res.Err
|
|
}
|