Mister Cash Deposit (Bancontact) via HiPay

Bancontact, also know as Mistercash till April 2016, is the market leader in electronic payments in Belgium.

The provider for this payment method is Hipay.

The following method IDs are covered in this section:

ID

Name

Credit/Debit State

112

MistercashDeposit

DepositedByProvider (29)

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

📘

Method comparison

BancontactDeposit: this payment method requires passing the card details in advance and supports both the Bancontact mobile and the Bancontact web flow. The mobile flow is used by default, but can be turned off in the request.

On the mobile flow the user is shown a QR code and asked to open it the mobile app.
Alternatively the user can enter his card data for a regular payment.

On the web flow the customer can directly pay by authorizing the payment with his HW dongle.

MistercashDeposit: thie payment method uses only the Bancontact mobile flow. Passing the card details in advance is not required and not possible.

Redirect integration

Not supported at the moment

Backend2Backend Integration

The following table contains the fields to be sent in initiatePaymentRequest:

key (value type, account type, required)

value

userIP
(string, required)

The IP of the user

The following table contains the fields to be sent in initiatePaymentRequest.specificPaymentData xml section:

key (value type, account type, required)

value

PaymentDescription
(string)

Description of the payment

SuccessPageUrl
(string, required/optional)

URL, to which the client will be transferred in case that he confirms the payment

CancelPageUrl (string, required/optional)

Cancel page URL

ErrorPageUrl (string, required/optional)

Error page URL

MerchantNotificationUrl (string, required/optional)

Merchant Notification URL

HomePageUrl (string, required/optional)

Merchant home page URL

PendingPageUrl (string, required/optional)

Pending page URL

Please note that sending data of the user is essential for this Payment Method as the data is sent to provider. The following parameters must be provided in initiatePaymentRequest.userData xml section:

Field

Value

Firstname (string, required)

The customer´s first name

Lastname (string, required)

The customer´s last name.

eMail (string, required)

The customer´s email address

adress.countryCode2 (string, required)

The customer´s country

languageCode (string, required)

The customer´s language.

Example initiatePaymentRequest:

<?xml version="1.0" encoding="utf-8"?>
<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>XXXXX</merchantID>
    <shopID>XXXXXX</shopID>
    <merchantTransactionID>d24cbd9f-a29a-4024-b0d9-25df80a3aa23</merchantTransactionID>
    <paymentMethodID>112</paymentMethodID>
    <amount currencyCode="EUR">76.80</amount>
    <userID>13e461de-6d2c-4c95-83d5-8dfb52</userID>
    <userData>
        <username>13e461de-6d2c-4c95-83d5-8dfb52</username>
        <firstname xsi:nil="true" />
        <lastname xsi:nil="true" />
        <currencyCode xsi:nil="true" />
        <languageCode xsi:nil="true" />
        <email xsi:nil="true" />
        <address>
            <street xsi:nil="true" />
            <houseName xsi:nil="true" />
            <houseNumber xsi:nil="true" />
            <houseNumberExtension xsi:nil="true" />
            <postalCode xsi:nil="true" />
            <city xsi:nil="true" />
            <state xsi:nil="true" />
            <countryCode2>DE</countryCode2>
            <telephoneNumber xsi:nil="true" />
        </address>
        <gender>Male</gender>
        <identificationNumberType xsi:nil="true" />
        <drivingLicenseNumber xsi:nil="true" />
        <drivingLicenseIssuingState xsi:nil="true" />
    </userData>
    <userIP>127.0.0.1</userIP>
    <userSessionID>e39d13c0-6032-4800-913d-00008b8ab480</userSessionID>
    <creationTypeID>1</creationTypeID>
    <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>SuccessPageUrl</key>
            <value>https://returnurl.com</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>CancelPageUrl</key>
            <value>http://cancel/?a=b&amp;c=d</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>ErrorPageUrl</key>
            <value>https://errorurl.com</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>MerchantNotificationUrl</key>
            <value>https://merchantnotification</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>HomePageUrl</key>
            <value>http://home/</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>PendingPageUrl</key>
            <value>http://pending/</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>PaymentDescription</key>
            <value>wise description</value>
        </data>
    </specificPaymentData>
