Page MenuHomePhabricator

Payment method update for donor portal
Open, Needs TriagePublic

Description

While it would be ideal to be able to implement the entire flow within the donor portal, this would involve re-implementing some logic that lives on donatewiki (for showing the available donation methods) and expanding the PCI scope to include the donor portal, plus complicating our configuration with payment processors to allow additional javascript origins and IP addresses. Logging, queues, and monitoring would have to be adjusted to accommodate additional origin points for processor API calls, and we would have to re-implement the payments forms in VueJS.

Proposed solution: link to donatewiki with amount, currency, and country of existing donation plus additional parameters: contact_id, checksum, and contribution_recur_id. Donatewiki displays available recurring methods for the country / currency as usual and passes parameters along to payments-wiki. Payments-wiki shows the usual donation form and passes the extra parameters through to CiviCRM, which uses them to cancel the old donation when the new one is started.

Pros: Simple to implement, no architectural changes needed
Cons:

  1. Donor needs to enter name + email again
  2. payment with new method is made immediately and the monthly cycle day is reset to current day, regardless of the next scheduled donation date
  1. could be mitigated if we showed the available methods for the country/currency on donor portal and linked directly to paymentswiki with the name + email on the URL
  2. could be mitigated with changes to the DonationInterface charge logic that let us store a payment method without making the initial payment. Need to verify that we can do that for all methods. We would trigger this based on the presence of the contribution_recur_id parameter, then start the new recurring donation with the same next scheduled contribution date as the old one.

Untitled diagram-2025-12-02-153030.png (1×1 px, 191 KB)

Event Timeline

Mariana and Donor Portal working group are good to proceed with this solution, but ask that we document the change process for the different payment methods (CC to Wallet, Wallet to CC), and note that payment method changes can lead to a failed initial gift.

@Ejegg can you input whether a 'failure mitigation for first transaction' would require us to transact the first payment immediately to ensure process was successful? And if first payment fails, would it be possible to revert back to original payment method and schedule?

@XenoRyet Musing that we should ensure new gift succeeds before cancelling original gift in Office Hours today. Should try to stay on original cadence.