10-26-2018 01:06 PM - edited 10-26-2018 01:12 PM
Hello fellow developers!
We the following problem with the iOS in-person-SDK.
We set the transaction-type to authOnlyTransaction, and start the ENVViewController from the sdk with the request to authorize the payment...
The user enters the card and signature and the transaction runs through and we see the transaction as authorized in the portal. And a green UI on the iPad with status authorized.
But with logging enabled we saw a second request happing after the user pressed ok:
For an unknown reason the EMVViewcontroller starts the prior to authorize charge automatically which causes the credit card to be charged anyway.
Everything happens inside the sdk, even though we explicitly set the transaction-type to avoid the direct charge (which we want to be done by our backend at the end using ABS).
#0 0x0000000104edc1f8 in -[AnetEMVTransactionRequest(Why) setTransactionType:] at AnetEMVTransactionRequest+Why.m:22
#1 0x0000000107d38940 in -[AnetEMVTransactionRequest init] ()
#2 0x0000000107d388d0 in +[AnetEMVTransactionRequest transactionRequest] ()
#3 0x0000000107cd9748 in -[AnetEMVSettlement priorAuthWithPaymentInfo:transactionID:sessionToken:andTransactionRequest:] ()
#4 0x0000000107d2b934 in -[AnetEMVController captureTheTransaction:] ()
#5 0x0000000107d2df44 in -[AnetEMVController setIsTransactionApproved:] ()
We could "hack" a intermediate solution by overwriting the getter of the transactionType to always return "authorizeOnly".
This would then cause the hidden request to not perform the charge.
However we are not satisfied with this solution.
Is there a way to opt out of the automatic charge if the authorization is successful?