Aircash Pay Deposit

The Aircash Pay Deposit method supports payments with the Aircash mobile app.

The customer journey starts on the merchant´s website or native app. The customer will be redirected to the Aircash frame and will have to approve/authorize the transaction.

The user will have to scan the QR code and confirm the notification on his mobile phone. The user is recognized (only) by his phone number which he inputs in the Aircash frame. If the user enters his phone number, he/she will receive a notification on his/her phone. The detail userID passed to Aircash is used to prefill the user´s phone number, so that Aircash can remember the users phone number.

On a mobile device, when the user clicks the button "Pay" on the Aircash Frame a deeplink to open the Aircash mobile app is returned, alternatively a download link is provided.

After the successful payment the customer will be redirected to the success URL.

The following method IDs are covered in this section:

IDNameCredit/Debit State
441Aircash Pay DepositDepositedByProvider (29)

Payment method interaction type: Redirection to External Payment Provider (see Interaction Types).

Flow

Redirect Integration

Currently not supported.

Backend2BackendIntegration

The following parameters can be provided in initiatePaymentRequest.specificPaymentData:

key (value type, account type, required)value
SuccessPageUrl
(string, >optional)
URL to redirect for successful payments
CancelPageUrl (string, optional)URL to redirect if payment is cancelled
RefusedPageUrl (string, optional)URL to redirect in case of a declined transaction
HomepageUrl (string, optional)Home page URL from the merchant.
CultureInfo (string, optional)Language Identifier (RFC 3066) in the form "en-US" (will be further described once implementation is completed)
PaymentProviderId (string, optional)PaymentProviderID maybe provided optionally

📘

URLs

If the Aircash SDK is used with SDK Window Checkout mandatory parameters are the HomepageUrl.

If the SDK Redirect Checkout is used, mandatory parameters are the RefusedPageUrl, SuccessPageUrl and CancelPageUrl.

If the merchant is using it´s own method to open Aircash Frame window, then mandatory parameters are SuccessPageUrl, RefusedPageUrl and CancelPageUrl.

The following parameters can be provided in InitiatePaymentRequest.UserData:

key (value type, account type, required)value
FirstNameuser´s first name
Lastnameuser´s last name
DateOfBirthuser´s date of birth

FirstName, LastName and DateOfBirth will be send for matching purposes at Aircash. PXP will only send these fields if all of the are provided. Matching functionality also needs to be activated at Aircash.

For territories with AML regulations (i.e. Germany) that are requesting identity validation and verification, it needs to be ensured that the person on the merchant side is the same one on the Aircash side. This can be achieved by comparing the following parameters: First name, Last name and date of birth. So if the result of the personal data match is false, then the transaction should be declined.

In case of mismatch, the following will be presented to the user on the Aircash frame:

When a mismatch occurs, payment will go to state RefusedByProvider.

There is no other parameter for the merchant to see if matching personal data has failed, only that the payment will go to state RefusedByProvider.

Example initiatePaymentRequest (without user data):

<initiatePaymentRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<merchantID>{{merchant}}</merchantID>
<shopID>{{shop}}</shopID>
<merchantTransactionID>{{merchantTransactionID}}</merchantTransactionID>
<paymentMethodID>441</paymentMethodID>
<amount currencyCode="EUR">1.00</amount>
<userID>{{newUserID}}</userID>
<userData>
	<username>{{newUserName}}</username>
	<currencyCode>EUR</currencyCode>
	<languageCode>EN</languageCode>
	<email>{{newUserEmail}}</email>
	<address>
		<street>Marxergasse</street>
		<houseNumber>1b</houseNumber>
		<postalCode>1030</postalCode>
		<city>Vienna</city>
		<countryCode2>AT</countryCode2>
		<telephoneNumber>00437778889999</telephoneNumber>
	</address>
  	<gender>Male</gender>
</userData>
<userIP>127.0.0.1</userIP>
<userSessionID>bc0cd72c-8c03-40c0-8847-275d61dbd8ea</userSessionID>
<creationTypeID>1</creationTypeID>
<specificPaymentData>
	<data xsi:type="keyStringValuePair">
		<key>CultureInfo</key>
		<value>de_AT</value>
	</data>
	<data xsi:type="keyStringValuePair">
		<key>SuccessPageUrl</key>
		<value>http://merchant.com/result?status=success&amp;ref=1</value>
	</data>
	<data xsi:type="keyStringValuePair">
		<key>CancelPageUrl</key>
		<value>http://merchant.com/result?status=cancel&amp;ref=1</value>
	</data>
	<data xsi:type="keyStringValuePair">
		<key>ErrorPageUrl</key>
		<value>http://merchant.com/result?status=error&amp;ref=1</value>
	</data>
</specificPaymentData>
</initiatePaymentRequest>

Example initiatePaymentRequest (with user data):

 <initiatePaymentRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
	<merchantID>{{merchant}}</merchantID>
	<shopID>{{shop}}</shopID>
	<merchantTransactionID>{{merchantTransactionID}}</merchantTransactionID>
	<paymentMethodID>441</paymentMethodID>
	<amount currencyCode="eur">20.20</amount>
	<userID>{{newUserID}}</userID>
	<userData>
		<username>{{newUserName}}</username>
		<firstname>FirstName</firstname>
		<lastname>Lastname</lastname>
		<currencyCode>EUR</currencyCode>
		<languageCode>EN</languageCode>
		<email>{{newUserEmail}}</email>
		<address>
			<street>Marxergasse</street>
			<houseNumber>1</houseNumber>
			<postalCode>1030</postalCode>
			<city>Vienna</city>
			<countryCode2>AT</countryCode2>
			<telephoneNumber>00437778889999</telephoneNumber>
		</address>
		<dateOfBirth>1980-01-01T00:00:00</dateOfBirth>
		<gender>Male</gender>
	</userData>
  <userIP>127.0.0.1</userIP>
	<userSessionID>bc0cd72c-8c03-40c0-8847-275d61dbd8ea</userSessionID>
	<creationTypeID>1</creationTypeID>
	<specificPaymentData>
		<data xsi:type="keyStringValuePair">
			<key>CultureInfo</key>
			<value>de_AT</value>
		</data>
		<data xsi:type="keyStringValuePair">
			<key>SuccessPageUrl</key>
			<value>http://merchant.com/result?status=success&amp;ref=1</value>
		</data>
		<data xsi:type="keyStringValuePair">
			<key>CancelPageUrl</key>
			<value>http://merchant.com/result?status=cancel&amp;ref=1</value>
		</data>
		<data xsi:type="keyStringValuePair">
			<key>ErrorPageUrl</key>
			<value>http://merchant.com/result?status=error&amp;ref=1</value>
		</data>
	</specificPaymentData>
</initiatePaymentRequest>

Example initiatePaymentResponse:

<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<payment xsi:type="paymentWithPaymentAccount">
	<merchantID>B2BTestMerchant</merchantID>
	<shopID>AircashProviderShop</shopID>
	<paymentMethod>
		<key>441</key>
		<value>Aircash Pay Deposit</value>
	</paymentMethod>
	<merchantTransactionID>hc-20230623-152218</merchantTransactionID>
	<paymentID>2238c128-aef7-48b6-869c-49be7cba6011</paymentID>
	<userID>hc20230623152218</userID>
	<paymentProvider>
		<key>209</key>
		<value>Aircash</value>
	</paymentProvider>
	<amount currencyCode="EUR">1.00</amount>
	<creationType>
		<key>1</key>
		<value>User</value>
	</creationType>
	<userIP>127.0.0.1</userIP>
	<state>
		<id>b657d24b-ac25-4453-8c07-1a87c9c246bb</id>
		<definition>
			<key>30</key>
			<value>RedirectURLCreated</value>
		</definition>
		<createdOn>2023-06-23T13:22:30.6512918Z</createdOn>
		<paymentStateDetails>
			<detail xsi:type="keyStringValuePair">
				<key>RedirectionUrl</key>
				<value>https://stage-frame.aircash.eu/dc301355-b702-4f55-85d7-2b991ff71fb6</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>PaymentStateReasonID</key>
				<value>1</value>
			</detail>
		</paymentStateDetails>
	</state>
	<isExecuted>false</isExecuted>
	<baseAmount currencyCode="EUR">1</baseAmount>
	<paymentDetails>
		<detail xsi:type="keyStringValuePair">
			<key>ProviderTransactionID</key>
			<value>dc301355-b702-4f55-85d7-2b991ff71fb6</value>
		</detail>
		<detail xsi:type="keyStringValuePair">
			<key>ProviderExternalID</key>
			<value>483</value>
		</detail>
	</paymentDetails>
