Page MenuHomePhabricator

email update process for recurring PayPal donors: issue + question
Closed, ResolvedPublic

Description

Yamini found a recurring PayPal donor CID 8163224 whose donations continued to reach Civi under their old email address, even after they changed their email address at PayPal. The June and July donations, 9X837550BY874902E and 40F59210D9592642T, show a different email address at PayPal than the one in the CID.

This is different than what we expect to happen, which is that Civi will pick up the new email address when it is changed by the donor at their PayPal account. At the meeting today, @Ejegg confirmed that PayPal is sending the new email address, and also cautioned that the process of moving off of Drupal may expose some unusual effects from old custom code.

This Task is to request that Civi ingest the newly updated email addresses from PayPal, but also to raise the question of what the list of rules is for for email changes for recurring donations.

Email changes source from:

  • the email preference center T401006
  • donors at their Paypal account
  • staff agents in Civi

Can we make sure that the same rules apply to email address updates regardless of the source of the change? Will the rules be agnostic across payment methods?

Event Timeline

Seilo and Kris found another, cid=8804442 has a recurring created on October 10th, 2021 and the email addresses don’t match between PayPal and Civi - Civi is not pulling in the updated email.

The solution for avoid creating new email for paypal donor:

  • We disable the update primary email from email preference center if donor have active recurring paypal T401006
  • Update the logic for consume new donation that if any home address of email matched paypal, do not create a new contact but use the oldest cid T404154
  • Add a logic for recurring donation with third-party ( paypal ec in this case ) if payer_email not match the contrition add to cid as secondary email address (add new email type like paypal email venmo email google email apple email and so on)
  • Check if we have way to add payer_id as external id and map them

Change #1193274 had a related patch set uploaded (by Wfan; author: Wfan):

[wikimedia/fundraising/crm@master] add paypal payer id in external identifier table for paypal

https://gerrit.wikimedia.org/r/1193274

Change #1193274 merged by jenkins-bot:

[wikimedia/fundraising/crm@master] add paypal payer id in external identifier table for paypal

https://gerrit.wikimedia.org/r/1193274

ask if gravy can add payer[‘payer_id’] from auth response add to capture response?
"payment_method": {

  "type": "payment-method",
  "approval_url": null,
  "country": "US",
  "currency": "USD",
  "details": null,
  "expiration_date": null,
  "fingerprint": null,
  "label": "xxx@xxx.com",
  "last_replaced_at": null,
  "method": "paypal",
  "mode": "redirect",
  "scheme": null,
  "id": null,
  "approval_target": null,
  "external_identifier": <PAYPAL PAYERID>,
  "payment_account_reference": null
}

Change #1222299 had a related patch set uploaded (by Wfan; author: Wfan):

[wikimedia/fundraising/crm@master] add paypay payer id for gravy paypal

https://gerrit.wikimedia.org/r/1222299

Change #1222300 had a related patch set uploaded (by Wfan; author: Wfan):

[wikimedia/fundraising/SmashPig@master] WIP: map paypal payer id from gravy to civi

https://gerrit.wikimedia.org/r/1222300

Change #1222299 merged by jenkins-bot:

[wikimedia/fundraising/crm@master] add paypay payer id for gravy paypal

https://gerrit.wikimedia.org/r/1222299

Change #1224231 had a related patch set uploaded (by Wfan; author: Wfan):

[mediawiki/extensions/DonationInterface@master] Add payer id to message queue as external_identifier

https://gerrit.wikimedia.org/r/1224231

Change #1224248 had a related patch set uploaded (by Wfan; author: Wfan):

[wikimedia/fundraising/crm@master] Add paypal payer id if paypal from queue to civi

https://gerrit.wikimedia.org/r/1224248

Change #1224248 merged by jenkins-bot:

[wikimedia/fundraising/crm@master] Add paypal payer id if paypal from queue to civi

https://gerrit.wikimedia.org/r/1224248

ask if gravy can add payer[‘payer_id’] from auth response add to capture response?
"payment_method": {

  "type": "payment-method",
  "approval_url": null,
  "country": "US",
  "currency": "USD",
  "details": null,
  "expiration_date": null,
  "fingerprint": null,
  "label": "xxx@xxx.com",
  "last_replaced_at": null,
  "method": "paypal",
  "mode": "redirect",
  "scheme": null,
  "id": null,
  "approval_target": null,
  "external_identifier": <PAYPAL PAYERID>,
  "payment_account_reference": null
}

On Jan19th, gravy released the payer id added to additional_identifiers as payer_id in both auth and capture

Change #1224231 merged by jenkins-bot:

[mediawiki/extensions/DonationInterface@master] Add payer id to message queue as external_identifier

https://gerrit.wikimedia.org/r/1224231

Change #1233252 had a related patch set uploaded (by Wfan; author: Wfan):

[mediawiki/extensions/DonationInterface@master] Update wording to indicate the external_identifier used for venmo and paypal payer id

https://gerrit.wikimedia.org/r/1233252

Change #1222300 merged by jenkins-bot:

[wikimedia/fundraising/SmashPig@master] map paypal payer id from gravy to civi

https://gerrit.wikimedia.org/r/1222300

XenoRyet set Final Story Points to 8.

Change #1233252 merged by jenkins-bot:

[mediawiki/extensions/DonationInterface@master] Update wording to indicate the external_identifier used for venmo and paypal payer id

https://gerrit.wikimedia.org/r/1233252