PayPal IPN for Reversal and Canceled_Reversal payment status - paypal

I have search a lot but I can not find the answer. I am intergrading paypal with my site and I am using ipn to get messages back to my site about transaction statuses. I have so far completed the "Complete" and "Refund" statuses. What I do when I receive a "Complete" status is that I issue a license key and when I receive a "Refund" status I revoke the corresponding license.
What I am not sure is what should I do when I receive a "Reversal" and/or "Canceled_Reversal" status. Should I revoke the license when I receive a "Reversal" status and then re-issue it again if I receive a "Canceled_Reversal" status regarding the same transaction?
Or does a "Canceled_Reversal" status can come without a corresponding "Reversal" status? Am I understating this correctly?
Thanks

Should I revoke the license when I receive a "Reversal" status and then re-issue it again if I receive a "Canceled_Reversal" status regarding the same transaction?
Yes. More probably you should suspend it and de-suspend it, if your system has such a concept.
Or does a "Canceled_Reversal" status can come without a corresponding "Reversal" status?
No.

Related

Can ExpressCheckout identify if the transaction is approved?

Some time ago I developed a custom shopping cart for a simple website which sell mainly digital goods. I integrated ExpressCheckout on it, and after the DoExpressCheckout operation, if the response contains ACK equal to Success or SuccessWithWarning (just as the sample code at that time says) then I immediately set access to the content for the user.
I see this is a great mistake, since yesterday a transaction did not appear at the owner's account, but appears in the site since user had access. After contacting PayPal we checked this particular transaction was denied. To late, since access was already granted to the user.
So what should I do? Is it because of the SucessWithWarning not reviewed, or never I should grant access to a user just by finishing DoExpressCheckout? Shall I use IPN to receive information about the transaction to only after grant the user access to the content?
Yes, you'll want to use IPN for post-transaction processing, and you'll only want to grant access once the payment status is completed.
In the case of an e-check you'll get an IPN with a status of pending, and then you'll get another IPN with updated status once that e-check clears (or fails).
Of course, this happens in real-time so you can automate the process accordingly based on the data sent.

GetRecurringPaymentsProfileDetails STATUS Definitions

I'm checking the payment profile statuses with GetRecurringPaymentsProfileDetails, however I cannot find any documentation on the definition of the statuses returned.
The STATUS could be:
Active
Pending
Cancelled
Suspended
Expired
Active, Pending and Expired are straight forward enough but was about "cancelled" and "suspended". Does a "suspended" account have anything to do with reversals or refund attempts? What about cancelled?
API documentation
Suspended means the subscription is temporarily on hold on the user's end either due to the user placing it on hold or paypal due to payment not going through.
Cancelled means the user cancelled the subscription within paypal

Can users repay transaction when the status of PaymentDetails is ERROR?

Users of my app can create and pay transaction via AdaptivePayments API.
In various cases the transactions ended up being in ERROR status (so the request for PaymentDetails says). What can be the cause of this?
And is the user then able to retry the payment of this transaction with the same paykey or is it necessary to create a completely new transaction?
Thanks.
The reason for the return of the "ERROR" status can be determined from when you originally submitted the API call. You would have received a failure notice with an error code and an actual error message.
You can't retry the payment, unfortunately. If the "ERROR" was caused by a decline the sender would need to update their funding source or address whatever caused the decline but you wouldn't be able to try and complete it again with the same paykey.

IPN payment_status variable

I am using PayPal's IPN service to confirm payment. My listener is checking the payment_status variable hoping to find "Completed". I don't want to do anything in my database unless the payment comes back "Completed". My question is, what if it does not come back with that status? Will PayPal continue to communicate with my listener until it is complete? For example, the status could come back as "Processed", which appears to be a step before "Completed". Below is a link to a document with all of the variables:
https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/ipnguide.pdf
On page 10:
Because IPN messages can be sent at various stages in a transaction’s progress, make sure
that the transaction’s payment status is “completed” before enabling shipment of
merchandise or allowing the download of digital media.
So yes, I think PayPal will always give you an IPN with Completed status.

Does paypal resend IPN once a payment status has been changed from pending to complete/failed?

I have done some scouring but cannot find a definitive answer for this!
I get "VERIFIED" and "Pending" so i can put my orders from "placed" to "in-progress" but need the complete / failed so i can then transfer to "paid" and "cancelled".
Anyone have anything definitive on this, or is it a waiting game until test payments are complete (not using sandbox).
If the payment has a “Pending” status, you receive another IPN when the payment clears, fails, or is denied.
Also, here are some good things to check once you receive Payment_staus=completed
Check that the "txn_id" is not a duplicate to prevent a fraudster
from using reusing an old, completed transaction
Validate that the "receiver_email" is an email address registered in
your PayPal account, to prevent the payment from being sent to a
fraudster's account
Check other transaction details such as the item number and price to
confirm that the price has not been changed
You get another IPN (not a 'resend'), same txn_id, with payment_status='Completed'.