Add LndHub service, lnurl-pay endpoints
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing

Enables the lnurl-pay payment workflow
This commit is contained in:
2021-11-22 15:41:05 -06:00
parent 884070a3cb
commit dbc811b840
10 changed files with 158 additions and 23 deletions
+58
View File
@@ -0,0 +1,58 @@
class LnurlpayController < ApplicationController
before_action :find_user_by_address
def index
render json: {
status: "OK",
callback: "https://accounts.kosmos.org/lnurlpay/#{@user.address}/invoice",
tag: "payRequest",
maxSendable: 1000000,
minSendable: 1000,
metadata: metadata(@user.address),
commentAllowed: 255
}
end
def invoice
amount = params[:amount].to_i # msats
address = params[:address]
validate_amount(amount)
# amount = amount / 1000 # we need sats
payment_request = @user.ln_create_invoice({
amount: amount,
description_hash: Digest::SHA2.hexdigest(metadata(address))
})
render json: {
status: "OK",
successAction: {
tag: "message",
message: "Payment received. Thanks!"
},
routes: [],
pr: payment_request
}
end
private
def find_user_by_address
address = params[:address].split("@")
@user = User.where(cn: address.first, ou: address.last).first
http_status :not_found if @user.nil?
end
def metadata(address)
"[[\"text/identifier\", \"#{address}\"], [\"text/plain\", \"Sats for #{address}\"]]"
end
def validate_amount(amount)
if amount > 1000000 || amount < 1000
render json: { status: "ERROR", reason: "Invalid amount" }
return
end
end
end