Fix payment confirm response with runtime intent fields

This commit is contained in:
2569718930@qq.com
2026-06-15 14:56:37 +08:00
parent 6b9caf8dc2
commit 15e0cb09b8
2 changed files with 13 additions and 3 deletions
+7 -3
View File
@@ -3272,14 +3272,18 @@ class PaymentContractCheckoutService:
amount_usdc=intent.amount_usdc,
tx_hash=tx_hash_text,
)
refreshed = PaymentIntentRecord(
**{
**intent.__dict__,
refreshed_payload = {
field_name: getattr(intent, field_name)
for field_name in PaymentIntentRecord.__dataclass_fields__
}
refreshed_payload.update(
{
"status": "confirmed",
"tx_hash": tx_hash_text,
"metadata": confirmed_metadata,
}
)
refreshed = PaymentIntentRecord(**refreshed_payload)
return {
"intent": refreshed.__dict__,
"transaction": tx_payload,
+6
View File
@@ -235,6 +235,9 @@ def test_confirm_direct_transfer_uses_intent_chain_rpc(monkeypatch, tmp_path):
metadata={},
)
confirmed_intent = PaymentIntentRecord(**{**intent.__dict__, "status": "confirmed"})
# get_intent attaches user_id at runtime; the confirmation response must ignore
# non-dataclass attributes when rebuilding the returned intent payload.
setattr(intent, "user_id", "user-1")
intents = [intent, confirmed_intent]
get_intent_calls = []
requested_chains = []
@@ -653,6 +656,9 @@ def test_confirm_direct_transfer_uses_erc20_transfer_without_wallet_binding(monk
metadata={},
)
confirmed_intent = PaymentIntentRecord(**{**intent.__dict__, "status": "confirmed"})
# Production get_intent attaches user_id at runtime; the confirmation
# response must ignore non-dataclass attributes when rebuilding the intent.
setattr(intent, "user_id", "user-1")
intents = [intent, confirmed_intent]
rest_calls = []