Cash Withdrawal search page
Cash Withdrawal page with search page allows to process Cash Withdrawals at the cage inside of a physical casino.
When the merchant operator enters a user´s phone number or a user´s firstname, lastname and date of birth, a specific API call is sent to the merchant to retrieve user details. This call has to be implemented by the merchant.
The customer has to be of legal age and must be in good standing. Users that are not eligible are to be flagged accordingly, or not to be returned at all. Identity has to be verified at the cage.
When the payment is initiated, a callback is sent to the merchant listener to approve or deny the payment.
The following method IDs are covered in this section:
ID | Name | Debit State |
---|---|---|
174 | CashWithdrawal | WithdrawnToUser |
Flow overview
The following flow is used:
Redirect Integration
Not applicable.
Backend2BackendIntegration
Before the payment is created or select on the Cash Withdrawal search page, the user has to be found on the page. Once the operator enters either firstname, lastname, date of birth or telephoneNumber, , the cage page inside of PS Admin sends a request to the merchant listener to retrieve a list of users (player).
Example getNewManualPaymentDetailsListRequest with FirstName, LastName and DateOfBirth field:
<?xml version="1.0" encoding="utf-8"?>
<getNewManualPaymentDetailsListRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<merchantID>B2BTestmerchant</merchantID>
<paymentMethodID>174</paymentMethodID>
<dateOfBirth>1978-12-28T00:00:00</dateOfBirth>
<firstName>Sus</firstName>
<lastName>Rein</lastName>
</getNewManualPaymentDetailsListRequest>
Example getNewManualPaymentDetailsListRequest with telephoneNumber field:
<?xml version="1.0" encoding="utf-8"?>
<getNewManualPaymentDetailsListRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<merchantID>B2BTestmerchant</merchantID>
<paymentMethodID>174</paymentMethodID>
<telephoneNumber>7242601170</telephoneNumber>
</getNewManualPaymentDetailsListRequest>
Example getNewManualPaymentDetailsListRequest with email address field:
<?xml version="1.0" encoding="utf-8"?>
<getNewManualPaymentDetailsListRequest xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
<merchantID>B2BTestmerchant</merchantID>
<paymentMethodID>174</paymentMethodID>
<userID xsi:nil="true" />
<username xsi:nil="true" />
<email>[email protected]</email>
<languageCode xsi:nil="true" />
<dateOfBirth>1984-08-01T00:00:00</dateOfBirth>
<firstName>Susi</firstName>
<lastName>Smith</lastName>
<telephoneNumber>7242601170</telephoneNumber>
<currencyID xsi:nil="true" />
<providerUserID xsi:nil="true" />
<shopID xsi:nil="true" />
</getNewManualPaymentDetailsListRequest>
The request will include the following details:
Detail | Description |
---|---|
telephoneNumber | phone number of the user as entered on the Cash withdrawal search page |
eMail address of the user as entered on the 'Cash withdrawal search page | |
FirstName | user´s first name |
LastName | user´s last name |
dateOfBirth | user´s date of birth |
Request details
The request will include either
- the telephoneNumber
OR
- the eMail address
OR
- FirstName and LastName and dateOfBirth
OR a combination of these values
The merchant should return in the response the following details for the customers.
The response should include results for one or multiple users. If too many users are found, then only the first 10 users are displayed.
Field | Description |
---|---|
userID | The player`s external userID. |
username | The player´s user name. |
firstname | The player´s first name. |
lastname | The player´s last name. |
The player´s eMail address. | |
address | The player´s address, including the fields street, houseName, houseNumberExtension, postalCode, city , state, countryCode and telephoneNumber. |
dateOfBirth | The player´s date of birth |
identificationNumber | The player identification number. It will be displayed masked. |
userStatus | The player´s user status as defined by the merchant. |
withdrawableBalance | The player´s withdrawable balance. |
withdrawableCashBalance | The player´s withdrawable cash balance. |
minLimitUSD | The player´s minimum limit in USD |
maxLimitUSD | The player´s maximum limit in USD. |
limitCurrency | The player´s limit currency. |
Data is not stored, only displayed.
If user cannot be found, an error message is shown.
Example getNewManualPaymentDetailsListResponse (User found):
<?xml version="1.0" encoding="utf-8"?>
<getNewManualPaymentDetailsListResponse xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
<results>
<result>
<userID xmlns=http://www.cqrpayments.com/PaymentProcessing>852146987</userID>
<merchantTransactionID xmlns=http://www.cqrpayments.com/PaymentProcessing>BorgataNJ</merchantTransactionID>
<userDetails xmlns=http://www.cqrpayments.com/PaymentProcessing>
<username xsi:nil="true" />
<firstname>Susi</firstname>
<lastname>Smith</lastname>
<currencyCode xsi:nil="true" />
<languageCode xsi:nil="true" />
<email>[email protected]</email>
<address>
<street>TeststreetG</street>
<houseName xsi:nil="true" />
<houseNumber>77</houseNumber>
<houseNumberExtension xsi:nil="true" />
<postalCode>76543</postalCode>
<city>New York</city>
<state>NY</state>
<countryCode2>US</countryCode2>
<telephoneNumber>7242601170</telephoneNumber>
</address>
<dateOfBirth>1984-08-01T00:00:00</dateOfBirth>
<identificationNumber>326117890</identificationNumber>
<identificationNumberType xsi:nil="true" />
<drivingLicenseNumber xsi:nil="true" />
<drivingLicenseIssuingState xsi:nil="true" />
<userStatus>Regular User</userStatus>
<ableToWithdraw>true</ableToWithdraw>
<withdrawableBalance>80.0</withdrawableBalance>
<withdrawableCashBalance>80.0</withdrawableCashBalance>
</userDetails>
<paymentDetails xmlns=http://www.cqrpayments.com/PaymentProcessing>
<detail xsi:type="keyDecimalValuePair">
<key>minLimitUSD</key>
<value>0.02</value>
</detail>
<detail xsi:type="keyDecimalValuePair">
<key>maxLimitUSD</key>
<value>1200</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>limitCurrency</key>
<value>USD</value>
</detail>
</paymentDetails>
</result>
</results>
<status>
<code xmlns=http://www.cqrpayments.com/PaymentProcessing>0</code>
<description xmlns=http://www.cqrpayments.com/PaymentProcessing>success</description>
<details xmlns=http://www.cqrpayments.com/PaymentProcessing />
</status>
</getNewManualPaymentDetailsListResponse>
Example getNewManualPaymentDetailsListResponse (User not found):
<getNewManualPaymentDetailsListResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<results></results>
<status>
<code>2</code>
<description>Users not found!</description>
<details></details>
</status>
</getNewManualPaymentDetailsListResponse>
According to the returned response message, the appropriate information will be displayed to the cage clerk in the PS Admin.
Response Messages:
responseStatus.Code | Meaning | Display message |
---|---|---|
0 | User Found / Eligible | |
2 | User Not Found | The message passed in description will be used for display. |
XSD
Please see below for the XSD (for both Cash Withdrawal search and for new Cash Deposits). All the basic types are included in the main XSD, see here.
Messages:
<s:element name="getNewManualPaymentDetailsRequest" type="getNewManualPaymentDetailsRequestData">
</s:element>
<s:element name="getNewManualPaymentDetailsListRequest" type="getNewManualPaymentDetailsRequestData">
</s:element>
<s:element name="getNewManualPaymentDetailsResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="result" type="getNewManualPaymentDetailsResult"/>
<s:element minOccurs="1" maxOccurs="1" name="status" type="responseStatus"/>
<s:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##any" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="getNewManualPaymentDetailsListResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="results">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="result" type="getNewManualPaymentDetailsResult" />
</s:sequence>
</s:complexType>
</s:element>
<s:element minOccurs="1" maxOccurs="1" name="status" type="responseStatus"/>
<s:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##any" />
</s:sequence>
</s:complexType>
</s:element>
Data elements:
<s:complexType name="getNewManualPaymentDetailsRequestData">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="merchantID" type="stringID" />
<s:element minOccurs="1" maxOccurs="1" name="paymentMethodID" type="positiveInt"/>
<s:element minOccurs="0" maxOccurs="1" name="userID" type="stringID" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="username" type="username" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="email" type="emailAddress" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="languageCode" type="twoLetterCode" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="dateOfBirth" type="dateOfBirth" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="firstName" type="personName" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="lastName" type="personName" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="telephoneNumber" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="currencyID" type="threeLetterCode" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="providerUserID" type="stringID" nillable="true"/>
</s:sequence>
</s:complexType>
<s:complexType name="getNewManualPaymentDetailsResult">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="userID" type="stringID"/>
<s:element minOccurs="0" maxOccurs="1" name="merchantTransactionID" type="merchantTransactionID" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="userDetails" type="userDetails" nillable="true"/>
<s:element minOccurs="1" maxOccurs="1" name="paymentDetails">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="detail" type="keyValueBasePair"/>
</s:sequence>
</s:complexType>
</s:element>
<s:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##any"/>
</s:sequence>
</s:complexType>
<s:complexType name="responseStatus">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="code" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="description" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="details">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1000" name="detail" type="keyValueBasePair"/>
</s:sequence>
</s:complexType>
</s:element>
<s:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##any" />
</s:sequence>
</s:complexType>
Additional information:
<?xml version="1.0" encoding="utf-8" ?>
<s:schema id="PaymentEventsSchema"
targetNamespace="http://www.cqrpayments.com/PaymentProcessing"
elementFormDefault="qualified"
xmlns="http://www.cqrpayments.com/PaymentProcessing"
xmlns:s="http://www.w3.org/2001/XMLSchema">
<s:complexType name="getNewManualPaymentDetailsRequestData">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="merchantID" type="stringID" />
<s:element minOccurs="1" maxOccurs="1" name="paymentMethodID" type="positiveInt"/>
<s:element minOccurs="0" maxOccurs="1" name="userID" type="stringID" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="username" type="username" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="email" type="emailAddress" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="languageCode" type="twoLetterCode" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="dateOfBirth" type="dateOfBirth" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="firstName" type="personName" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="lastName" type="personName" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="telephoneNumber" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="currencyID" type="threeLetterCode" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="providerUserID" type="stringID" nillable="true"/>
</s:sequence>
</s:complexType>
<s:element name="getNewManualPaymentDetailsListRequest" type="getNewManualPaymentDetailsRequestData">
</s:element>
<s:element name="getNewManualPaymentDetailsListResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="results">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="result" type="getNewManualPaymentDetailsResult" />
</s:sequence>
</s:complexType>
</s:element>
<s:element minOccurs="1" maxOccurs="1" name="status" type="responseStatus"/>
<s:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##any" />
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="getNewManualPaymentDetailsResult">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="userID" type="stringID"/>
<s:element minOccurs="0" maxOccurs="1" name="merchantTransactionID" type="merchantTransactionID" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="userDetails" type="userDetails" nillable="true"/>
<s:element minOccurs="1" maxOccurs="1" name="paymentDetails">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="detail" type="keyValueBasePair"/>
</s:sequence>
</s:complexType>
</s:element>
<s:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##any"/>
</s:sequence>
</s:complexType>
<s:complexType name="userDetails">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="username" type="username" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="firstname" type="personName" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="lastname" type="personName" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="currencyCode" type="threeLetterCode" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="languageCode" type="twoLetterCode" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="email" type="emailAddress" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="address" type="address" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="dateOfBirth" type="dateOfBirth" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="gender" type="gender" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="identificationNumber" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="identificationNumberType" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="drivingLicenseNumber" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="drivingLicenseIssuingState" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="isVIPUser" type="s:boolean" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="registrationDateAtMerchant" type="s:date" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="lastActivityDateAtMerchant" type="s:date" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="userStatus" type="s:string" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="ableToWithdraw" type="s:boolean" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="withdrawableBalance" type="s:decimal" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="withdrawableCashBalance" type="s:decimal" nillable="true"/>
</s:sequence>
</s:complexType>
<s:complexType name="responseStatus">
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="code" type="s:int"/>
<s:element minOccurs="1" maxOccurs="1" name="description" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="details">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1000" name="detail" type="keyValueBasePair"/>
</s:sequence>
</s:complexType>
</s:element>
<s:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##any" />
</s:sequence>
</s:complexType>
<s:simpleType name="username">
<s:restriction base="secureString">
<s:maxLength value="50"/>
</s:restriction>
</s:simpleType>
<s:simpleType name="threeLetterCode">
<s:restriction base="s:string">
<s:pattern value="^[A-Za-z]{3}$"/>
</s:restriction>
</s:simpleType>
<s:simpleType name="personName">
<s:restriction base="secureString">
<s:minLength value="1"/>
</s:restriction>
</s:simpleType>
<s:simpleType name="positiveInt">
<s:restriction base="s:int">
<s:minInclusive value="1"/>
</s:restriction>
</s:simpleType>
<s:complexType name="address">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="street" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="houseName" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="houseNumber" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="houseNumberExtension" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="postalCode" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="city" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="state" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="countryCode2" type="twoLetterCode" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="telephoneNumber" type="secureString" nillable="true"/>
<s:element minOccurs="0" maxOccurs="1" name="district" type="secureString"/>
<s:element minOccurs="0" maxOccurs="1" name="postalCodeSuffix" type="secureString"/>
</s:sequence>
</s:complexType>
<s:simpleType name="gender">
<s:restriction base="s:string">
<s:enumeration value="Male"/>
<s:enumeration value="Female"/>
</s:restriction>
</s:simpleType>
<s:simpleType name="stringID">
<s:restriction base="s:string">
<s:pattern value="^[A-Za-z0-9\.\-\+_/]{1,50}$"/>
</s:restriction>
</s:simpleType>
<s:simpleType name="dateOfBirth">
<s:restriction base="s:dateTime">
<s:minInclusive value="1900-01-01T00:00:00"/>
</s:restriction>
</s:simpleType>
<s:simpleType name="merchantTransactionID">
<s:restriction base="s:string">
<s:pattern value="^[A-Za-z0-9\.\-\+_/\s]{1,50}$"/>
</s:restriction>
</s:simpleType>
<s:simpleType name="twoLetterCode">
<s:restriction base="s:string">
<s:pattern value="^[A-Za-z]{2}$"/>
</s:restriction>
</s:simpleType>
<s:complexType name="keyValueBasePair"
abstract="true">
<s:sequence>
<s:element minOccurs="1"
maxOccurs="1"
name="key"
type="stringID"/>
</s:sequence>
</s:complexType>
<s:simpleType name="secureString">
<s:restriction base="s:string">
<s:pattern value="[^<>]*"/>
</s:restriction>
</s:simpleType>
<s:simpleType name="emailAddress">
<s:restriction base="s:string">
<s:pattern value="^[A-Za-z0-9\._%\+\-]+@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,20}$"/>
</s:restriction>
</s:simpleType>
</s:schema>
Handling of pending payments
When a withdrawal is blocked by the merchant due to missing documentation, the merchant may - upon receiving missing data - move the payment to state ToBeWithdrawn by sending an executePaymentAction request.
Example executePaymentActionRequest:
<executePaymentActionRequest 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>B2BTestshop</shopID>
<paymentID>b2437930-aec9-4353-ab88-56ef2772692f</paymentID>
<actionID>351202</actionID>
<remark>test for documentation</remark>
</executePaymentActionRequest>
Example executePaymentActionResponse:
<executePaymentActionResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<statusCode>1</statusCode>
<actionResults>
<result xsi:type="keyStringValuePair">
<key>lastStateDefinition</key>
<value>371</value>
</result>
<result xsi:type="keyStringValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</result>
</actionResults>
</executePaymentActionResponse>
Mock testing
Not available.
Payment flow
When the cage clerk creates a payment, a request is sent to the merchant backend. The merchant has the chance to accept or decline this payment.
Example handlePaymentStateChangedNotificationRequest:
<?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>RealMoneyShop</shopID>
<paymentMethod>
<key>174</key>
<value>CashWithdrawal</value>
</paymentMethod>
<merchantTransactionID>bdaf3842-c38a-4f26-b2c2-9f5d84d33a32_53</merchantTransactionID>
<paymentID>c178ae4e-c5b2-4615-b5fa-95610939dab3</paymentID>
<userID>e2bd129d-dfb4-47df-b665-d82dcf</userID>
<paymentProvider>
<key>123</key>
<value>Kalixa</value>
</paymentProvider>
<amount currencyCode="EUR">10</amount>
<creationType>
<key>2</key>
<value>MerchantOperator</value>
</creationType>
<userIP>127.0.0.1</userIP>
<state>
<id>fa306b77-ddd7-4b65-9266-26be7762ae01</id>
<definition>
<key>232</key>
<value>Created</value>
</definition>
<createdOn>2023-07-21T10:58:13.6234336Z</createdOn>
<paymentStateDetails>
<detail xsi:type="keyIntValuePair">
<key>PaymentStateReasonID</key>
<value>1</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>false</isExecuted>
<baseAmount currencyCode="EUR">10</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>47852301</value>
</detail>
</paymentDetails>
</payment>
</handlePaymentStateChangedNotificationRequest>
Example handlePaymentStateChangedNotificationResponse (successful case):
<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<resultCode>
<key xmlns=http://www.cqrpayments.com/PaymentProcessing>0</key>
<value
xmlns=http://www.cqrpayments.com/PaymentProcessing>ProcessedSuccessfully</value>
</resultCode>
<resultMessage/>
</handlePaymentStateChangedNotificationResponse>
Example handlePaymentStateChangedNotificationResponse (rejected case):
<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<resultCode>
<key xmlns=http://www.cqrpayments.com/PaymentProcessing>3</key>
<value
xmlns=http://www.cqrpayments.com/PaymentProcessing>RefusedByRiskManagement</value>
</resultCode>
<resultMessage>Risk checks failed</resultMessage>
</handlePaymentStateChangedNotificationResponse>
Example handlePaymentStateChangedNotificationResponse (error case):
<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationResponse xmlns:xsd=http://www.w3.org/2001/XMLSchema
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
<resultCode>
<key xmlns=http://www.cqrpayments.com/PaymentProcessing>400</key>
<value
xmlns=http://www.cqrpayments.com/PaymentProcessing>TechnicalError</value>
</resultCode>
<resultMessage>Technical error occurred</resultMessage>
</handlePaymentStateChangedNotificationResponse>
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:
Updated 8 months ago