Project

General

Profile

Payment Workflows for CiviCRM » History » Version 1

Brienne Kordis, 01/16/2023 05:00 PM

1 1 Brienne Kordis
# Payment Workflows for CiviCRM
2
3
### Recurring payment workflow (PayPal)
4
1. POST request from user to CiviCRM (User submits form)
5
  CiviCRM creates a pending contribution and recurring contribution record.
6
  2. POST request from CiviCRM to PayPal (Civi asks PayPal to authorize card).  PayPal responds with success or failure.
7
CiviCRM responds to user's POST request with a thank-you page (or a PayPal error)
8
A few minutes later...
9
3. POST request from PayPal to CiviCRM (informing Civi that recurring contribution was created on PayPal's side)
10
4. POST request from PayPal to CiviCRM (informing Civi that contribution was successfully charged).
11
12
### Recurring payment with interdiction (PayPal)
13
1. POST request from user to CiviCRM (User submits form)
14
  CiviCRM creates a pending contribution and recurring contribution record.
15
  2. POST request from CiviCRM to PayPal (Civi asks PayPal to authorize card).  PayPal responds with success or failure.
16
CiviCRM responds to user's POST request with a thank-you page (or a PayPal error)
17
A few minutes later...
18
3. POST request from PayPal to webhook.site (informing Civi that recurring contribution was created on PayPal's side)
19
3a. POST request (curl, using webhook.site request) to Civi.
20
4. POST request from PayPal to CiviCRM (informing Civi that contribution was successfully charged).
21
22
### One-time payment (PayPal, Auth.net)
23
1. POST request from user to CiviCRM (User submits form)
24
  CiviCRM creates a pending contribution and recurring contribution record.
25
  2. POST request from CiviCRM to PayPal (Civi asks PayPal to authorize card).  PayPal responds with success or failure.
26
CiviCRM responds to user's POST request with a thank-you page (or a PayPal error)
27
28
### One-time payment (Stripe)
29
* POST request from user to Stripe (user submits form).  Stripe responds in JavaScript with success/failure. (aka "pre-authorization")
30
* POST request from user to CiviCRM (triggered by the return of Stripe's request, and including the result of Stripe's request). Civi responds with thank-you page or an error.