We have a paypal pro setup for a contribution page and the ipn response for a normal contribution looks like -
{"transaction_subject":"","payment_date":"16:37:45 Sep 02, 2018 PDT","txn_type":"web_accept","last_name":"xxxx","receipt_id":"2600-0803-0809-7320","residence_country":"US","item_name":"Online Contribution: Personal Membership","payment_gross":"35.00","mc_currency":"USD","business":"[email protected]","payment_type":"instant","protection_eligibility":"Ineligible","verify_sign":"xxxx","payer_status":"unverified","payer_email":"[email protected]","txn_id":"7F410221CJ172415V","quantity":"1","receiver_email":"[email protected]","first_name":"xxxx","invoice":"89272b33abe6e127f59343e2a9b44a2c","payer_id":"9X46HRFGKLWH2","receiver_id":"R6MXHRC5VK3G8","item_number":"","payment_status":"Completed","payment_fee":"1.07","mc_fee":"1.07","mc_gross":"35.00","custom":"","charset":"windows-1252","notify_version":"3.9","ipn_track_id":"xxxxx"}
https://civicrm.stackexchange.com/a/17991/245 mentions that paypal pro ipn is only handled for recurring payments and others are simply ignored.
What seems incorrect to me is when an rp_invoice_id
(not set for non-recurring payment) is missing in the response parameters, the payment processor is assumed to be of Paypal Express type and further handling is done with handlePaymentExpress
function.
This function throws an exception when a payment is not of recurring type and hence sends a failed
delivery status to paypal.
On the other side, civi contribution is completed and all works fine in the backend. It is just that paypal isn't getting a positive response for the ipn URL and hence the Paypal system send us a warning email re failed IPN calls about 2x/day.
Is this something missing in the code which incorrectly sets payment express
for not seeing rp_invoice_id
in the response? Should it also check for another param before deciding it as a paypal express transaction?
Update: CiviCRM version - 5.5.
Thanks.