Add 'forget-anything-you've-been-told' method/feature to the Connector for semi-integration
Here's the use case:
- The POS initiate a payment on Clover over the semi-integration
- The POS is unexpectedly down before it has enough time to finish the transaction (it's down because of many possible reasons: power lost, OS frozen, POS closed/killed - especially when the POS is running in a browser, network connect between it and the clover is lost/interrupted....)
- When POS comes back, employees start a new payment or re-initiate the previous failed payment: it will fail because it has no idea about the current state of Clover.
If the Connector has some method for the POS to basically tell the Clover 'hey, forget anything you have been told / get out anything you're doing' every time before it tells the POS to initiate a payment (or when the POS try to establish connection to the Clover), then it will make the integration more resilient, and fool proof for checkout employees.
The Clover often is exclusively designated for its corresponding POS in this integration, so there shouldn't any other thing for the POS to interfere with by calling this proposed method.
This exists - ICloverConnector.resetDevice, however it should be used as a last resort as it may also void any active payment on the device. Using resetDevice is not correct for the situation you describe. A robust POS should be persisting the externalId before a payment is initialized and mapping it to the Clover payment when a successful payment response is received. This will allow the POS to determine if there is a pending payment and resolve it. A pending payment can usually be resolved by using ICloverConnector.retrieveDeviceStatus and setting the sendLastMessage flag to true. This will force the Clover device to resend the last message which will usually allow the POS to recover.
Write a Comment
Welcome to the Clover Developer Community
Your Opinion Counts
Share your great idea, or help out by voting for other people's ideas.