To refund useing express checkout there is refundTransaction method.
One of fields it returns: REFUNDSTATUS which can have values: instant and delayed.
If ACK Success and REFUND_STATUS instant, it means that refund is successful.
What does delayed mean? Does it mean that refunding is pending and ipn will be received?
If so what ipn will be sent if refund is successful and when it fails?
From: https://developer.paypal.com/docs/classic/api/merchant/RefundTransaction_API_Operation_NVP/
PENDINGREASON
Reason that the refund payment status is delayed. It is one of the
following values:
none – The refund status is instant.
echeck – The refund status is delayed.
regulatoryreview - The payment is pending while we make sure it meets
regulatory requirements. You will be contacted again in 24-72 hours
with the outcome of the review.
If the status is pending you should also get an update when the status updates.
Related
I have a transaction with "Correlationid" with Paypal's Express Checkout NVP API. How can I get the details for this correlationid as to whether the transaction was completed or denied?
The CorrelationID is pretty much useless as the transactionID is used in reference lookup such as this. The best solution here to do is run the GETTRANSACTIONDETAILS API call for Express Checkout using the:
PAYMENTSTATUS Status of the payment.
It is one of the following values:
None — No status
Canceled-Reversal — A reversal has been canceled, for example, when you win a dispute and the funds for the reversal have been returned to you.
Completed — The payment has been completed, and the funds have been added successfully to your account balance.
Denied — You denied the payment. This happens only if the payment was previously pending because of possible reasons described for the PendingReason element.
Expired — The authorization period for this payment has been reached.
Failed — The payment has failed. This happens only if the payment was made from your buyer's bank account.
In-Progress — The transaction has not terminated, for example, an authorization may be awaiting completion.
Partially-Refunded — The payment has been partially refunded.
Pending — The payment is pending. See the PendingReason field for more information.
Refunded — You refunded the payment.
Reversed — A payment was reversed due to a chargeback or other type of reversal. The funds have been removed from your account balance and returned to the buyer. The reason for the reversal is specified in the ReasonCode element.
Processed — A payment has been accepted.
Voided — An authorization for this transaction has been voided.
Here is a document to assist you with this call and parameters:
GetTransactionsDetails API
Is it possible to reject / auto refund after receiving IPN message with COMPLETED status but the txn_id is duplicated or the price value is incorrect?
Or manual investigation need to be done to refund
If you are verifying your IPN calls with PayPal, this should (in theory) be impossible. PayPal never duplicates transaction IDs.
Is it possible to reject / auto refund after receiving IPN message with COMPLETED status but the txn_id is duplicated or the price value is incorrect?
You can't reject the transaction with IPN. You aren't in a transaction. You're getting notification that a transaction has already occurred.
You may be able to use another API to reverse the transaction, as suggested by #geewhiz.
I am currently working on a project using PayPal. When I made a transaction, the payment status in the IPN received was 'Pending' and reason was Payment review. I found out that it will take 24 hours for the review process. So I want know if I will get an IPN when the review process is over?
You should get an IPN notification when the transaction changes status. For example, PayPal sends you an IPN notifying you of a pending payment. PayPal later sends you a second IPN telling you that the payment has completed.
Because of security reasons you may get the first IPN with payment status pending But when the payment review is over You will get another IPN with payment status as completed.You can can transfer your stuffs then.The payment review will take maximum 24 hours.
I do not understand this IPN values:
status=COMPLETED
transaction[0].status_for_sender_txn=Pending
transaction[0].status=Pending
I'm using adaptive payments, but I don't know why status is allways COMPLETED and transaction[0].status is allways Pending!!!!
I'm using sandbox, but I don't understand why the transactions are allways pending, I don't know when to enable the buyer to download the contents that he payed...
And there is no official documentation on the web...
The status of the transaction can be Pending in 'delayed chained' payments or if the receiver does not have a PayPal account. Can you post the whole payload? I can see only a part of it. Is this a chained payment you are trying? Is the receiver primary or secondary?
I'm using the PayPal Adaptive Payments API. I have a script that receives the IPN postback when a payment is made. In this script I need to perform validation, including checking that the status of the payment is COMPLETED, as specified by the documentation:
Confirm that the "payment_status" is "Completed," since IPNs are also sent for other results such as "Pending" or "Failed"
The documentation hasn't been updated for Adaptive Payments which use different parameters (not payment_status). The parameters I receive are documented here and there are two status fields:
status
The status of the payment. Possible values are:
CREATED – The payment request was received; funds will be transferred once the payment is approved
COMPLETED – The payment was successful
INCOMPLETE – Some transfers succeeded and some failed for a parallel payment or, for a delayed chained payment, secondary receivers have not been paid
ERROR – The payment failed and all attempted transfers failed or all completed transfers were successfully reversed
REVERSALERROR – One or more transfers failed when attempting to reverse a payment
PROCESSING – The payment is in progress
PENDING – The payment is awaiting processing
and
transaction[n].status
The transaction status, where [n] is a number from 0 to 5. For simple single-receiver payments, this number will be 0. Numbers larger than 0 indicate the payment to a particular receiver in chained and parallel payments.
Possible values are:
Completed
Pending
Refunded
Simply put, I don't know which one I should be using. The payment status or the transaction status?
(I'd place my bets on transaction status but then I don't know what the purpose of the payment status is when you have more than one transaction in a request (when using chained payments, for example). Then again, the payment status has more possible values, so perhaps that's the "overall" status and should be used.)
You would want to look at transaction[n].status, and this would be an array. This is because with adaptive payments, a single transaction can be split into multiple transactions to different merchants.
The status is just saying that the api call went through and completed successfully. It was processed. The transaction[n].status tells you what the status is of each transaction in that call.