Description
Implement recurring donations through the existing WayForPay integration and enable the existing subscription option in the public donation form.
The subscription lifecycle must remain fully managed by WayForPay. VictoryCenter must not schedule recurring charges, store payment card information, or provide its own subscription management functionality.
Parent Issue
Related Information
Project documentation
Related issues and implementation
WayForPay documentation
Scope
Backend
- Preserve the existing one-time donation flow when
IsSubscription is false.
- Add the documented WayForPay recurring payment parameters when
IsSubscription is true.
- Delegate payment frequency selection and subscription lifecycle management to WayForPay.
- Redirect the donor to the protected WayForPay payment interface.
- Preserve user-defined donation amounts and supported currencies.
- Validate client-provided return URLs against an environment-specific host allowlist.
- Apply rate limiting to the public payment initiation endpoint.
- Return generic client-facing errors for payment provider failures.
- Log provider failures without exposing merchant secrets or sensitive payment information.
- Add unit and integration tests for one-time and recurring payment requests.
Frontend
- Enable the existing subscription tab in the public donation form.
- Submit
isSubscription=false for one-time donations.
- Submit
isSubscription=true for recurring donations.
- Preserve the existing amount and currency controls.
- Display the existing localized monthly donation button label.
- Add component tests for switching between donation modes.
Acceptance Criteria
Description
Implement recurring donations through the existing WayForPay integration and enable the existing subscription option in the public donation form.
The subscription lifecycle must remain fully managed by WayForPay. VictoryCenter must not schedule recurring charges, store payment card information, or provide its own subscription management functionality.
Parent Issue
Related Information
Project documentation
Related issues and implementation
WayForPay documentation
Scope
Backend
IsSubscriptionisfalse.IsSubscriptionistrue.Frontend
isSubscription=falsefor one-time donations.isSubscription=truefor recurring donations.Acceptance Criteria
IsSubscription = falsecreates the existing one-time WayForPay request.IsSubscription = trueadds the required recurring payment fields.isSubscriptionvalue.