</payment>
</initiatePaymentResponse>

Example initiatePaymentResponse with error InitiateErrorReportedByProvider:

<initiatePaymentResponse xmlns=http://www.cqrpayments.com/PaymentProcessing xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
    <payment xsi:type="paymentWithPaymentAccount">
        <merchantID>B2BTestMerchant</merchantID>
        <shopID>AircashProviderShop</shopID>
        <paymentMethod>
            <key>441</key>
            <value>Aircash Pay Deposit</value>
        </paymentMethod>
        <merchantTransactionID>hc-20230623-161547</merchantTransactionID>
        <paymentID>4ed15e41-6702-4e9e-a76a-b8be72de2303</paymentID>
        <userID>hc20230623161547</userID>
        <paymentProvider>
            <key>209</key>
            <value>Aircash</value>
        </paymentProvider>
        <amount currencyCode="EUR">1.00</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>ae683c8c-1899-43dd-981c-f289562cdaed</id>
            <definition>
                <key>4</key>
                <value>InitiateErrorReportedByProvider</value>
            </definition>
            <createdOn>2023-06-23T14:15:48.8448686Z</createdOn>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderErrorResponseCode</key>
                    <value>1</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderErrorResponseMessage</key>
                    <value>Invalid signature or partner id.</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">1</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>487</value>
            </detail>
        </paymentDetails>
    </payment>
</initiatePaymentResponse>

Example initiatePaymentResponse with error InitiateRequestCommunicationErrorOccurred:

<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <payment xsi:type="paymentWithPaymentAccount">
        <merchantID>B2BTestMerchant</merchantID>
        <shopID>AircashProviderShop</shopID>
        <paymentMethod>
            <key>441</key>
            <value>Aircash Pay Deposit</value>
        </paymentMethod>
        <merchantTransactionID>hc-20230705-180149</merchantTransactionID>
        <paymentID>dc71c559-119d-45b7-9ba0-654af1c608d7</paymentID>
        <userID>hc20230705180149</userID>
        <paymentProvider>
            <key>209</key>
            <value>Aircash</value>
        </paymentProvider>
        <amount currencyCode="EUR">10.10</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>79218cac-4b5a-4578-8414-215b69c2cd4d</id>
            <definition>
                <key>325</key>
                <value>InitiateRequestProviderCommunicationErrorOccurred</value>
            </definition>
            <createdOn>2023-07-05T16:02:30.8402834Z</createdOn>
            <description>Error occurred while processing payment communication for Payment[ID='47620330'].</description>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">10.1</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>1388</value>
            </detail>
        </paymentDetails>
    </payment>
</initiatePaymentResponse>

Example initiatePaymentResponse with error InitiateRefusedByProvider:

<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <payment xsi:type="paymentWithPaymentAccount">
        <merchantID>B2BTestMerchant</merchantID>
        <shopID>AircashProviderShop</shopID>
        <paymentMethod>
            <key>441</key>
            <value>Aircash Pay Deposit</value>
        </paymentMethod>
        <merchantTransactionID>hc-20230623-161806</merchantTransactionID>
        <paymentID>d08cfb8d-48bd-4766-ba1a-4d7e3dfe208a</paymentID>
        <userID>hc20230623161806</userID>
        <paymentProvider>
            <key>209</key>
            <value>Aircash</value>
        </paymentProvider>
        <amount currencyCode="GBP">1.00</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>6bb6f4bb-1840-47fa-ac43-980714ea63b2</id>
            <definition>
                <key>550</key>
                <value>InitiateRefusedByProvider</value>
            </definition>
            <createdOn>2023-06-23T14:18:07.1332595Z</createdOn>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderResponseCode</key>
                    <value>3000</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderResponseMessage</key>
                    <value>Invalid currency.</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">1.16</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>488</value>
            </detail>
        </paymentDetails>
    </payment>
