nxtgauge-backend-rust/apps/payments
Ashwin Kumar Sivakumar cdf78635f6
All checks were successful
build-and-release / build (customers) (push) Successful in 12s
build-and-release / build (catering-services) (push) Successful in 14s
build-and-release / build (developers) (push) Successful in 16s
build-and-release / build (companies) (push) Successful in 20s
build-and-release / build (employees) (push) Successful in 22s
build-and-release / build (cron) (push) Successful in 23s
build-and-release / build (fitness-trainers) (push) Successful in 9s
build-and-release / build (gateway) (push) Successful in 9s
build-and-release / build (graphic-designers) (push) Successful in 10s
build-and-release / build (job-seekers) (push) Successful in 8s
build-and-release / build (makeup-artists) (push) Successful in 7s
build-and-release / build (photographers) (push) Successful in 10s
build-and-release / build (jobs) (push) Successful in 14s
build-and-release / build (social-media-managers) (push) Successful in 12s
build-and-release / build (tutors) (push) Successful in 11s
build-and-release / build (ugc-content-creators) (push) Successful in 8s
build-and-release / build (users) (push) Successful in 10s
backend-integration-tests / ai-credits (push) Successful in 10s
build-and-release / build-db-migrate (push) Successful in 14s
build-and-release / build (video-editors) (push) Successful in 15s
build-and-release / build (payments) (push) Successful in 4m2s
fix(payments): reconcile PENDING payments that never redirect back from PayU
/verify only runs if the client's browser makes it back after PayU
redirects; a payment that succeeded on PayU's side but whose tab was
closed or lost network before redirecting sat at PENDING forever with
no server-side path to notice.

Adds a poll job (apps/payments/src/reconcile.rs) run every 5 minutes
that queries PayU's verify_payment API directly for any payment still
PENDING after 15 minutes (giving up after 7 days -- almost certainly
an abandoned cart by then, not a missed callback), and finalizes or
fails it server-side.

Extracts the actual claim-and-credit transaction (SELECT ... FOR
UPDATE gated on status = 'PENDING') out of verify_payment into
reconcile::finalize_successful_payment, shared by both callers so
there's exactly one implementation of the double-credit-proof claim to
reason about; it's what makes it safe for the poll job to independently
race /verify on the same txnid. Also unifies invoice/notification
side-effects into finish_successful_payment_side_effects, drawing
billing contact from `users` rather than the client-supplied /verify
payload (the poll path has no such payload, and it's the more correct
source of truth for the GST invoice either way).
2026-08-17 23:51:01 +05:30
..
src fix(payments): reconcile PENDING payments that never redirect back from PayU 2026-08-17 23:51:01 +05:30
Cargo.toml feat: generate a GST invoice automatically after a successful Tracecoin/PayU purchase 2026-07-21 03:02:47 +05:30
Dockerfile fix: Update Dockerfiles to use ci.nxtgauge.com registry 2026-07-08 03:37:18 +05:30