PayPal C# API - ExecutePayment Randomly Fails
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am having an issue with ExecutePayment call failing randomly - this results in the payment not going through.
Here is the process flow:
- User Clicks to Pay via PayPal
- User is redirected to PayPal after creating a 'approval_url' by calling payment.Create(apiContext);
- User confirms with payment with PayPal and is redirected back to our site.
- We then process the order after validating the PaymentID passed back by PayPal matches the original PaymentID and then call 'payment.Execute(apiContext, paymentExecution);' This call also let's us update the invoice # and etc.
The issue is on some random occasions the payment.Execute() call will throw an error of "The remote server returned an error: (400) Bad Request."
When this error occurs, the payment.Execute() call never goes through which then causes the payment not to go through. but since we have already processed the order based on the initial approval and are using payment.Execute to update the order invoice#, it results in the transaction not going through but the order being processed, we then have to reverse the order.
I am wondering what are some best practice tips for dealing with this situation.
The reason I am doing the second call of payment.Execute() is it seems like that's the only way to do it, how can I have the first call finalize the payment without relying on the second call and use the second call just for updating the invoice number and description.
Here are some Debug ID's: 87a80d2969ede, b7480c0696509
- Labels:
-
REST SDK
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, the DebugID shows a "The instrument presented was declined by the bank". In these situations, when the card used by the buyers is declined by their own bank (for any reason we are not able to know for privacy laws), you should eventually implement a procedure in your script that handle these errors and maybe returns a message to the customer. If no errors then update the invoice # and register the order in your own integration/DB, if any error show a message to the buyer about the payment declined.
The payment with REST needs 2 steps, creation and execution. You can't complete the payment only with the first one I am afraid.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Andre,
Thank you for the reply.
We were hoping to first get the customer's approval --> process the order --> finally execute payment with updated invoice #. But now we can't process the order until we execute the payment to make sure that it went through. Now when we execute the payment, then we can't update it anymore... What do you think we can do in this scenario? We are now avoiding putting an invoice # on the orders and just using an auto gen data. Just wanted to see how others were handling this scenario.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I had the same problem, 400 Bad Request.
I opened a new Question here:
https://www.paypal-community.com/t5/REST-APIs/400-Bad-Request/m-p/1649271#M1737
I have to ask to check the DebugIds every time in this forum?
or there is another way to check what happened for the specific case?
Why the API Calls list page does not offer any info apart from OK/Fail ?
Haven't Found your Answer?
It happens. Hit the "Login to Ask the community" button to create a question for the PayPal community.
- PayPal Checkout golden buttons opens checkout window with different options in PayPal Upgrade Community
- WPS Using _xclick randomly missing on3/os3 variables in PayPal Payments Standard
- GetInvoiceDetails stopped working in NVP/SOAP APIs
- Implement user logout after payment completed with PayPalButtons in SDKs
- Woocommerce Paypal Payments plugin: randomly failed transactions in PayPal Payments Standard