Giropay Deposit

Giropay is a popular online banking solution from Germany. Customers from the banks Postbank, Sparkassen Finanzgruppe, Genossenschaftsbanken including PSD banks and other banks can use Giropay without additional registration.

The following method IDs are covered in this section:

ID

Name

Credit/Debit State

Reversal State

62

GiropayDeposit

DepositedByProvider (29)

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

After initiating the payment with Giropay, the customer is redirected to the online banking login page of his own bank. After confirming the payment the user is returned to the merchant.

Redirect Integration

Supported.

Backend2BackendIntegration

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

key (value type, account type, required)

value

BankCode
(string)

customer´s bank code

AccountNumber (string)

customer´s account number

SWIFT (string)

BIC code of the customer´s bank account

IBAN (string)

IBAN of the customer´s bank account

The following parameters can be provided in initiatePaymentRequest.specificPaymentData:

key (value type, account type, required)

value

*SuccessPageURL
(string, required)

The URL to redirect user in case of successful payment

*ErrorPageURL
(string, required)

The URL to redirect user in case of unsuccessful payment

Example initiatePaymentRequest:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <merchantID>YourMerchantID</merchantID>
    <shopID>YourShopID</shopID>
    <merchantTransactionID>0e23b2f1-1d92-4ddd-8d43-9de4e77e279b</merchantTransactionID>
    <paymentMethodID>62</paymentMethodID>
    <amount currencyCode="EUR">100</amount>
    <userID>d48693ca-e96e-4ca1-9e01-035645a79399</userID>
    <userData />
    <userIP>127.0.0.1</userIP>
    <userSessionID>6a956eae-d903-4a01-8170-20dae92673d1</userSessionID>
    <creationTypeID>1</creationTypeID>
    <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>SuccessPageUrl</key>
            <value>https://successpage.aspx</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>ErrorPageUrl</key>
            <value>https://errorpage.aspx</value>
        </data>
    </specificPaymentData>
    <paymentAccount>
        <specificPaymentAccountData>
            <data xsi:type="keyStringValuePair">
                <key>SWIFT</key>
                <value>NOLADE21WHO</value>
            </data>
            <data xsi:type="keyStringValuePair">
                <key>IBAN</key>
                <value>DE31222500200532013000</value>
            </data>
        </specificPaymentAccountData>
    </paymentAccount>
</initiatePaymentRequest>

Example initiatePaymentResponse:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <payment xsi:type="paymentWithPaymentAccount">
        <merchantID>YourMerchant</merchantID>
        <shopID>YourShop</shopID>
        <paymentMethod>
            <key>62</key>
            <value>GiropayDeposit</value>
        </paymentMethod>
        <merchantTransactionID>0e23b2f1-1d92-4ddd-8d43-9de4e77e279b</merchantTransactionID>
        <paymentID>60c99c71-d00d-4101-a8a1-7b5915d55c34</paymentID>
        <userID>d48693ca-e96e-4ca1-9e01-035645a79399</userID>
        <paymentProvider>
            <key>55</key>
            <value>Giropay</value>
        </paymentProvider>
        <amount currencyCode="EUR">100</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>a3c57413-6ecd-4dbf-abb5-4ce370db84c8</id>
            <definition>
                <key>287</key>
                <value>RedirectDataCreated</value>
            </definition>
            <createdOn>2011-08-31T07:56:47.595763Z</createdOn>

            <description>operatorId=002&amp;merchantId=8993352&amp;txId=762763&amp;merchantTxId=762763&amp;customerBankBLZ=&amp;customerBIC=NOLADE21WHO&amp;customerAcctNo=&amp;customerIBAN=DE31222500200532013000&amp;shopEndSuccessURL=https%3a%2f%2fsuccesspage.aspx&amp;shopEndFailureURL=https%3a%2f%2ferrorpage.aspx&amp;shopEndWindow=&amp;beneficiaryName1=&amp;beneficiaryAcctNo=&amp;beneficiaryBankBLZ=&amp;amount=10000&amp;currency=EUR&amp;paymentPurposeLine1=&amp;paymentPurposeLine2=&amp;operatorSignature=&amp;redirectUrl=http%3a%2f%2fdev.backend.cqrpayments.com%2fProviderListeners%2fGiropayListener.aspx</description>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>RedirectionUrl</key>
                    <value>http://dev.backend.cqrpayments.com/WebMockProviders/GiropayNotifier.aspx</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDataredirectData</key>
                    <value> operatorId=002&amp;merchantId=8993352&amp;txId=778450&amp;merchantTxId=778450&amp;customerBankBLZ=&amp;customerBIC=NOLADE21WHO&amp;customerAcctNo=&amp;customerIBAN=DE31222500200532013000&amp;shopEndSuccessURL=https%3a%2f%2fsuccesspage.aspx&amp;shopEndFailureURL=https%3a%2f%2ferrorpage.aspx&amp;shopEndWindow=&amp;beneficiaryName1=&amp;beneficiaryAcctNo=&amp;beneficiaryBankBLZ=&amp;amount=10&amp;currency=EUR&amp;paymentPurposeLine1=&amp;paymentPurposeLine2=&amp;operatorSignature=&amp;redirectUrl=http%3a%2f%2fdev.backend.cqrpayments.com%2fProviderListeners%2fGiropayListener.aspx</value>          
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDataKeys</key>
                    <value>redirectData</value>
                </detail>
            </paymentStateDetails>

        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">100</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>762763</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>762763</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>6167da7a-d0e9-48aa-8b05-dc608ec216ae</paymentAccountID>
            <details>
                <detail xsi:type="keyStringValuePair">
                    <key>swift</key>
                    <value>NOLADE21WHO</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>IBAN</key>
                    <value>DE31222500200532013000</value>
                </detail>
            </details>
        </paymentAccount>
    </payment>
</initiatePaymentResponse>

Possible payment states in initiatePaymentResponse:

Payment State

Description

RedirectDataCreated (287)

OK state; Redirect user to the URL using via POST.

The merchant system should retrieve the redirect URL from payment.state.paymentStateDetails (key: RedirectionUrl).
Post data should be extracted from payment.state.paymentStateDetails (key: PostDataGiropay). This parameter is not mandatory while some banks do not support that.
Merchant sends POST request to RedirectionUrl including POST data (if available)

BlockedByPaymentScoring (202)

Error state; Refused by the PXP Financial Risk System

RefusedByPaymentScoring (121)

Error state; Refused by the PXP Financial Risk System

InitiateErrorReportedByProvider (4)

Error state; Technical error during payment initialization

Note: in the Merchant Notification message “BankCode” and “AccountNumber” parameters will be sent (in the paymentAccount.details collection the elements with “bankCode” and “accountNumber” keys). Alternatively instead parameters “SWIFT” (BIC-code) and “IBAN” (IBAN number) will be included within the paymentAccount.details collection.

Notifications

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

Example handlePaymentStateChangedNotificationRequest:

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <payment xmlns="http://www.cqrpayments.com/PaymentProcessing" xsi:type="paymentWithPaymentAccount">
    <merchantID>YourMerchant</merchantID>
    <shopID>YourShop</shopID>
    <paymentMethod>
      <key>62</key>
      <value>GiropayDeposit</value>
    </paymentMethod>
    <merchantTransactionID>32ae815c-c629-4fbd-a461-4c217f69116c</merchantTransactionID>
    <paymentID>1e3366ed-9e84-4efd-9976-75a0703e4535</paymentID>
    <userID>YourUser</userID>
    <paymentProvider>
      <key>55</key>
      <value>Giropay</value>
    </paymentProvider>
    <amount currencyCode="EUR">10.0000</amount>
    <creationType>
      <key>1</key>
      <value>User</value>
    </creationType>
    <userIP>127.0.0.1</userIP>
    <state>
      <id>e1c1aef9-bcb1-4dae-ae51-8e4df51fc5c6</id>
      <definition>
        <key>29</key>
        <value>DepositedByProvider</value>
      </definition>
      <createdOn>2011-07-13T08:26:01.76</createdOn>
      <paymentStateDetails xsi:nil="true" />
    </state>
    <isExecuted>true</isExecuted>
    <baseAmount currencyCode="EUR">10.0000</baseAmount>
    <paymentDetails xsi:nil="true" />
    <paymentAccount>
      <paymentAccountID>e84ee2bf-72db-442c-b2a4-95ba34fabc68</paymentAccountID>
      <details>
        <detail xsi:type="keyStringValuePair">
          <key> swift</key>
          <value> NOLADE21WHO</value>
        </detail>
        <detail xsi:type="keyStringValuePair">
          <key> IBAN</key>
          <value> DE31222500200532013000</value>
        </detail>
      </details>
    </paymentAccount>
  </payment>
</handlePaymentStateChangedNotificationRequest>