</initiatePaymentRequest>

Example initiatePaymentResponse:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <payment xsi:type="paymentWithPaymentAccount">
        <merchantID>XXXXXX</merchantID>
        <shopID>XXXXXX</shopID>
        <paymentMethod>
            <key>112</key>
            <value>MisterCashDeposit</value>
        </paymentMethod>
        <merchantTransactionID>d24cbd9f-a29a-4024-b0d9-25df80a3aa23</merchantTransactionID>
        <paymentID>ce3ce03e-ed6d-4bea-b7e0-f27af1556714</paymentID>
        <userID>13e461de-6d2c-4c95-83d5-8dfb52</userID>
        <paymentProvider>
            <key>132</key>
            <value>Hipay</value>
        </paymentProvider>
        <amount currencyCode="EUR">76.80</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>093bccd3-e573-4822-8643-787b9aafae44</id>
            <definition>
                <key>30</key>
                <value>RedirectURLCreated</value>
            </definition>
            <createdOn>2021-05-18T06:51:19.8577009Z</createdOn>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>RedirectionUrl</key>
                    <value>https://api.test2.kalixa.com/WebMockProviders/HipayFrontend/Index?orderId=128148&amp;paymentProduct=bcmc-mobile</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">76.8</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>128148</value>
            </detail>
        </paymentDetails>
    </payment>
</initiatePaymentResponse>

Bancontact mobile

By default the Bancontact mobile flow is initiated as described below.

The mobile version works differently depending on the device that the customer is using.

Web Device

If the customer uses a desktop for his payment (not a mobile or tablet device), then he will be redirected to a Bancontact screen where he is presented with a QR code. He needs to open his banking app on his mobile phone and scan the code presented on the screen to confirm the payment.

Mobile Device

If the customer uses a mobile device for his payment (mobile or tablet ), then he will be redirected to a Bancontact screen where he can choose to pay with his app or with the card.
The user is redirected to following page on a mobile device:

These screenshots are generated on the sandbox/test environment of Hipay. The actual view in production may vary.

When clicking the first button, the mobile app is opened (if pre-installed on the device). Clicking the second button, results in the following screen being displayed on the phone:

Notifications

The provider notifies PXP Financial on payments that are either Successful (state DepositedByProvider), Declined (state RefusedByProvider).

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

Payment States

Description

AuthorisedByProvider (13)

Success state

RefusedByProvider

Payment has been rejected by the provider.

AuthoriseErrorReportedByProvider

Payment has an error reported by the provider.

Sample notification:

<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <payment xsi:type="paymentWithPaymentAccount">
        <merchantID>B2BTestMerchant</merchantID>
        <shopID>HipayMistercashDeposit</shopID>
        <paymentMethod>
            <key>112</key>
            <value>MisterCashDeposit</value>
        </paymentMethod>
        <merchantTransactionID>d24cbd9f-a29a-4024-b0d9-25df80a3aa23</merchantTransactionID>
        <paymentID>ce3ce03e-ed6d-4bea-b7e0-f27af1556714</paymentID>
        <userID>13e461de-6d2c-4c95-83d5-8dfb52</userID>
        <paymentProvider>
            <key>132</key>
            <value>Hipay</value>
        </paymentProvider>
        <amount currencyCode="EUR">76.8000</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>6f92232f-ebcc-4da4-8b5e-239b51e1f0e3</id>
            <definition>
                <key>29</key>
                <value>DepositedByProvider</value>
            </definition>
            <createdOn>2021-05-18T06:51:20.877</createdOn>
            <paymentStateDetails xsi:nil="true" />
        </state>
        <isExecuted>true</isExecuted>
        <baseAmount currencyCode="EUR">76.8000</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>128148</value>
            </detail>
            <detail xsi:type="keyIntValuePair">
                <key>MerchantSettlementCurrencyID</key>
                <value>2</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>388997073285</value>
            </detail>
        </paymentDetails>
    </payment>
</handlePaymentStateChangedNotificationRequest>

Testing using the PXP Mock

The PXP test system provides a mock page for testing and simulating the provider behaviour.
This can be used for simulating certain test scenarios.
The functionality is described here: Bancontact/Mister Cash Deposit (via HiPay)