Merge pull request 'fix(settlements): process cash-in (outbound) payments, not just cash-out' (#30) from fix/cash-in-settlement into main
Some checks failed
ci.yml / Merge pull request 'fix(settlements): process cash-in (outbound) payments, not just cash-out' (#30) from fix/cash-in-settlement into main (push) Failing after 0s
Some checks failed
ci.yml / Merge pull request 'fix(settlements): process cash-in (outbound) payments, not just cash-out' (#30) from fix/cash-in-settlement into main (push) Failing after 0s
Reviewed-on: #30
This commit is contained in:
commit
56ac4a69e9
1 changed files with 12 additions and 7 deletions
19
tasks.py
19
tasks.py
|
|
@ -130,7 +130,11 @@ async def _handle_payment(payment: Payment) -> None:
|
||||||
data = parse_settlement(
|
data = parse_settlement(
|
||||||
machine=machine,
|
machine=machine,
|
||||||
payment_hash=payment.payment_hash,
|
payment_hash=payment.payment_hash,
|
||||||
wire_sats=payment.sat,
|
# `payment.sat` is signed by protocol direction (negative for an
|
||||||
|
# outbound cash-in payout, positive for an inbound cash-out
|
||||||
|
# receipt). The settlement's `wire_sats` is a magnitude — direction
|
||||||
|
# is carried separately by `tx_type` — so pass the absolute value.
|
||||||
|
wire_sats=abs(payment.sat),
|
||||||
extra=extra,
|
extra=extra,
|
||||||
super_config=super_config,
|
super_config=super_config,
|
||||||
)
|
)
|
||||||
|
|
@ -205,7 +209,8 @@ async def _record_rejected(payment: Payment, machine: Machine, exc: Exception) -
|
||||||
data = CreateDcaSettlementData(
|
data = CreateDcaSettlementData(
|
||||||
machine_id=machine.id,
|
machine_id=machine.id,
|
||||||
payment_hash=payment.payment_hash,
|
payment_hash=payment.payment_hash,
|
||||||
wire_sats=payment.sat,
|
# Magnitude, not the signed `payment.sat` (negative for outbound).
|
||||||
|
wire_sats=abs(payment.sat),
|
||||||
fiat_amount=0.0,
|
fiat_amount=0.0,
|
||||||
fiat_code=machine.fiat_code,
|
fiat_code=machine.fiat_code,
|
||||||
exchange_rate=0.0,
|
exchange_rate=0.0,
|
||||||
|
|
@ -213,11 +218,11 @@ async def _record_rejected(payment: Payment, machine: Machine, exc: Exception) -
|
||||||
fee_sats=0,
|
fee_sats=0,
|
||||||
platform_fee_sats=0,
|
platform_fee_sats=0,
|
||||||
operator_fee_sats=0,
|
operator_fee_sats=0,
|
||||||
# tx_type is unknown for rejection paths; default to cash_out
|
# The parsed tx_type is unavailable on the rejection path, but the
|
||||||
# (the only direction currently wired). When S8 lands the
|
# authenticated protocol direction is: an outbound payment is a
|
||||||
# listener will branch on tx_type from extra, and this default
|
# cash-in, an inbound one a cash-out. Use that so a rejected row shows
|
||||||
# gets revisited.
|
# the right direction instead of always reading "cash-out".
|
||||||
tx_type="cash_out",
|
tx_type="cash_in" if not payment.is_in else "cash_out",
|
||||||
)
|
)
|
||||||
rejected = await create_settlement_idempotent(
|
rejected = await create_settlement_idempotent(
|
||||||
data, initial_status="rejected", error_message=str(exc)
|
data, initial_status="rejected", error_message=str(exc)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue