Introduction
To enable single tap at check-in, the authorization amount must be known when the card is presented. This means that the customer must begin with selecting check-in or check-out. This is normally done by the system when post payment flow is started by presenting the card. But that flow will lead to double tap since it takes too long time between presenting the card to when the authorization amount is known, especially when stepping the authorization amount.
Single step flow
1.Select check-in
2.Step amount or use a predefined authorization amount
3.Press Accept
4.Present the card (single tap)
a.Detect card
b.GetToken (mode 4) to fetch masked pan and card expire date - Recall
c.GetToken (mode 2) to fetch CICO-token
d.CadPay (Authorize)
5.Check-in
Limitations
•Only works with the Archipel dll
•No support for fleet cards
oNot implemented in Archipel dll
oFor EV charging, WebOffice cannot stop charging sessions since the checkout is processed by CWT
•No support for Card-fee
oNot implemented. No implementation planned.
•No support for <PAYMENTSERVICE checkIn = “Confirm” />
Configuration without purchase prerequisites
Cwtconfig.xml
<PAYMENTSERVICE postPay="true" postPayStartWithCard="false" checkInTicket="ConfirmAfterAuthorization"/>
ConfirmAfterAuthorization makes the check-In ticket to come after card data which means that recall can be used for digital receipts.
<PAYUNIT name="Ext0" type="CardCollector" filename="archipel_gc.dll" >
<extendedproperties>
<properties name="PostPayStartWithCard" value="false" />
</extendedproperties>
</PAYUNIT>
UI.xaml
Check-In:
After selecting PAT, the PostPay_StartPanel panel is shown. because the EVHub.dll does not drive the flow, an auto click button is needed to trigger the purchase flow.
<TFT:Panel MxStyle="{PanelStyle1}" Name="PostPay_StartPanel">
<Controls>
<TFT:Button MxStyle="{ArticleButtonStyle}" Name="OnCheckOut" Click="OnAmountStep" KeyValue="0" AutoClick="true" Location="-100,0" />
</Controls>
</TFT:Panel>
Check-In:
After selecting the authorization amount, the Accept button should have an aimed pay unit.
<TFT:Panel MxStyle="{PanelStyle1}" Name="PostPay_Panel2">
<Controls>
<TFT:Button MxStyle="{AcceptButtonStyle}" KeyValue="archipel_gc.dll"/>
</Controls>
</TFT:Panel>
<TFT:Panel MxStyle="{PanelStyle1}" Name="PostPay_Panel3">
<Controls>
<TFT:Button MxStyle="{AcceptButtonStyle}" KeyValue="archipel_gc.dll" />
</Controls>
</TFT:Panel>
Check-In:
The authorization in progress Pop-up is not needed.
<TFT:PopupPanel MxStyle="{PopupStyle}" Name="AuthorizationInProgressPopup">
Check-In.
The CheckInStatusRequested Pop-up should not be included.
<TFT:PopupPanel MxStyle="{PopupStyle}" Name="CheckInStatusRequestedPopup">
Check-In/Out:
To abort when ArchiPEL is presenting “Insert or tap card”:
•To allow the ArchiPEL pop-ups to abort a purchase they must be configured to use popup2 in the extended properties. (see the standard config for this)
<properties name="PopupInsertCard" value="2" />
<properties name="PopupInsertOrTapCard" value="2" />
<properties name="PopupTapCard" value="2" />
<properties name="PopupInsertCardFully " value="2" />
•Add an abort button
<TFT:Button MxStyle="{RejectButtonVisualStyle}" Name="AbortInsertCard" Click="OnExternalPayUnitGeneralFunction" IndexValue="641" KeyValue="archipel_gc.dll" />
oin the ExternalPayUnitPopup2 pop-up panel
<TFT:PopupPanel Name="ExternalPayUnitPopup2">
oOr in the corresponding ExternalPayUnitPopup that presents the “Insert or tap card”
<TFT:PopupPanel Name="PopupInsertOrTapCard">
Check-Out:
When selecting Check-Out, the panel PostPay_StartPanel is shown. An auto click button is needed to trigger the ArchiPEL reader to start detecting cards.
<TFT:Panel MxStyle="{PanelStyle1}" Name="PostPay_StartPanel" ArticleGroup="EndEVSession">
<Controls>
<TFT:Button MxStyle="{ArticleButtonStyle}" Name="OnCheckOut" Click="OnCheckOut" KeyValue="archipel_gc.dll" AutoClick="true" Location="-100,0" />
</Controls>
</TFT:Panel>
New Pop-ups
<TFT:PopupPanel MxStyle="{PopupStyle}" Name="CheckInButAlreadyCheckedInPopup" Timeout="5" >
<Controls>
<TFT:Label MxStyle="{DebugLabelStyle}" FormattedText="CheckInButAlreadyCheckedInPopup" />
<TFT:Label MxStyle="{PopupTextLabelStyle}" Name="CheckInButAlreadyCheckedInLabel" FormattedText="CheckIn but already CheckedIn - Abort" />
</Controls>
</TFT:PopupPanel>
<TFT:PopupPanel MxStyle="{PopupStyle}" Name="CheckOutButNotCheckedInPopup" Timeout="5" >
<Controls>
<TFT:Label MxStyle="{DebugLabelStyle}" FormattedText="CheckOutButNotCheckedInPopup" />
<TFT:Label MxStyle="{PopupTextLabelStyle}" Name="CheckOutButNotCheckedInLabel" FormattedText="CheckOut but not CheckedIn - Abort" />
</Controls>
</TFT:PopupPanel>
Configuration (with purchase prerequisites)
Cwtconfig.xml
<PAYMENTSERVICE paymentServiceId="1" postPay="true" postPayStartWithCard="false" checkInTicket="ConfirmAfterAuthorization" purchasePreRequisitesMode="Online/OnlineWithOfflineFallback/…" />
<ARTICLE articleId="2" name="CheckOut" group="CheckOut">
<paymentService id="1" />
</ARTICLE>
When the Payment Service is selected, the PurchasePreRequisitesIdentifierInputPanel is shown as the first panel before the PAT Selection panels. At check-in this is suitable, but for check-out, no purchase prerequisites identifier input is needed.
Having a dedicated Article for check-out and when that Article is selected, a kick-start of check-out will make the system skip the PurchasePreRequisitesIdentifierInputPanel at check-out.
Below is a button that selects the dedicated Article and kick-starts the check-out.
<TFT:Button Name="CheckOut" FormattedText="Check-Out" Click="OnDoActions" >
<TFT:Action Click="OnArticleSelectAndConfirm" IndexValue="2" />
<TFT:Action Click="OnCheckOut" IndexValue="1" KeyValue="archipel_gc.dll" />
</TFT:Button>
The PurchasePreRequisitesIdentifierInputPanel might be shown for a short while. To avoid confusion and flickering flow, an empty PurchasePreRequisitesIdentifierInputPanel for the check-out Article can be defined.
<TFT:Panel MxStyle="{PanelStyle1}" Name="PurchasePreRequisitesIdentifierInputPanel" ArticleGroup="CheckOut" >
<Controls>
<TFT:Label MxStyle="{DebugLabelStyle}" FormattedText="PurchasePreRequisitesIdentifierInputPanel" />
</Controls>
</TFT:Panel>