fix splitpayments flow and add amount in extra dict

This commit is contained in:
Tiago Vasconcelos 2022-10-27 15:53:32 +01:00
parent cc7c3807dd
commit c0f742bc3e

View file

@ -20,7 +20,7 @@ async def wait_for_paid_invoices():
async def on_invoice_paid(payment: Payment) -> None: async def on_invoice_paid(payment: Payment) -> None:
if not payment.extra or payment.extra.get("tag") == "splitpayments": if payment.extra.get("tag") == "splitpayments" or payment.extra.get("splitted"):
# already a splitted payment, ignore # already a splitted payment, ignore
return return
@ -35,24 +35,27 @@ async def on_invoice_paid(payment: Payment) -> None:
logger.error("splitpayment failure: total percent adds up to more than 100%") logger.error("splitpayment failure: total percent adds up to more than 100%")
return return
logger.debug(f"checking if tagged for {len(targets)} targets") logger.debug(f"performing split payments to {len(targets)} targets")
tagged = False
amount_to_split = payment.amount
if payment.extra.get("amount"):
amount_to_split = int(payment.extra.get("amount") * 1000)
for target in targets: for target in targets:
if target.tag in payment.extra: amount = int(payment.amount * target.percent / 100) # msats
tagged = True
payment_hash, payment_request = await create_invoice( payment_hash, payment_request = await create_invoice(
wallet_id=target.wallet, wallet_id=target.wallet,
amount=int(payment.amount / 1000), # sats amount=int(amount / 1000), # sats
internal=True, internal=True,
memo=f"Pushed tagged payment to {target.alias}", memo=f"split payment: {target.percent}% for {target.alias or target.wallet}",
extra={"tag": "splitpayments"},
) )
logger.debug(f"created split invoice: {payment_hash}")
logger.debug(f"created split invoice: {payment_hash}")
checking_id = await pay_invoice( checking_id = await pay_invoice(
payment_request=payment_request, payment_request=payment_request,
wallet_id=payment.wallet_id, wallet_id=payment.wallet_id,
extra={"tag": "splitpayments"}, extra={**payment.extra, "splitted": True},
) )
logger.debug(f"paid split invoice: {checking_id}") logger.debug(f"paid split invoice: {checking_id}")