BankTransferRedirectDeposit (Callpay)
The BankTransferRedirectDeposit method supports EFT bank transfers through provider Callpay in South Africa.
The following method IDs are covered in this section:
ID | Name | Credit/Debit State |
---|---|---|
264 | BankTransferRedirectDeposit | DepositedByProvider (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, required) | URL to redirect for successful payments |
CancelPageUrl (string, required) | URL to redirect if payment is cancelled |
ErrorPageUrl (string, required) | URL to redirect in case of error |
BankName (string, optional) | Bank name for bank preselection. Available bank names are: absa, standard, capitec, fnb, nedbank, investec, bidvest, tyme, windhoek, afribank, oldmutual, discovery |
Example initiatePaymentRequest:
<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>{{merchant}}</merchantID>
<shopID>{{shop]]</shopID>
<merchantTransactionID>AD-000002</merchantTransactionID>
<paymentMethodID>264</paymentMethodID>
<amount currencyCode="ZAR">10.00</amount>
<userID>AD-Callpay01</userID>
<userData>
<username>ad_callpay01</username>
<firstname>John</firstname>
<lastname>Doe</lastname>
<currencyCode>ZAR</currencyCode>
<languageCode>EN</languageCode>
<email>[email protected]</email>
<address>
<street>196 Rus St</street>
<houseNumber>1b</houseNumber>
<postalCode>7582</postalCode>
<city>Kuils River</city>
<state>WC</state>
<countryCode2>ZA</countryCode2>
<telephoneNumber>270839661769</telephoneNumber>
</address>
<dateOfBirth>1980-10-10T00:00:00</dateOfBirth>
<gender>Male</gender>
</userData>
<userIP>80.121.151.158</userIP>
<userSessionID>t02d03hwaxkrl5gmabcypwmm</userSessionID>
<creationTypeID>1</creationTypeID>
<specificPaymentData>
<data xsi:type="keyStringValuePair">
<key>SuccessPageUrl</key>
<value>https://success.com</value>
</data>
<data xsi:type="keyStringValuePair">
<key>CancelPageUrl</key>
<value>https://cancel.com</value>
</data>
<data xsi:type="keyStringValuePair">
<key>ErrorPageUrl</key>
<value>https://error.com</value>
</data>
<data xsi:type="keyStringValuePair">
<key>BankName</key>
<value>investec</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>{{merchant}}</merchantID>
<shopID>{{shop}}</shopID>
<paymentMethod>
<key>264</key>
<value>BankTransferRedirectDeposit</value>
</paymentMethod>
<merchantTransactionID>hc-20230302-132729</merchantTransactionID>
<paymentID>ca919b62-9cd9-4850-9011-278710366a0f</paymentID>
<userID>hc20230302132729</userID>
<paymentProvider>
<key>206</key>
<value>Callpay</value>
</paymentProvider>
<amount currencyCode="ZAR">10.00</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>80.121.151.158</userIP>
<state>
<id>24813906-7206-4cb5-bbbc-fcc2cd7a18b1</id>
<definition>
<key>30</key>
<value>RedirectURLCreated</value>
</definition>
<createdOn>2023-03-02T12:27:30.2059542Z</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>RedirectionUrl</key>
<value>https://agent.callpay.com/pay/hosted?payment_key=67ea35f10351c3087744b1149c977876&payment_type=eft</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">0.76</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>BankName</key>
<value>investec</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>324</value>
</detail>
</paymentDetails>
</payment>
</initiatePaymentResponse>
Error States
Relevant error cases for the merchant include:
InitiateRefusedByProvider
RefusedByProvider
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>{{merchant}}</merchantID>
<shopID>{{shop}}</shopID>
<paymentMethod>
<key>264</key>
<value>BankTransferRedirectDeposit</value>
</paymentMethod>
<merchantTransactionID>AD-000002</merchantTransactionID>
<paymentID>0d4dd33f-31e8-4284-bd53-edbb774e2293</paymentID>
<userID>AD-Callpay01</userID>
<paymentProvider>
<key>206</key>
<value>Callpay</value>
</paymentProvider>
<amount currencyCode="ZAR">10.00</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>80.121.151.158</userIP>
<state>
<id>82827e77-1f74-48e6-8510-7ac4a8380510</id>
<definition>
<key>550</key>
<value>InitiateRefusedByProvider</value>
</definition>
<createdOn>2023-03-23T09:11:58.879864Z</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderResponseMessage</key>
<value>Invalid merchant data specified. Error Url is not a valid URL.</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">0.76</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>BankName</key>
<value>investec</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>2331</value>
</detail>
</paymentDetails>
</payment>
</initiatePaymentResponse>
Example initiatePaymentResponse with error InitiateRequestProviderCommunicationErrorOccurred:
<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>{{merchant}}</merchantID>
<shopID>{{shop}}</shopID>
<paymentMethod>
<key>264</key>
<value>BankTransferRedirectDeposit</value>
</paymentMethod>
<merchantTransactionID>hc-20230302-134050</merchantTransactionID>
<paymentID>6a445fa7-c3df-4b5d-b5ec-fe3daac8ebc7</paymentID>
<userID>hc20230302134050</userID>
<paymentProvider>
<key>206</key>
<value>Callpay</value>
</paymentProvider>
<amount currencyCode="ZAR">10.00</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>80.121.151.158</userIP>
<state>
<id>0f37fca3-893f-4921-9eb6-f03b7588868d</id>
<definition>
<key>325</key>
<value>InitiateRequestProviderCommunicationErrorOccurred</value>
</definition>
<createdOn>2023-03-02T12:41:11.0366373Z</createdOn>
<description>Error occurred while processing payment communication for Payment[ID='45985955'].</description>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">0.76</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>332</value>
</detail>
</paymentDetails>
</payment>
</initiatePaymentResponse>
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 (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>{{merchant}}</merchantID>
<shopID>{{shop}}</shopID>
<paymentMethod>
<key>264</key>
<value>BankTransferRedirectDeposit</value>
</paymentMethod>
<merchantTransactionID>hc-20230302-125607</merchantTransactionID>
<paymentID>a6b3b9d6-e557-4fb4-8cc9-1cc06121c714</paymentID>
<userID>hc20230302125607</userID>
<paymentProvider>
<key>206</key>
<value>Callpay</value>
</paymentProvider>
<amount currencyCode="ZAR">10.0000</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>80.121.151.158</userIP>
<state>
<id>cdb3d698-629f-40bf-9d43-eba93bbac0c3</id>
<definition>
<key>29</key>
<value>DepositedByProvider</value>
</definition>
<createdOn>2023-03-02T11:57:08.093</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderStatusCode</key>
<value>complete</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>true</isExecuted>
<baseAmount currencyCode="EUR">0.7600</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>318</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderTransactionID</key>
<value>91677465</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>{{merchant}}</merchantID>
<shopID>{{shop}}</shopID>
<paymentMethod>
<key>264</key>
<value>BankTransferRedirectDeposit</value>
</paymentMethod>
<merchantTransactionID>hc-20230302-125538</merchantTransactionID>
<paymentID>6857fe6c-44be-4a42-8285-2628f1b9cde3</paymentID>
<userID>hc20230302125538</userID>
<paymentProvider>
<key>206</key>
<value>Callpay</value>
</paymentProvider>
<amount currencyCode="ZAR">10.0000</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>80.121.151.158</userIP>
<state>
<id>31a58ee2-4dc1-4f45-b478-d3a3ccdc9e32</id>
<definition>
<key>100</key>
<value>RefusedByProvider</value>
</definition>
<createdOn>2023-03-02T11:56:07.407</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderResponseMessage</key>
<value>Insufficient funds</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderStatusCode</key>
<value>failed</value>
</detail>
<detail xsi:type="keyIntValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">0.7600</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>317</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderTransactionID</key>
<value>91677403</value>
</detail>
</paymentDetails>
</payment>
</handlePaymentStateChangedNotificationRequest>
Example handlePaymentStateChangedNotificationRequest (Aborted):
<?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>CallpayMockShop</shopID>
<paymentMethod>
<key>264</key>
<value>BankTransferRedirectDeposit</value>
</paymentMethod>
<merchantTransactionID>f1029f72-68cc-43b5-bc25-fa466f4d5ba5</merchantTransactionID>
<paymentID>4e71376f-e453-4d60-8fe6-8cd50ec08e7d</paymentID>
<userID>d889f27e-53f5-4f5a-997e-2b854f</userID>
<paymentProvider>
<key>206</key>
<value>Callpay</value>
</paymentProvider>
<amount currencyCode="ZAR">20.0200</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>5132c6c9-02fe-445c-b39f-67cea2e27844</id>
<definition>
<key>524</key>
<value>Aborted</value>
</definition>
<createdOn>2023-03-27T15:49:30.797</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderResponseMessage</key>
<value>Payment Aborted</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderStatusCode</key>
<value>aborted</value>
</detail>
<detail xsi:type="keyIntValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">1.5100</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>2568</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderTransactionID</key>
<value>424834018</value>
</detail>
</paymentDetails>
</payment>
</handlePaymentStateChangedNotificationRequest>
Updated about 1 month ago