Hello Benedikt,
There is only one issue open. The step 7 of the payment flow is missing. This is, the okUrl handling.
On mtid= ### zensiert ### the card was successful assigned to the transaction. But you never checked the status of the transactions with getSerialNumbers and called executeDebit. The transaction expired and the money has been released back to the card.
This refers to the step 7 of the payment flow below. We expect that you check the status of the transaction at the okURL and if necessary you have to finish the transaction at the okURL.
You can test the handling of the okURL by sending and empty pnURL.
1. Call createDisposition function.
a. If the result is not false -> redirect the customer to the payment panel
i. If the result of the function createDisposition is not false, the return value is the redirection URL to the payment panel.
b. If the result if false -> show an error message to the customer
2. The customer reach the payment panel
3. The customer entered a valid PIN and clicks pay
4. Since the card is assigned to the transaction, we send you a notification to your pnURL
5. Upon receipt of the payment notification you have to call the function getSerialNumbers
a. If the result is false, do not make any user account credit. No actions required. (Handling on okURL)
b. If the result is true, do not make any user account credit. In that case the transaction is already debited. No actions required. (Handling on okURL)
c. If the result is execute, please call the function executeDebit
i. If the result is true -> make a user account credit
ii. If the result is false -> do not make any user account credit. No actions required. (Handling on okURL)
6. We redirect the customer to your okURL
7. You check on the okURL with the function GetSerialNumbers the state of the transaction
a. If the result is false -> show an error message to the customer
b. If the result is true -> show a success message to the customer (transaction is already finished)
c. If the result is execute, please call the function executeDebit
i. If the result is true -> make a user account credit and show a success message to the customer
ii. If the result is false -> show an error message to the customer
Kind Regards,