fix: stabilize production payment flow

This commit is contained in:
QiuSW
2026-07-06 08:56:30 +08:00
parent 0d6b97f44d
commit e4565de0c4
14 changed files with 270 additions and 13 deletions
+21
View File
@@ -742,6 +742,27 @@ class RechargeCreateStatusApiTests(TestCase):
1,
)
def test_recharge_status_keeps_pending_when_active_query_raises_unexpected_error(self):
order = self.create_order(amount="20.00", points_granted=200)
self.client.force_login(self.user)
with patch("apps.api.views.query_payment_order", side_effect=RuntimeError("gateway down")):
response = self.client.get(self.status_url, {"order_no": order.order_no})
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data["order_no"], order.order_no)
self.assertEqual(response.data["status"], RechargeOrder.Status.PENDING)
self.wallet.refresh_from_db()
order.refresh_from_db()
self.assertEqual(self.wallet.points_balance, 100)
self.assertEqual(order.status, RechargeOrder.Status.PENDING)
self.assertFalse(
PointsLedger.objects.filter(
ref_order_id=order.id,
change_type=PointsLedger.ChangeType.RECHARGE,
).exists()
)
class FakeGenerationProvider:
def __init__(self, *, capabilities=None):