Project

General

Profile

PayPal » History » Revision 3

Revision 2 (Jon Goldberg, 02/12/2016 05:37 PM) → Revision 3/4 (Jon Goldberg, 03/02/2016 12:13 PM)

{{lastupdated_at}} by {{lastupdated_by}} 

 {{>toc}} 

 h1. PayPal and CiviCRM 

 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. 

 h3. General CiviCRM documentation 

 http://wiki.civicrm.org/confluence/display/CRMDOC/PayPal+Website+Payments+Standard+and+Recurring+Contributions 
 http://wiki.civicrm.org/confluence/display/CRMDOC/PayPal+Website+Payments+Pro+and+Express+Configuration 

 h3. Setting a URL for IPN callbacks 

 Go here: https://www.paypal.com/us/cgi-bin/?cmd=_profile-ipn-notify 

 h3. Resending an IPN 

 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. 

 

 h3. Modifying an IPN to reflect an updated CiviCRM contact ID, etc. 

 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. 

 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] 
 [1] @select select * from civicrm_contribution_recur WHERE id = 700;@ 700; 
 [2] @select select * from civicrm_system_log WHERE id = 223;@ 223; 

 * This is the SQL to create the recurring contribution. 
 <pre> 
 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) 
 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); 
 </pre> 

 * Then you need a fake initial contribution, which I built by hand as well: 
 <pre> 
 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) 
 VALUES (90779, 7, 3, 1, '2015-06-29 13:00:00', 12.50, .44, 12.06, 'zzzyyyxxx', 'xxxyyyzzz', 'USD', 'Created by Jon', 975, 1); 
 </pre> 

 


 PayPal: 
 My Account > Profile 
 Recurring Payments Dashboard (https://www.paypal.com/us/cgi-bin/webscr?cmd=_merchant-hub) 
 Scrolled back to the creation date and clicked on Carolyn's name 
 Clicked "Modify". 
 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. 
 * I changed the URL values: 
 i = invoice id (don't change - set contribution_recur_id to match) 
 m = component (keep as "contribute") 
 c = contact id (change if necessary) 
 r = recurring contribution id (change) 
 b = initial contribution ID (change) 
 p = participant_id OR contribution_page_id (keep) 
 * Press Continue, then Submit 

 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