-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RetrievePaymentResponse externalId problem #180
Comments
|
Inside of a processPayment function that I set up, I do the following:
That's the base of the logical flow. Beyond that, my test cases:
After test case 2 above, the transaction does show up as "Open" under the orders app on the clover device, but it returns a not found on externalId lookup through the SDK. Here's a relevant chunk of code too:
|
Also, regarding your second point, if there was an endpoint or tool I could use to retrieve all payments currently sitting on the Clover device, I could show a list in my app on the employee facing side which would allow for more thorough linking of my orders in my database to the associated transactions on my Clover device. Definitely seems like it could be a useful administration tool. |
You should use our community site if you are unsure about something or have a question - https://community.clover.com/index.html.
Based on this description, there should NOT be a Clover payment in this scenario, so the NOT_FOUND response is accurate. You haven't done anything on the device, so the device should be on the payment screen when you reboot it. We don't create a payment until the card is processed. We do create an order but an order is not a payment. In Clover the order is king and you can't have a payment without an order. As a result when a payment is initiated we create an order for you (behind the scenes) but the order is not something a third party POS should be concerned with or need to reconcile. So, in summary, there is nothing for you to void etc. A payment doesn't exist for the external id you have provided and you can proceed with a new payment in this scenario. |
Sorry, opened here as I thought this was an issue. If I open the closeout app on the device, it shows the button to close the batch as disabled and I can't click it. Upon investigation I found a bunch of "open" orders in the orders app. I understand I can now safely ignore those as they don't reflect actual open transactions, but hopefully you can understand me opening this request here as I was under the impression this was undesired behavior. What's causing me to be unable to close out transactions then? I know manual close (via the SDK) isn't enabled on my merchant account, but I thought I would still be able to use the closeout app. I thought those open orders were what was causing the problem. |
An open order (with no payments) isn't going to prevent you from closing out. Manual closeout is either disabled for your merchant (default in sandbox) or you are in a region that doesn't support manual closeout. |
Thanks for the help here. |
No, problem. Happy to continue to help but I believe the community is a better initial forum. If you do find an issue we will create a ticket internally. Thanks. |
I'm working on trying to implement open payment checking in my app to ensure that there are no transactions left in an open state before beginning a new transaction. This process is described here:
https://docs.clover.com/docs/payment-reconciliation-and-recovery
right now, I'm just using localStorage to stash the externalPaymentId that I generate for each payment request. When I get the successful response back from the device for a payment, I then wipe the localStorage key. Before running a new payment, I first check to see if anything is saved in the local storage value, and if so, it implies that a break down occurred between when a payment request was sent and the response was received. This means we have a payment request in an unknown state.
So here's the thing, upon testing, it only seems to work in certain scenarios. For example, if I begin a payment request on the device and then restart my POS app on my computer, it successfully looks up the half finished transaction on the next reload and returns its info. If, however, I power cycle the Clover device while it's in the middle of a payment request, then when it comes back online and my POS app reconnects, the next payment lookup attempt results in a "NOT_FOUND" status code, as if the Clover device forgot about this external ID. If I open the orders app on the Clover device, however, I can see the transaction hanging out in there as "open", and I can't do anything about it. Not sure why the external ID seems to not work after a Clover device reboot. Is this a known issue, or possibly a result of misunderstanding of how external IDs should be used? I assumed since I see the open transactions hanging out, it means they're on the device, but if my external ID lookup no longer works, I have no idea how to recover to a state where I can complete / void these transactions. Also, is there any way to obtain a list of ALL open transactions (or even all transactions, open and closed) through this SDK? That seems like it would help negate this issue as I wouldn't have to check for individual payment IDs, but rather could just get the open batch list and iterate it to check for any non-complete payments.
The text was updated successfully, but these errors were encountered: