Ви знаходитеся тут: Головна / Files / threeDS-0.1.cert.xsd

threeDS-0.1.cert.xsd

створив(ла) Igor Uleschenko Востаннє змінено: Лют 19, 2020 15:41

Extensible Markup Language (XML) icon threeDS-0.1.cert.xsd — Extensible Markup Language (XML), 40 KB (41262 bytes)

Вміст файлу

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by TEAM (RENEGADE) -->
<!--DOCTYPE schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN"
        "XMLSchema.dtd" [
        <!ATTLIST schema
                xmlns:xenc CDATA #FIXED "http://www.w3.org/2001/04/xmlenc#"
                xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#"
                >
        <!ENTITY xenc 'http://www.w3.org/2001/04/xmlenc#'>
        <!ENTITY % p ''>
        <!ENTITY % s ''>
        ]-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified">
    <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
    <xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="xenc-schema.xsd"/>
    <xs:element name="ECommerceConnect">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="EMV3DSRequest"/>
                    <xs:element ref="EMV3DSResponse"/>
                    <xs:element ref="Error"/>
                </xs:choice>
                <xs:element ref="ds:Signature" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="EMV3DSRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="MerchantID" />
                <xs:element ref="TerminalID" />
                <xs:choice>
                    <xs:element ref="InitBRWRequest"/>
                    <xs:element ref="InitAPPLRequest"/>
                    <xs:element ref="AuthRequest"/>
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="id" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:element name="Error">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ErrorCode"/>
                <xs:element ref="ErrorMessage"/>
                <xs:element ref="Details"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="EMV3DSResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Error" minOccurs="0"/>
                <xs:choice>
                    <xs:element ref="InitBRWResponse"/>
                    <xs:element ref="InitAPPLResponse"/>
                    <xs:element ref="AuthResponse"/>
                </xs:choice>
            </xs:sequence>
            <xs:attribute name="id" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>

    <xs:element name="InitBRWRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="InitAuthData"/>
                <xs:element ref="eventCallbackUrl" /> <!-- This is a 3DS requestor URL in which the 3DS requestor receive events during authentication. The 3DS requestor backend needs a handler method to accept the call from ActiveServer. ActiveServer(3DS Server) calls this URL through the iframe when it has to notify some events occurring. POST request will be sent to this URL with following parameters: -->
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="InitAPPLRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="InitAuthData"/>
                <xs:element ref="ApplData" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="InitAuthData">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:sequence>
                        <xs:element ref="CardNum"/>
                        <xs:element ref="ExpYear"/>
                        <xs:element ref="ExpMonth"/>
                    </xs:sequence>
                    <xs:element ref="Token"/>
                </xs:choice>
                <xs:element ref="TotalAmount"/>
                <xs:element ref="Currency"/>
                <xs:element ref="AuthenticationIndicator"/>
                <xs:element ref="CardHolder" minOccurs="0" />
                <xs:element ref="provisionAttemptsDay" minOccurs="0" /> <!-- Number of Add Card attempts in the last 24 hours. -->
                <xs:element ref="shipAddressUsageDate" minOccurs="0" /> <!-- Date when the shipping address used for this transaction was first used with the 3DS Requestor. -->
                <xs:element ref="shipAddressUsageIndicator" minOccurs="0" /> <!-- Indicates when the shipping address used for this transaction was first used with the 3DS Requestor. -->
                <xs:element ref="shipNameIndicator" minOccurs="0" /> <!-- Indicates if the Cardholder Name on the account is identical to the shipping Name used for this transaction. -->
                <xs:element ref="suspiciousAccActivity" minOccurs="0" /> <!-- Indicates whether the 3DS Requestor has experienced suspicious activity (including previous fraud) on the cardholder account. -->
                <xs:element ref="Transaction" minOccurs="0" />
                <xs:element ref="AuthenticationInfo" minOccurs="0" />
                <xs:element ref="challengeInd" minOccurs="0" /> <!-- Indicates whether a challenge is requested for this transaction. (This field is optional|For 01-PA|a 3DS Requestor may have concerns about the transaction|and request a challenge; For 02-NPA, a challenge may be necessary when adding a new card to a wallet.) -->
                <xs:element ref="MerchantRiskIndicator" minOccurs="0" />
                <xs:element ref="payTokenInd" minOccurs="0" /> <!-- EMV Payment Token Indicator A value of True indicates that the transaction was de-tokenised prior to being received by the ACS.This data element will be populated by the system residing in the 3-D Secure domain where the de-tokenisation occurs (i.e., the 3DS Server or the DS). -->
                <xs:element ref="priorTransID" minOccurs="0" /> <!-- The 3DS Server Transaction ID for a prior authenticated transaction of a cardholder. -->
                <xs:element ref="purchaseDate" minOccurs="0" /> <!-- Date and time of the purchase, expressed in UTC. (This field is always required for 01-PA and conditionally required for 02-NPA when 3DS Requestor Authentication Indicator = 02 or 03.) -->
                <xs:element ref="purchaseInstalData" minOccurs="0" /> <!-- Indicates the maximum number of authorisations permitted for instalment payments. (This field is required if 3DS Requestor Authentication Indicator = 03. Omitted if not an instalment payment authentication.) -->
                <xs:element ref="recurringExpiry" minOccurs="0" /> <!-- Date after which no further authorisations shall be performed. (This field is always required for 01-PA and conditionally required for 02-NPA when 3DS Requestor Authentication Indicator = 02 or 03.) -->
                <xs:element ref="recurringFrequency" minOccurs="0" /> <!-- Indicates the minimum number of days between authorisations. (This field is always required for 01-PA and conditionally required for 02-NPA when 3DS Requestor Authentication Indicator = 02 or 03.) Example scenario: If recurring transaction occurs 3, 5 and 9 days after the purchase date, then this field should be set to 2 because the minimum days is between after 3 and 5 days -->
                <xs:element ref="transType"  minOccurs="0" /> <!-- Identifies the type of transaction being authenticated. (This field is required in some markets, e.g. for Merchants in Brazil. Otherwise, it is optional.)-->
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="AuthRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="EMV3DSVersion"/>
                <xs:choice>
                    <xs:element ref="AuthEMV3DSv1Request" />
                    <xs:element ref="AuthEMV3DSv2Request" />
                </xs:choice>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="AuthEMV3DSv1Request">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="PaRes" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="AuthEMV3DSv2Request">
        <xs:complexType>
            <xs:sequence>
                <xs:choice>
                    <xs:element ref="EMV3DSv2Auth" />
                    <xs:element ref="EMV3DSv2AuthResult" />
                </xs:choice>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="EMV3DSv2Auth">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="EMV3DSTransID"/>
                <xs:element ref="EMV3DSServerTransID"/> <!-- The EMV3DSServerTransID received in EMV3DSMethodURLProcess. -->
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="EMV3DSv2AuthResult">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="EMV3DSServerTransID"/> <!-- The EMV3DSServerTransID received in EMV3DSMethodURLProcess. -->
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="InitBRWResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="EMV3DSVersion"/>
                <xs:choice>
                    <xs:element ref="InitEMV3DSv1Response"/>
                    <xs:element ref="InitEMV3DSv2Response"/>
                </xs:choice>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="InitEMV3DSv1Response">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Enrolled"/>
                <xs:element ref="AcsURL" minOccurs="0"/>
                <xs:element ref="PaReq" minOccurs="0"/>
                <xs:element ref="XID" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="InitEMV3DSv2Response">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="EMV3DSTransID"/> <!-- Universal unique transaction identifier assigned by the 3DS Requestor to identify a single transaction -->
                <xs:element ref="EMV3DSServerUrl" minOccurs="0"/> <!-- This URL returned by 3DS Server is used for the purpose of monitoring the timeout process for browser information collecting and 3DS method. It allows to notify the 3DS requestor when the 3DS method times out. An iframe should be created with src attribute set to this endpoint once you call /api/v1/auth/brw/{messageCategory}.Once the iframe is created, it checks for the timeout for a maximum of 15 seconds (10 seconds for 3DS method and 5 seconds for browser information collecting).The timer is started when the 3DS requestor calls /api/v1/auth/brw/init/{messageCategory}, and it will check periodically if the transaction with given transaction ID has successfully called an /api/v1/auth/brw. If a valid request is not sent to /api/v1/auth/brw and timer is up, it will notify the 3DS requestor through the iframe to the eventCallbackUrl sent, with an event 'InitAuthTimedOut' so 3DS requestor can terminate the transaction. Check out the 3DS web adapter.js code on how to create this monitoring iframe. -->
                <xs:element ref="EMV3DSServerCallbackUrl" minOccurs="0" /> <!-- This URL returned by 3DS Server where the 3DS Requestor can use it to collect browser information as well as executing 3DS method if supported by ACS for the BIN range. 3DS server callback URL Required -->
                <xs:element ref="EMV3DSServerTransID"  minOccurs="0" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <xs:element name="AuthResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="EMV3DSVersion"/>
                <xs:choice>
                    <xs:element ref="AuthEMV3DSv1Response"/>
                    <xs:element ref="AuthEMV3DSv2Response"/>
                </xs:choice>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="AuthEMV3DSv1Response">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Status" minOccurs="0"/>
                <xs:element ref="CAVV" minOccurs="0"/>
                <xs:element ref="ECI" minOccurs="0"/>
                <xs:element ref="CavvAlgorithm" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="AuthEMV3DSv2Response">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="AuthEMV3DSv2Data"/>
                <xs:element ref="challengeUrl" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="Token">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="UPCToken"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="UPCToken">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="tokenId" type="typeUPCTokenId"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="CardHolder">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="ageIndicator" minOccurs="0" /> <!-- Length of time that the cardholder has had the account with the 3DS Requestor -->
            <xs:element ref="lastChangeDate" minOccurs="0" /> <!-- Date that the cardholder's account with the 3DS Requestor was last changed. Including Billing or Shipping address, new payment account, or new user(s) added -->
            <xs:element ref="lastChangedIndicator" minOccurs="0" /> <!-- Length of time since the cardholder's account information with the 3DS Requestor was last changed. Including Billing or Shipping address -->
            <xs:element ref="firstAccessDate" minOccurs="0" /> <!-- Date that the cardholder opened the account with the 3DS Requestor. -->
            <xs:element ref="passwordChangeDate" minOccurs="0" /> <!-- Date that cardholder's account with the 3DS Requestor had a password change or account reset. -->
            <xs:element ref="passwordChangeIndicator" minOccurs="0" /> <!-- Indicates the length of time since the cardholder's account with the 3DS Requestor had a password change or account reset. -->
            <xs:element ref="numberPurchasePreviousSixMonths" minOccurs="0" /> <!--- Number of purchases with this cardholder account during the previous six months. -->
            <xs:element ref="paymentEnrollDate" minOccurs="0" /> <!-- Date that the payment account was enrolled in the cardholder's account with the 3DS Requestor. -->
            <xs:element ref="paymentEnrollIndicator" minOccurs="0" /> <!-- Indicates the length of time that the payment account was enrolled in the cardholder's account with the 3DS -->
            <xs:element ref="Billing" minOccurs="0" />
            <xs:element ref="cardholderName" minOccurs="0" />
            <xs:element ref="email" minOccurs="0" />
            <xs:element ref="HomePhone"  minOccurs="0" />
            <xs:element ref="MobilePhone" minOccurs="0" />
            <xs:element ref="Shipping" minOccurs="0" />
            <xs:element ref="WorkPhone" minOccurs="0" />
          </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="Billing">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Address"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="Address">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="city" minOccurs="0" />
                <xs:element ref="country" minOccurs="0" />
                <xs:element ref="Street" minOccurs="0" />
                <xs:element ref="postCode" minOccurs="0" />
                <xs:element ref="state" minOccurs="0" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="Street">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="line1" minOccurs="0" />
                <xs:element ref="line2" minOccurs="0" />
                <xs:element ref="line3" minOccurs="0" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="HomePhone">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Phone" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="MobilePhone">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Phone" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="WorkPhone">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Phone" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="Phone">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="countryCode" minOccurs="0" />
                <xs:element ref="subscribe" minOccurs="0" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="Shipping">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Address"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="Transaction">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="activityDay" minOccurs="0" /> <!-- Number of transactions (successful and abandoned) for this cardholder account with the 3DS Requestor across all payment accounts in the previous 24 hours. -->
                <xs:element ref="activityYear" minOccurs="0" /> <!-- Number of transactions (successful and abandoned) for this cardholder account with the 3DS Requestor across all payment accounts in the previous year. -->
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="AuthenticationInfo">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="EMV3DSAuthData" minOccurs="0" /> <!-- Data that documents and supports a specific authentication process. Length: maximum 2048 bytes, JSON Data Type: String, Value accepted: Any -->
                <xs:element ref="EMV3DSAuthMethod" minOccurs="0" /> <!-- Mechanism used by the Cardholder to authenticate to the 3DS Requestor. -->
                <xs:element ref="EMV3DSAuthTimestamp" minOccurs="0" /> <!-- Date and time in UTC of the cardholder authentication. -->
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="MerchantRiskIndicator">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="deliveryEmailAddress" minOccurs="0" /> <!-- For Electronic delivery, the email address to which the merchandise was delivered.-->
                <xs:element ref="deliveryTimeframe" minOccurs="0" /> <!-- Indicates the merchandise delivery timeframe. -->
                <xs:element ref="giftCardAmount" minOccurs="0" /> <!-- For prepaid or gift card purchase, the purchase amount total of prepaid or gift card(s) in major units (for example, USD 123.45 is 123). -->
                <xs:element ref="giftCardCount" minOccurs="0" /> <!-- For prepaid or gift card purchase, total count of individual prepaid or gift cards/codes purchased. -->
                <xs:element ref="giftCardCurr" minOccurs="0" /> <!-- For prepaid or gift card purchase, the currency code of the card as defined in ISO 4217 other than those listed in Table A.6. in EMVCO Protocol and Core Functions Specification -->
                <xs:element ref="preOrderDate" minOccurs="0" />  <!-- For a pre-ordered purchase, the expected date that the merchandise will be available. -->
                <xs:element ref="preOrderPurchaseInd" minOccurs="0" /> <!-- Indicates whether Cardholder is placing an order for merchandise with a future availability or release date. -->
                <xs:element ref="reorderItemsInd" minOccurs="0" /> <!-- Indicates whether the cardholder is reordering previously purchased merchandise. -->
                <xs:element ref="shipIndicator" minOccurs="0" /> <!--  Indicates shipping method chosen for the transaction. Merchants must choose the Shipping Indicator code that most accurately describes the cardholder's specific transaction, not their general business. If one or more items are included in the sale, use the Shipping Indicator code for the physical goods, or if all digital goods, use the Shipping Indicator code that describes the most expensive item. -->
            </xs:sequence>
        </xs:complexType>
    </xs:element>


    <xs:simpleType name="typeCardNum" id="typeCardNum">
        <xs:restriction base="xs:long">
            <xs:pattern value="[0-9]{13,19}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeExpYear" id="typeExpYear">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{4}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeExpMonth" id="typeExpMonth">
        <xs:restriction base="xs:string">
            <xs:pattern value="1[0-2]|0[1-9]"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeUPCTokenId" id="typeUPCTokenId">
        <xs:restriction base="xs:string">
            <xs:pattern value="[a-fA-F0-9]{32}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeCurrency" id="typeCurrency">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{3}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeAuthInd" id="typeAuthInd">
        <xs:restriction base="xs:string">
            <xs:pattern value="0[1-6]"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeIndicator" id="typeIndicator">
        <xs:restriction base="xs:string">
            <xs:pattern value="0[1-5]"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeOneToFourIndicator" id="typeOneToFourIndicator">
        <xs:restriction base="xs:string">
            <xs:pattern value="0[1-4]"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeStreetLine" id="typeStreetLine">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{0,50}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeDate_yyyyMMdd" id="typeDate_yyyyMMdd">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{4}(0[1-9]|1[0-2])(0[0-9]|[1-2][0-9]|3[0-1])"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeNumberPurchase" id="typeNumberPurchase">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{1,4}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeCardholderName" id="typeCardholderName">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{2,45}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeEmail" id="typeEmail">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{0,254}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeThreeDigitNumber" id="typeThreeDigitNumber">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{1,3}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeFifteenDigitNumber" id="typeFifteenDigitNumber">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{1,15}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeOneToTwoIndicator" id="typeOneToTwoIndicator">
        <xs:restriction base="xs:string">
            <xs:pattern value="0[1-2]"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeCallbackUrl" id="typeCallbackUrl">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{11,2000}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeUUID" id="typeUUID">
        <xs:restriction base="xs:string">
            <xs:pattern value="[a-fA-F0-9-]{36}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeDate_yyyyMMddHHmmss" id="typeDate_yyyyMMddHHmmss">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{4}(0[1-9]|1[0-2])(0[0-9]|[1-2][0-9]|3[0-1])([0-1][0-9]|2[0-3])[0-5][0-9][0-5][0-9]"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeFourDigitNumber" id="typeFourDigitNumber">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{1,4}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeTrans" id="typeTrans">
        <xs:restriction base="xs:string">
            <xs:pattern value="(01|03|10|11|28)" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeCity" id="typeCity">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{2,50}" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeCountry" id="typeCountry">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{3}" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typePostCode" id="typePostCode">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{1,16}" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeState" id="typeState">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{1,3}" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeAuthData" id="typeAuthData">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{1,2048}" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeDate_yyyyMMddHHmm" id="typeDate_yyyyMMddHHmm">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{4}(0[1-9]|1[0-2])(0[0-9]|[1-2][0-9]|3[0-1])([0-1][0-9]|2[0-3])[0-5][0-9]" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeAmount" id="typeAmount">
        <xs:restriction base="xs:long">
            <xs:minLength value="1" />
            <xs:maxLength value="15" />
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeTwoDigitNumber" id="typeTwoDigitNumber">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{1,2}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeOneToSevenIndicator" id="typeOneToSevenIndicator">
        <xs:restriction base="xs:string">
            <xs:pattern value="0[1-7]"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="typeEMV3DSVersion" id="typeEMV3DSVersion">
        <xs:restriction base="xs:string">
            <xs:pattern value="(1|2)"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeXID" id="typeXID">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{0,28}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="typeCAVV" id="typeCAVV">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{0,56}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeStatus" id="typeStatus">
        <xs:restriction base="xs:string">
            <xs:pattern value="[YNUACR]{0,1}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeECI" id="typeECI">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{0,2}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:element name="MerchantID" type="xs:string"/>
    <xs:element name="TerminalID" type="xs:string"/>
    <xs:element name="Details" type="xs:string"/>
    <xs:element name="ErrorMessage" type="xs:string"/>
    <xs:element name="ErrorCode" type="xs:string"/>
    <xs:element name="CardNum" type="typeCardNum"/>
    <xs:element name="ExpMonth" type="typeExpMonth"/>
    <xs:element name="ExpYear" type="typeExpYear"/>
    <xs:element name="TotalAmount" type="xs:long"/>
    <xs:element name="Currency" type="typeCurrency"/>
    <xs:element name="AuthenticationIndicator" type="typeAuthInd"/>
    <xs:element name="ageIndicator" type="typeIndicator" />
    <xs:element name="line1" type="typeStreetLine" />
    <xs:element name="line2" type="typeStreetLine" />
    <xs:element name="line3" type="typeStreetLine" />
    <xs:element name="lastChangeDate" type="typeDate_yyyyMMdd" />
    <xs:element name="lastChangedIndicator" type="typeOneToFourIndicator" />
    <xs:element name="firstAccessDate" type="typeDate_yyyyMMdd" />
    <xs:element name="passwordChangeDate" type="typeDate_yyyyMMdd" />
    <xs:element name="passwordChangeIndicator" type="typeIndicator" />
    <xs:element name="numberPurchasePreviousSixMonths" type="typeNumberPurchase" />
    <xs:element name="paymentEnrollDate" type="typeDate_yyyyMMdd" />
    <xs:element name="paymentEnrollIndicator" type="typeIndicator" />
    <xs:element name="cardholderName" type="typeCardholderName" />
    <xs:element name="email" type="typeEmail" />
    <xs:element name="countryCode" type="typeThreeDigitNumber" />
    <xs:element name="subscribe" type="typeFifteenDigitNumber" />
    <xs:element name="shipAddressUsageDate" type="typeDate_yyyyMMdd" />
    <xs:element name="provisionAttemptsDay" type="typeThreeDigitNumber" />
    <xs:element name="shipAddressUsageIndicator" type="typeOneToFourIndicator" />
    <xs:element name="shipNameIndicator" type="typeOneToTwoIndicator" />
    <xs:element name="suspiciousAccActivity" type="typeOneToTwoIndicator" />
    <xs:element name="challengeInd" type="typeOneToFourIndicator" />
    <xs:element name="eventCallbackUrl" type="typeCallbackUrl" />
    <xs:element name="payTokenInd" type="xs:boolean" />
    <xs:element name="priorTransID" type="typeUUID" />
    <xs:element name="purchaseDate" type="typeDate_yyyyMMddHHmmss" />
    <xs:element name="purchaseInstalData" type="typeThreeDigitNumber" />
    <xs:element name="recurringExpiry" type="typeDate_yyyyMMdd" />
    <xs:element name="recurringFrequency" type="typeFourDigitNumber" />
    <xs:element name="EMV3DSTransID" type="typeUUID" />
    <xs:element name="EMV3DSServerTransID" type="typeUUID" />
    <xs:element name="transType"  type="typeTrans" />
    <xs:element name="city" type="typeCity" />
    <xs:element name="country" type="typeCountry" />
    <xs:element name="postCode" type="typePostCode" />
    <xs:element name="state" type="typeState" />
    <xs:element name="activityDay" type="typeThreeDigitNumber" />
    <xs:element name="activityYear" type="typeThreeDigitNumber" />

    <xs:element name="EMV3DSAuthData" type="typeAuthData" />
    <xs:element name="EMV3DSAuthMethod" type="typeAuthInd" />
    <xs:element name="EMV3DSAuthTimestamp" type="typeDate_yyyyMMddHHmm" />

    <xs:element name="deliveryEmailAddress" type="typeEmail" />
    <xs:element name="deliveryTimeframe" type="typeOneToFourIndicator" />
    <xs:element name="giftCardAmount" type="typeAmount" />
    <xs:element name="giftCardCount" type="typeTwoDigitNumber" />
    <xs:element name="giftCardCurr" type="typeCurrency" />
    <xs:element name="preOrderDate" type="typeDate_yyyyMMdd" />
    <xs:element name="preOrderPurchaseInd" type="typeOneToTwoIndicator" />
    <xs:element name="reorderItemsInd" type="typeOneToTwoIndicator" />
    <xs:element name="shipIndicator" type="typeOneToSevenIndicator" />
    <xs:element name="Enrolled" type="xs:string"/>
    <xs:element name="EMV3DSVersion" type="typeEMV3DSVersion"/>
    <xs:element name="AcsURL" type="xs:string"/>
    <xs:element name="PaReq" type="xs:string"/>
    <xs:element name="EMV3DSServerUrl" type="xs:string"/>
    <xs:element name="EMV3DSServerCallbackUrl" type="xs:string"/>
    <xs:element name="XID" type="typeXID" />
    <xs:element name="Status" type="typeStatus"/>
    <xs:element name="CAVV" type="typeCAVV"/>
    <xs:element name="ECI" type="typeECI"/>
    <xs:element name="CavvAlgorithm" type="xs:string"/>

    <xs:element name="ApplData">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="SDK" />
                <xs:element ref="JWK" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="JWK">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="alg" type="typeAlg" minOccurs="0"/>
                <xs:element name="keyOps" type="typeKeyOps" minOccurs="0"/>
                <xs:element name="keyId" type="xs:string" minOccurs="0"/>
                <xs:element name="keyType" type="typeKeyType"/>
                <xs:element name="x5c" type="xs:string" minOccurs="0"/>
                <xs:element name="x5t" type="xs:string" minOccurs="0"/>
                <xs:element name="x5u" type="xs:string" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="InitAPPLResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="AuthEMV3DSv2Data"/>
                <xs:element ref="AuthAPPLEMV3DSv2Data"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="AuthEMV3DSv2Data">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="acsChallengeMandated" />
                <xs:element ref="authenticationType" minOccurs="0"/>
                <xs:element ref="authenticationValue" minOccurs="0"/>
                <xs:element ref="cardholderInfo" minOccurs="0"/>
                <xs:element ref="eci" minOccurs="0"/>
                <xs:element ref="errorCode" minOccurs="0"/>
                <xs:element ref="errorComponent" minOccurs="0"/>
                <xs:element ref="errorDescription" minOccurs="0"/>
                <xs:element ref="errorDetail" minOccurs="0"/>
                <xs:element ref="errorMessageType" minOccurs="0"/>
                <xs:element ref="EMV3DSServerTransID" minOccurs="0"/>
                <xs:element ref="tranStatus"/>
                <xs:element ref="tranStatusReason" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="acsChallengeMandated" type="typeAcsChallengeMandated" /> <!-- Indication of whether a challenge is required for the transaction to be  authorised due to local/regional mandates or other variable. \nLength: 1 character\nValues accepted:Y = Challenge is mandated\nN = Challenge is not mandated\n\n Conditional -->

    <xs:simpleType name="typeAcsChallengeMandated" id="typeAcsChallengeMandated">
        <xs:restriction base="xs:string">
            <xs:pattern value="Y|N"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="authenticationType" type="typeAuthenticationType" />
    <xs:simpleType name="typeAuthenticationType">
        <xs:restriction base="xs:string">
            <xs:pattern value="0[1-3]"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="authenticationValue" type="typeAuthenticationValue"/>
    <xs:simpleType name="typeAuthenticationValue">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{28}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:element name="cardholderInfo" type="typeCardholderInfo" />
    <xs:simpleType name="typeCardholderInfo">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{0,128}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="eci" type="typeECI" />
    <xs:element name="errorCode" type="typeErrorCode"/>
    <xs:simpleType name="typeErrorCode">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{4}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="errorComponent" type="typeErrorComponent" />
    <xs:simpleType name="typeErrorComponent">
        <xs:restriction base="xs:string">
            <xs:pattern value="C|S|D|A"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="tranStatus" type="typeStatus"/>
    <xs:element name="tranStatusReason" type="typeTransStatusReason"/>
    <xs:simpleType name="typeTransStatusReason">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{2}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="errorDescription" type="typeErrorDetail"/>
    <xs:simpleType name="typeErrorDetail">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{0,2048}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="errorDetail" type="typeErrorDetail"/>
    <xs:element name="errorMessageType" type="typeErrorMessageType" />

    <xs:simpleType name="typeErrorMessageType">
        <xs:restriction base="xs:string">
            <xs:pattern value="[a-zA-Z]{4}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="AuthAPPLEMV3DSv2Data">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="acsReferenceNumber" type="typeReferenceNumber" minOccurs="0"/>
                <xs:element ref="AcsRenderingType" minOccurs="0"/>
                <xs:element ref="acsSignedContent" minOccurs="0" />
                <xs:element ref="acsTransID" minOccurs="0" />
                <xs:element name="dsReferenceNumber" type="typeReferenceNumber" minOccurs="0" />
                <xs:element name="dsTransID" type="typeUUID" minOccurs="0" />
                <xs:element name="messageVersion" type="typeMessageVersion" />
                <xs:element ref="sdkTransID" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="AcsRenderingType">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="interface" minOccurs="0"/>
                <xs:element ref="uiTemplate" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="interface" type="typeAcsInterface" />
    <xs:simpleType name="typeAcsInterface">
        <xs:restriction base="xs:string">
            <xs:pattern value="0[12]"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="uiTemplate" type="typeUiTemplate" />
    <xs:simpleType name="typeUiTemplate">
        <xs:restriction base="xs:string">
            <xs:pattern value="0[1-5]"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="acsSignedContent" type="xs:string" />
    <xs:element name="acsTransID" type="typeUUID" />
    <xs:element name="sdkTransID" type="typeUUID" />
    <xs:element name="challengeUrl" type="typeCallbackUrl" />

    <xs:simpleType name="typeSdkEncData">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{1,64000}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="typeSdkInterface">
        <xs:restriction base="xs:string">
            <xs:pattern value="0[1-3]"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="typeSdkUiType">
        <xs:restriction base="xs:string">
            <xs:pattern value="0[1-5]"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="SDK">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="interface" type="typeSdkInterface"/>
                <xs:element name="uiType" type="typeSdkUiType"/>
                <xs:element name="appID" type="typeUUID"/>
                <xs:element name="encData" type="typeSdkEncData" />
                <xs:element name="maxTimeout" type="typeMaxTimeOut"/>
                <xs:element name="referenceNumber" type="typeReferenceNumber" />
                <xs:element ref="sdkTransID" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name="typeMaxTimeOut">
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{2}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeReferenceNumber">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{1,32}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="typeAlg">
        <xs:restriction base="xs:string">
            <xs:pattern value="(((HS|RS|ES|PS)(256|384|512))|none)"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="typeKeyOps">
        <xs:restriction base="xs:string">
            <xs:pattern value="sign|verify|encrypt|decrypt|wrapKey|unwrapKey|deriveKey|deriveBits"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeKeyType">
        <xs:restriction base="xs:string">
            <xs:pattern value="EC|RSA|OCT"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="typeMessageVersion">
        <xs:restriction base="xs:string">
            <xs:pattern value=".{5,8}"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>