</initiatePaymentResponse>

Redirect page (Aircash Frame)

The redirect page for Aircash Pay behaves differently depending on the device and environment.

Environment/DeviceBehaviour
Desktop browserOn a desktop browser, the redirect page from Aircash will display both QR code and phone number input.

The user can either scan the QR code with the Aircash app and confirm the payment.

Alternatively the user can enter his phone number and will be sent a push notification to his mobile device. The notification will open the Aircash app with an authorization screen.
Mobile browserThe redirect page will display a button that will open the Aircash app (there is a deeplink behind the button).
Merchant native appRedirect page will display the phone number input. The user will enter the phone number and the Aircash app will open the confirmation screen.

Notifications

The standard notification mechanism is used for notifying the merchant in the background (asynchronously) about payment state changes. For more information see PaymentStateChangedNotification.

Once the payment is completed, the merchant will be notified about the state DepositedByProvider, AbortedByCustomer or RefusedByProvider.
When the payment goes to state RefusedByProvider, the handlePaymentStateChangedNotificationRequest will also include the exact refusal reasons in the detail ProviderLogs, if they are configured at provider.

Example handlePaymentStateChangedNotificationRequest (DepositedByProvider):

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<payment xmlns="http://www.cqrpayments.com/PaymentProcessing"
         xsi:type="paymentWithPaymentAccount">
	<merchantID>B2BTestMerchant</merchantID>
	<shopID>AircashProviderShop</shopID>
	<paymentMethod>
		<key>441</key>
		<value>Aircash Pay Deposit</value>
	</paymentMethod>
	<merchantTransactionID>hc-20230622-112905</merchantTransactionID>
	<paymentID>f731256c-49d3-4127-9501-6fcdc7230f6a</paymentID>
	<userID>hc20230622112905</userID>
	<paymentProvider>
		<key>209</key>
		<value>Aircash</value>
	</paymentProvider>
	<amount currencyCode="EUR">1.0200</amount>
	<creationType>
		<key>1</key>
		<value>User</value>
	</creationType>
	<userIP>127.0.0.1</userIP>
	<state>
		<id>be26d1b7-632b-447a-a6ae-19c25e498568</id>
		<definition>
			<key>29</key>
			<value>DepositedByProvider</value>
		</definition>
		<createdOn>2023-06-22T09:29:26.653</createdOn>
		<paymentStateDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderStatusCode</key>
				<value>2</value>
			</detail>
		</paymentStateDetails>
	</state>
	<isExecuted>true</isExecuted>
	<baseAmount currencyCode="EUR">1.0200</baseAmount>
	<paymentDetails>
		<detail xsi:type="keyStringValuePair">
			<key>ProviderExternalID</key>
			<value>277</value>
		</detail>
		<detail xsi:type="keyStringValuePair">
			<key>ProviderTransactionID</key>
			<value>1b6dee19-fb2e-49dd-9322-fc2294df84e4</value>
		</detail>
	</paymentDetails>
</payment>
</handlePaymentStateChangedNotificationRequest>

Example handlePaymentStateChangedNotificationRequest (RefusedByProvider):

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<payment
         xmlns="http://www.cqrpayments.com/PaymentProcessing"
         xsi:type="paymentWithPaymentAccount">
	<merchantID>B2BTestMerchant</merchantID>
	<shopID>AircashMockShop</shopID>
	<paymentMethod>
		<key>441</key>
		<value>Aircash Pay Deposit</value>
	</paymentMethod>
	<merchantTransactionID>a8ca41f5-95e6-4008-9226-2a3a30f1ba94</merchantTransactionID>
	<paymentID>5d22f930-2040-4d3b-a19f-17b5b1b99ebd</paymentID>
	<userID>c178fba2-33aa-4a1a-8bc1-b50e7a</userID>
	<paymentProvider>
		<key>209</key>
		<value>Aircash</value>
	</paymentProvider>
	<amount currencyCode="EUR">20.2000</amount>
	<creationType>
		<key>1</key>
		<value>User</value>
	</creationType>
	<userIP>127.0.0.1</userIP>
	<state>
		<id>a7f9c046-1c6a-4f80-8382-c61870ad4ee0</id>
		<definition>
			<key>100</key>
			<value>RefusedByProvider</value>
		</definition>
		<createdOn>2023-06-22T18:47:38.033</createdOn>
		<paymentStateDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderStatusCode</key>
				<value>1</value>
			</detail>
			<detail xsi:type="keyIntValuePair">
				<key>PaymentStateReasonID</key>
				<value>1</value>
			</detail>
		</paymentStateDetails>
	</state>
	<isExecuted>false</isExecuted>
	<baseAmount currencyCode="EUR">20.2000</baseAmount>
	<paymentDetails>
		<detail xsi:type="keyStringValuePair">
			<key>ProviderExternalID</key>
			<value>403</value>
		</detail>
		<detail xsi:type="keyStringValuePair">
			<key>ProviderTransactionID</key>
			<value>9197b767-7bb0-45db-9965-e43e668eaa50</value>
		</detail>
	</paymentDetails>
</payment>
</handlePaymentStateChangedNotificationRequest>

Example handlePaymentStateChangedNotificationResponse (RefusedByProvider) with exact refusal reason detail:

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<payment xmlns="http://www.cqrpayments.com/PaymentProcessing"
	         xsi:type="paymentWithPaymentAccount">
		<merchantID>B2BTestMerchant</merchantID>
		<shopID>AircashProviderShop</shopID>
		<paymentMethod>
			<key>441</key>
			<value>Aircash Pay Deposit</value>
		</paymentMethod>
		<merchantTransactionID>hc-20230915-162105</merchantTransactionID>
		<paymentID>0c78cd1b-2bb4-40e7-a126-84b0da1e082d</paymentID>
		<userID>hc20230915162105</userID>
		<paymentProvider>
			<key>209</key>
			<value>Aircash</value>
		</paymentProvider>
		<amount currencyCode="EUR">20.2000</amount>
		<creationType>
			<key>1</key>
			<value>User</value>
		</creationType>
		<userIP>127.0.0.1</userIP>
		<state>
			<id>526f9a0a-93f6-4203-b886-b00f110b020a</id>
			<definition>
				<key>100</key>
				<value>RefusedByProvider</value>
			</definition>
			<createdOn>2023-09-15T14:26:34.08</createdOn>
			<paymentStateDetails>
				<detail xsi:type="keyStringValuePair">
					<key>ProviderStatusCode</key>
					<value>1</value>
				</detail>
				<detail xsi:type="keyIntValuePair">
					<key>PaymentStateReasonID</key>
					<value>1</value>
				</detail>
			</paymentStateDetails>
		</state>
		<isExecuted>false</isExecuted>
		<baseAmount currencyCode="EUR">20.2000</baseAmount>
		<paymentDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderExternalID</key>
				<value>7806</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderTransactionID</key>
				<value>63cb723b-2ede-42a6-ae75-b017209cfd12</value>
			</detail>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderLogs</key>
				<value>[{"dateTimeUTC":"2023-09-15T14:21:13","description":"Frame is initiated by user.","code":100},{"dateTimeUTC":"2023-09-15T14:21:57","description":"QR code is generated and displayed to user.","code":101}]</value>
			</detail>
		</paymentDetails>
	</payment>
</handlePaymentStateChangedNotificationRequest>

Example handlePaymentStateChangedNotificationRequest (AbortedByCustomer):

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<payment
         xmlns="http://www.cqrpayments.com/PaymentProcessing"
         xsi:type="paymentWithPaymentAccount">
	<merchantID>B2BTestMerchant</merchantID>
	<shopID>AircashMockShop</shopID>
	<paymentMethod>
		<key>441</key>
		<value>Aircash Pay Deposit</value>
	</paymentMethod>
	<merchantTransactionID>88f49f20-8094-4120-a805-9815199eadf0</merchantTransactionID>
	<paymentID>4e1ba295-fcb2-4774-a2d2-36e4d345fb18</paymentID>
	<userID>4080e19c-a0b3-4daa-85f1-69e7fc</userID>
	<paymentProvider>
		<key>209</key>
		<value>Aircash</value>
	</paymentProvider>
	<amount currencyCode="EUR">20.3000</amount>
	<creationType>
		<key>1</key>
		<value>User</value>
	</creationType>
	<userIP>127.0.0.1</userIP>
	<state>
		<id>46d5bf8d-6ffc-49c2-9ee0-1beedbf78d94</id>
		<definition>
			<key>101</key>
			<value>AbortedByCustomer</value>
		</definition>
		<createdOn>2023-06-22T18:47:48.513</createdOn>
		<paymentStateDetails>
			<detail xsi:type="keyStringValuePair">
				<key>ProviderStatusCode</key>
				<value>3</value>
			</detail>
			<detail xsi:type="keyIntValuePair">
				<key>PaymentStateReasonID</key>
				<value>1</value>
			</detail>
		</paymentStateDetails>
	</state>
	<isExecuted>false</isExecuted>
	<baseAmount currencyCode="EUR">20.3000</baseAmount>
	<paymentDetails>
		<detail xsi:type="keyStringValuePair">
			<key>ProviderExternalID</key>
			<value>404</value>
		</detail>
		<detail xsi:type="keyStringValuePair">
			<key>ProviderTransactionID</key>
			<value>e2e79991-2ffd-47d0-aee2-37f8ff94ee78</value>
		</detail>
	</paymentDetails>
</payment>
</handlePaymentStateChangedNotificationRequest>

to be added

Provider Testing

For provider testing, an app for Android or IOS has to be requested from Aircash. Once the user has been setup, it will need to be verified by the Aircash support team and added test funds.

On IOS developer mode, developer mode has to be enabled. See here.

Alternatively mock testing is available.

Mock Testing

In addition to provider testing we support mock testing. If necessary, please ask for this to be enable in TEST1.

Some states can be reached by passing a parameter ForcedProviderResponse in the initiatePayment call.

<initiatePaymentRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <merchantID>B2BTestMerchant</merchantID>
    <shopID>AircashMockShop2</shopID>
    <merchantTransactionID>MP-AirCash-104</merchantTransactionID>
    <paymentMethodID>441</paymentMethodID>
    <amount currencyCode="EUR">10.10</amount>
    <userID>MaxAurCashUser</userID>
    <userData>
        <username>MaxAurCashUser</username>
        <firstname>Max</firstname>
        <lastname>Tester</lastname>
        <currencyCode>EUR</currencyCode>
        <languageCode>EN</languageCode>
        <email>[email protected]</email>
        <address>
            <street>Marxergasse</street>
            <houseNumber>1b</houseNumber>
            <postalCode>1030</postalCode>
            <city>Vienna</city>
            <countryCode2>AT</countryCode2>
            <telephoneNumber>00437778889999</telephoneNumber>
        </address>
        <dateOfBirth>1980-10-10T00:00:00</dateOfBirth>
        <gender>Male</gender>
    </userData>
  <userIP>127.0.0.1</userIP>
    <userSessionID>bc0cd72c-8c03-40c0-8847-275d61dbd8ea</userSessionID>
    <creationTypeID>1</creationTypeID>
    <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>CultureInfo</key>
            <value>de_AT</value>
        </data>
        <!-- <data xsi:type="keyIntValuePair">
            <key>PaymentProviderID</key>
            <value>209</value>
        </data> -->
        <data xsi:type="keyStringValuePair">
            <key>SuccessPageUrl</key>
            <value>http://merchant.com/result?status=success&amp;ref=1</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>CancelPageUrl</key>
            <value>http://merchant.com/result?status=cancel&amp;ref=1</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>ErrorPageUrl</key>
            <value>http://merchant.com/result?status=error&amp;ref=1</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>ForcedProviderResponse</key>
            <value>InitiateDepositCommunicationError</value>
        </data>
    </specificPaymentData>
</initiatePaymentRequest>

Some states are also reachable by selecting an action in the redirection page:

After the notification is sent, this will be displayed on the mock page:

The following states are supported: