Project

General

Profile

PayPal » History » Version 2

Jon Goldberg, 02/12/2016 05:37 PM

1 2 Jon Goldberg
{{lastupdated_at}} by {{lastupdated_by}}
2 1 Jon Goldberg
3 2 Jon Goldberg
{{>toc}}
4
5
h1. PayPal and CiviCRM
6
7 1 Jon Goldberg
PayPal is very difficult to navigate, and very difficult to handle certain tasks that come up time and again, particularly around recurring payments.  I'm documenting them here for future reference.
8
9 2 Jon Goldberg
h3. General CiviCRM documentation
10 1 Jon Goldberg
11 2 Jon Goldberg
http://wiki.civicrm.org/confluence/display/CRMDOC/PayPal+Website+Payments+Standard+and+Recurring+Contributions
12
http://wiki.civicrm.org/confluence/display/CRMDOC/PayPal+Website+Payments+Pro+and+Express+Configuration
13
14
h3. Setting a URL for IPN callbacks
15
16
Go here: https://www.paypal.com/us/cgi-bin/?cmd=_profile-ipn-notify
17
18 1 Jon Goldberg
h3. Resending an IPN
19 2 Jon Goldberg
20
Do this from the IPN History page: https://www.paypal.com/us/cgi-bin/?cmd=_profile-ipn-notify.  Note the only way to find this page is from the "Setting the IPN callback" link above.
21 1 Jon Goldberg
22
h3. Modifying an IPN to reflect an updated CiviCRM contact ID, etc.
23
24
This is my raw documentation for the most complicated version of this.  In this case, a user had a recurring membership/contribution, but a database restore eliminated all references in CiviCRM to it.  However, the recurring payment profile still existed in PayPal.
25
26
I built a new recurring contribution from scratch.  I compared an existing recurring contribution[1] and then used the values from an IPN that corresponded to Carolyn[2]
27
[1] select * from civicrm_contribution_recur WHERE id = 700;
28
[2] select * from civicrm_system_log WHERE id = 223;
29
30
* This is the SQL to create the recurring contribution.
31
INSERT into civicrm_contribution_recur (contact_id, amount, frequency_unit, frequency_interval, start_date, processor_id, trxn_id, invoice_id, contribution_status_id, cycle_day, auto_renew, currency, payment_processor_id, is_email_receipt, financial_type_id, payment_instrument_id)
32
VALUES (90779, 12.50, 'month', 1, '2015-06-19 13:00:00', 'I-JAMLNHRXDD21', 'I-JAMLNHRXDD21', '14e0fcc045a7aa421a1b5c6c86d87e97', 5, 1, 1, 'USD', 3, 1, 7, 1);
33
34
* Then you need a fake initial contribution, which I built by hand as well:
35
INSERT INTO civicrm_contribution (contact_id, financial_type_id, contribution_page_id, payment_instrument_id, receive_date, total_amount, fee_amount, net_amount, trxn_id, invoice_id, currency, source, contribution_recur_id, contribution_status_id)
36
VALUES (90779, 7, 3, 1, '2015-06-29 13:00:00', 12.50, .44, 12.06, 'zzzyyyxxx', 'xxxyyyzzz', 'USD', 'Created by Jon', 975, 1);
37
38
39
PayPal:
40
My Account > Profile
41
Recurring Payments Dashboard (https://www.paypal.com/us/cgi-bin/webscr?cmd=_merchant-hub)
42
Scrolled back to the creation date and clicked on Carolyn's name
43
Clicked "Modify".
44
The profile reference has a bogus maximum field length, so I right-clicked, selected "Inspect Element", and manually changed the "maxlength" value so I could edit it.
45
* I changed the URL values:
46
i = invoice id (don't change - set contribution_recur_id to match)
47
m = component (keep as "contribute")
48
c = contact id (change if necessary)
49
r = recurring contribution id (change)
50
b = initial contribution ID (change)
51
p = participant_id OR contribution_page_id (keep)
52
* Press Continue, then Submit
53
54
Finally, I created a new membership through the UI (46913) and edited THAT manually to have updated end date.  I also created a membership_payment record.
Go to top