Skip to content
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

Asynchronous completion with Worldline Valina fails #44

Open
stimm4711 opened this issue Apr 23, 2024 · 3 comments
Open

Asynchronous completion with Worldline Valina fails #44

stimm4711 opened this issue Apr 23, 2024 · 3 comments
Labels
question Further information is requested

Comments

@stimm4711
Copy link

stimm4711 commented Apr 23, 2024

NuGet Package Version

3.3.1

Payment service provider

First Cash

Payment terminal

Worldline Valina, Ingenico Move 3500

Communication Logs

No response

More information

Hello,

I'm having a problem with asynchronous payment functionality.
In the description of ZvtClientConfig.GetAsyncCompletionInfoLimit it says, that the payment terminal tries every 2-4 seconds to get the state if the goods are issued.
But in my case I've set the limit to 255 and it reaches it within two seconds because it triggers CompletionDecisionRequested every few milliseconds.

I know this is pretty sure not an issue with this library but maybe you know if there is something wrong configured in the payment terminals? Any help is very much appreciated :)

@stimm4711 stimm4711 added the question Further information is requested label Apr 23, 2024
@stimm4711
Copy link
Author

stimm4711 commented Jun 17, 2024

What I have found out is, that this library is missing a parameter for the 06 01 payment command.
image

There is no possibility to set the 01 timeout. That says the PT that the response of the ECR is expected in this time. Otherwise the PT will abort the payment. If the ECR does not wait, it will send the response back directly and so the tries are counted up that fast.

What needs to be added is, that the parameter 01 is set for asynchronous payments (like it is already done for the retries) and the ECR must wait up to this timeout with sending the response if filling / issue of goods didn't happen yet.

@stimm4711
Copy link
Author

Here some more information from the ZVT documentation:

If the ECR cannot complete the issue of goods within time , the ECR responds to the PT a Status-Information with “84-9C”. In this case the PT waits 2 seconds and sends then a Status-Information again. The parameter <max. status-infos> prevents this sequence from running in an infinite-loop.

@MLDMoritz
Copy link

MLDMoritz commented Jun 18, 2024

Use GetAsyncCompletionInfoLimit in ZvtClientConfig as a workaround. Default is 10, so you probably ran into timeout about ~20s after starting.
Increasing GetAsyncCompletionInfoLimit to 255 (*2) would lead to a timeout of ~510s.

Edit: Didn't see it's counting up fast. Then you could just add it to ZvtClient.cs at PaymentAsync Method:

package.Add(0x01); // timeout
package.Add(0x255); // for ex.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants