nip57 and nip61: parse amount.

This commit is contained in:
fiatjaf
2025-10-24 23:16:30 -03:00
parent 3f1e013912
commit 8b38e1aec9
2 changed files with 48 additions and 0 deletions

33
nip57/nip57.go Normal file
View File

@@ -0,0 +1,33 @@
package nip57
import (
"encoding/json"
"strconv"
"fiatjaf.com/nostr"
)
// GetAmountFromZap takes a zap receipt event (kind 9735) and returns the amount in millisats.
// It first checks the event's "amount" tag, and if not present, checks the embedded zap request's "amount" tag.
func GetAmountFromZap(event nostr.Event) uint64 {
// Check for "amount" tag in the zap receipt
if tag := event.Tags.Find("amount"); tag != nil {
if amt, err := strconv.ParseUint(tag[1], 10, 64); err == nil {
return amt
}
}
// if not found, get from the embedded zap request in "description" tag
if descTag := event.Tags.Find("description"); descTag != nil {
var embeddedEvent nostr.Event
if err := json.Unmarshal([]byte(descTag[1]), &embeddedEvent); err == nil {
if tag := embeddedEvent.Tags.Find("amount"); tag != nil {
if amt, err := strconv.ParseUint(tag[1], 10, 64); err == nil {
return amt
}
}
}
}
return 0
}