PayPal » History » Version 4
Jon Goldberg, 09/03/2018 02:14 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 | 4 | Jon Goldberg | Do this from the IPN History page: https://www.paypal.com/us/cgi-bin/webscr?cmd=_display-ipns-history. 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 | 3 | Jon Goldberg | [1] @select * from civicrm_contribution_recur WHERE id = 700;@ |
| 28 | [2] @select * from civicrm_system_log WHERE id = 223;@ |
||
| 29 | 1 | Jon Goldberg | |
| 30 | * This is the SQL to create the recurring contribution. |
||
| 31 | 3 | Jon Goldberg | <pre> |
| 32 | 1 | Jon Goldberg | 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) |
| 33 | 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); |
||
| 34 | 3 | Jon Goldberg | </pre> |
| 35 | 1 | Jon Goldberg | |
| 36 | * Then you need a fake initial contribution, which I built by hand as well: |
||
| 37 | 3 | Jon Goldberg | <pre> |
| 38 | 1 | Jon Goldberg | 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) |
| 39 | VALUES (90779, 7, 3, 1, '2015-06-29 13:00:00', 12.50, .44, 12.06, 'zzzyyyxxx', 'xxxyyyzzz', 'USD', 'Created by Jon', 975, 1); |
||
| 40 | 3 | Jon Goldberg | </pre> |
| 41 | 1 | Jon Goldberg | |
| 42 | PayPal: |
||
| 43 | My Account > Profile |
||
| 44 | Recurring Payments Dashboard (https://www.paypal.com/us/cgi-bin/webscr?cmd=_merchant-hub) |
||
| 45 | Scrolled back to the creation date and clicked on Carolyn's name |
||
| 46 | Clicked "Modify". |
||
| 47 | 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. |
||
| 48 | * I changed the URL values: |
||
| 49 | i = invoice id (don't change - set contribution_recur_id to match) |
||
| 50 | m = component (keep as "contribute") |
||
| 51 | c = contact id (change if necessary) |
||
| 52 | r = recurring contribution id (change) |
||
| 53 | b = initial contribution ID (change) |
||
| 54 | p = participant_id OR contribution_page_id (keep) |
||
| 55 | * Press Continue, then Submit |
||
| 56 | |||
| 57 | 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. |