How to create and close an order (Sport Events)

Steps

  • Step 1 : retrieve catalog
  • Step 2 : check point of sales configuration
  • Step 3 : check availability for performance
  • Step 4 : create the order
  • Step 5 : close the order
  • Step joker : checking order status

This sequence of calls can be executed on the following web services:

Catalog service
https://PLAY.demo-ws.secutix.com:443/tnseb/external-remoting/com.secutix.service.realtime.catalog.v1_31.CatalogService.webservice

External order facade
https://PLAY.demo-ws.secutix.com:443/tnseb/external-remoting/com.secutix.service.realtime.externalorder.v1_31.ExternalOrderFacade.webservice

External order service
https://PLAY.demo-ws.secutix.com:443/tnseb/external-remoting/com.secutix.service.realtime.externalorder.v1_31.ExternalOrderService.webservice

Availability service https://PLAY.demo-ws.secutix.com/tnseb/external-remoting/com.secutix.service.realtime.availability.v1_31.AvailabilityService.webservice?wsdl

Step 1: retreive catalog

Must be done once a day (see here)

Query
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:v1="http://v1_31.CatalogService.service.secutix.com">
    <soapenv:Header>
        <wsse:Security soapenv:mustUnderstand="1"
            xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
            xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken wsu:Id="UsernameToken-B375FF7B6FAD83ECAF15795998117091">
                <wsse:Username>PLAY_B2C</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">P@ssw0rd</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security>
    </soapenv:Header>
    <soapenv:Body>
        <v1:getCatalogDetailed/>
    </soapenv:Body>
</soapenv:Envelope>
Response

Here is a link with a zipped version of the response as the catalog is quite big.

Information extracted from response:

  • productId: 101090010798
  • performanceId: 101090013225
  • audSubCatId: 101053580099
  • seatCatId: 101053581510
  • amount (unit price): 60000

Step 2: check point of sales configuration

This can only be done once in a while. Important points to notice are posId (pointOfSalesId in subsequent calls) and payment methods (will be used to pay the order)

Query
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:v1="http://v1_31.CatalogService.service.secutix.com">
    <soapenv:Header>
        <wsse:Security soapenv:mustUnderstand="1"
            xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
            xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken wsu:Id="UsernameToken-BCC4CF7DDCCDA67DF715859090203102">
                <wsse:Username>PLAY_B2C</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">P@ssw0rd</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security>
    </soapenv:Header>
    <soapenv:Body>
        <v1:getPOSConfig/>
    </soapenv:Body>
</soapenv:Envelope>
Response

Link to zip file

Information extracted from response:

  • posId (Point of sales ID): 101053522324
  • paymentMethodId: 16370

Step 3: check availability for performance

All the fields are filled with the information above. eventId matches the productId.

Query
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:v1="http://v1_31.RTAvailabilityService.service.secutix.com">
    <soapenv:Header>
        <wsse:Security soapenv:mustUnderstand="1"
            xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
            xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
            <wsse:UsernameToken wsu:Id="UsernameToken-BCC4CF7DDCCDA67DF715859090203102">
                <wsse:Username>PLAY_B2C</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">P@ssw0rd</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security>
    </soapenv:Header>
    <soapenv:Body>
        <v1:getPerformanceAvailability>
            <pointOfSalesId>101053522324</pointOfSalesId>
            <eventId>101090010798</eventId>
            <performanceIds>101090013225</performanceIds>
            <seatCategoryIds>101053581510</seatCategoryIds>
        </v1:getPerformanceAvailability>
    </soapenv:Body>
</soapenv:Envelope>
Response
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:getPerformanceAvailabilityResponse xmlns:ns2="http://v1_31.RTAvailabilityService.service.secutix.com">
            <PerformanceAvailabilityResult>
                <requestId xsi:nil="true"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
                <statusCode>success</statusCode>
                <statusDetail xsi:nil="true"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
                <performanceAvailabilityData>
                    <performanceAvailabilities>
                        <availability>9487</availability>
                        <availabilityLevel>GOOD</availabilityLevel>
                        <quota>9488</quota>
                        <seatCategoryId>101053581510</seatCategoryId>
                        <eventId>101090010798</eventId>
                        <performanceId>101090013225</performanceId>
                    </performanceAvailabilities>
                </performanceAvailabilityData>
            </PerformanceAvailabilityResult>
        </ns2:getPerformanceAvailabilityResponse>
    </S:Body>
</S:Envelope>

We can see there is a GOOD availability level. So we can proceed with the purchase.

Step 4: create the order

pointOfSalesId comes from the getPosConfig response.
All the other ids are retrieved in the catalog.

Query
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:v1="http://v1_31.ExternalOrderFacade.service.secutix.com"
    xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <soapenv:Header>
        <ns2:Security>
            <ns2:UsernameToken>
                <ns2:Username>PLAY_B2C</ns2:Username>
                <ns2:Password>P@ssw0rd</ns2:Password>
            </ns2:UsernameToken>
        </ns2:Security>
    </soapenv:Header>
    <soapenv:Body>
        <v1:createOrUpdateOrder>
            <pointOfSalesId>101053522324</pointOfSalesId>
            <orderType>SALE</orderType>
            <singleEntryAttributionOperations>
                <operationAttributions>
                    <audienceSubCategoryId>101053580099</audienceSubCategoryId>
                    <quantity>1</quantity>
                    <performanceId>101090013225</performanceId>
                    <seatCategoryId>101053581510</seatCategoryId>
                    <unitAmount>60000</unitAmount>
                </operationAttributions>
            </singleEntryAttributionOperations>
        </v1:createOrUpdateOrder>
    </soapenv:Body>
</soapenv:Envelope>
Response
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:createOrUpdateOrderResponse xmlns:ns2="http://v1_31.ExternalOrderFacade.service.secutix.com">
            <OrderUpdateResult>
                <requestId xsi:nil="true"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
                <statusCode>success</statusCode>
                <statusDetail xsi:nil="true"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
                <expectedException>false</expectedException>
                <orderUpdateData>
                    <catalogCurrency>
                        <currencyCode>EUR</currencyCode>
                        <fractionDigit>2</fractionDigit>
                        <minAmount>10</minAmount>
                        <symbol>€</symbol>
                    </catalogCurrency>
                    <generatedContactQualities/>
                    <generatedContiguities>
                        <contiguous>true</contiguous>
                        <performanceId>101090013225</performanceId>
                        <seatCategoryId>101053581510</seatCategoryId>
                        <segments>
                            <movementIds>10228263917610</movementIds>
                        </segments>
                    </generatedContiguities>
                    <mainOperationId>10228263917507</mainOperationId>
                    <movementDataUpdates>
                        <area>Tribune basse west (nord)</area>
                        <areaId>101053496266</areaId>
                        <areaKind>INDIFFERENT</areaKind>
                        <attributionMatch>NO_EXPECTATION</attributionMatch>
                        <block>W7 bas</block>
                        <blockId>101053496520</blockId>
                        <contingent>Accessible</contingent>
                        <contingentId>101053647160</contingentId>
                        <entrance>Porte A</entrance>
                        <entranceCode>A</entranceCode>
                        <entranceId>101053496176</entranceId>
                        <floor>Bas</floor>
                        <movementId>10228263917610</movementId>
                        <operationId>10228263917507</operationId>
                        <resumed>false</resumed>
                        <row>M</row>
                        <saleSeatId>10009372140</saleSeatId>
                        <scenePanoLink>pacifa://https://static.pacifa3d.com/StadeOceane/SECUTIX/V2-0/Pano/Pano.html?s=411</scenePanoLink>
                        <seatCategory>Cat 1</seatCategory>
                        <seatCategoryId>101053581510</seatCategoryId>
                        <seatId>101053497670</seatId>
                        <seatNumber>325</seatNumber>
                        <seatOrientation>180</seatOrientation>
                        <seatQuality>Armchair</seatQuality>
                        <seatQualityCode>Fauteuil</seatQualityCode>
                        <seatQualityId>2424</seatQualityId>
                        <stageVisibility>VISIBLE</stageVisibility>
                        <type>SEAT</type>
                        <xCoordinate>14586</xCoordinate>
                        <yCoordinate>2435</yCoordinate>
                    </movementDataUpdates>
                    <operationDataUpdates>
                        <activityType>SPORT</activityType>
                        <audienceCatId>15655</audienceCatId>
                        <audienceSubCategory>Full price</audienceSubCategory>
                        <audienceSubCategoryId>101053580099</audienceSubCategoryId>
                        <audienceSubCategoryRank>1</audienceSubCategoryRank>
                        <audienceSubCategoryRequireAttachment>false</audienceSubCategoryRequireAttachment>
                        <basePrice>60000</basePrice>
                        <comfortVariableValues>
                            <entry>
                                <key>PrioPts</key>
                                <value>
                                    <translations>
                                        <locale>en</locale>
                                        <value>0</value>
                                    </translations>
                                </value>
                            </entry>
                        </comfortVariableValues>
                        <contingent>Accessible</contingent>
                        <contingentId>101053647160</contingentId>
                        <eventId>101090010798</eventId>
                        <fileId>3985</fileId>
                        <isNominative>false</isNominative>
                        <itemDisplayExternalDesignation>Championship Home Games</itemDisplayExternalDesignation>
                        <itemId>101090010924</itemId>
                        <kind>SINGLE_ENTRY</kind>
                        <locations>
                            <siteAddress>
                                <countryCode>CH</countryCode>
                                <firstAddressLine>Route des Plaines-du-Loup 7</firstAddressLine>
                                <gpsLatitude>46.5333333</gpsLatitude>
                                <gpsLongitude>6.6241666999999325</gpsLongitude>
                                <locality>Lausanne</locality>
                                <phoneNumber>41-0213151414</phoneNumber>
                                <website>http://www.secutix.com</website>
                                <zipCode>1018</zipCode>
                            </siteAddress>
                            <siteCode>Arena</siteCode>
                            <siteExternalName>
                                <translations>
                                    <locale>en</locale>
                                    <value>SecuTix Arena</value>
                                </translations>
                                <translations>
                                    <locale>fr</locale>
                                    <value>Arène SecuTix</value>
                                </translations>
                            </siteExternalName>
                            <spaceCode>Arena</spaceCode>
                            <spaceExternalName>
                                <translations>
                                    <locale>en</locale>
                                    <value>Home arena</value>
                                </translations>
                                <translations>
                                    <locale>fr</locale>
                                    <value>Arène sport</value>
                                </translations>
                            </spaceExternalName>
                        </locations>
                        <match>
                            <finalDate>true</finalDate>
                            <hostTeam>Team Play</hostTeam>
                            <hostTeamId>101053521731</hostTeamId>
                            <opposingTeam>My Bed FC</opposingTeam>
                            <opposingTeamId>101053521730</opposingTeamId>
                            <round>Day 6</round>
                            <roundCode>J6</roundCode>
                        </match>
                        <numbered>true</numbered>
                        <operationId>10228263917507</operationId>
                        <operationNumber>1</operationNumber>
                        <performance>Championship Home Games</performance>
                        <performanceCode>Champ</performanceCode>
                        <performanceDate>2020-07-11T17:00:00+02:00</performanceDate>
                        <performanceDuration>7200</performanceDuration>
                        <performanceId>101090013225</performanceId>
                        <performanceKind>Default</performanceKind>
                        <physicalConfigurationId>101053496064</physicalConfigurationId>
                        <product>Championship Home Games</product>
                        <productCode>League</productCode>
                        <productFamilySubType>SPORTING_EVENT</productFamilySubType>
                        <productFamilyType>SINGLE_ENTRY</productFamilyType>
                        <productId>101090010798</productId>
                        <quantity>1</quantity>
                        <season>Current season</season>
                        <seatCategory>Cat 1</seatCategory>
                        <seatCategoryBgColor>D6006B</seatCategoryBgColor>
                        <seatCategoryId>101053581510</seatCategoryId>
                        <seatCategoryRank>1</seatCategoryRank>
                        <selfPaidVat>false</selfPaidVat>
                        <site>SecuTix Arena</site>
                        <siteAddress>
                            <countryCode>CH</countryCode>
                            <firstAddressLine>Route des Plaines-du-Loup 7</firstAddressLine>
                            <gpsLatitude>46.5333333</gpsLatitude>
                            <gpsLongitude>6.6241666999999325</gpsLongitude>
                            <locality>Lausanne</locality>
                            <phoneNumber>41-0213151414</phoneNumber>
                            <website>http://www.secutix.com</website>
                            <zipCode>1018</zipCode>
                        </siteAddress>
                        <siteId>101053494751</siteId>
                        <space>Home arena</space>
                        <totalAmount>60000</totalAmount>
                        <unitPrice>60000</unitPrice>
                        <vatCountryCode>CH</vatCountryCode>
                        <vatRate>8000</vatRate>
                        <waitingAccountBalance>0</waitingAccountBalance>
                        <withoutVatTotalAmount>55560</withoutVatTotalAmount>
                    </operationDataUpdates>
                    <orderId>11000309828</orderId>
                    <orderSecretId>731ad90d-0761-4516-a3e7-3aeaf5736539_11000309828</orderSecretId>
                    <origin>
                        <toCreateToken>false</toCreateToken>
                    </origin>
                </orderUpdateData>
            </OrderUpdateResult>
        </ns2:createOrUpdateOrderResponse>
    </S:Body>
</S:Envelope>

Information extracted from response:

  • orderId: 11000309828
  • movementId: 10228263917610
  • amount: 60000

Step 5: close the order and create payment

orderId and movementId and amount all come from the response to the order creation.

Contact reference, here is a given contact able to handle waiting account payments. Contact reference can also be obtained by searching/creating contact through contact web services.

paymentMethodId comes from getPosConfig response.

Query
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:v1="http://v1_31.ExternalOrderFacade.service.secutix.com"
    xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <soapenv:Header>
        <ns2:Security>
            <ns2:UsernameToken>
                <ns2:Username>PLAY_B2C</ns2:Username>
                <ns2:Password>P@ssw0rd</ns2:Password>
            </ns2:UsernameToken>
        </ns2:Security>
    </soapenv:Header>
    <soapenv:Body>
        <v1:createPaymentsAndCloseOrder>
            <orderId>11000309828</orderId>
            <payments>
                <amount>60000</amount>
                <paymentMethodId>16370</paymentMethodId>
            </payments>
            <paymentParams>
                <contactNumber>8150</contactNumber>
                <pointOfSalesId>101053522324</pointOfSalesId>
                <totalAmount>64000</totalAmount>
            </paymentParams>
            <orderType>SALE</orderType>
            <maxWaitingTime>0</maxWaitingTime>
            <purchasersInfo>
                <contactReference>8150</contactReference>
            </purchasersInfo>
        </v1:createPaymentsAndCloseOrder>
    </soapenv:Body>
</soapenv:Envelope>

Step joker: Checking order status

Query
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://v1_31.ExternalOrderService.service.secutix.com" xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
  <soapenv:Header>
    <ns2:Security>
      <ns2:UsernameToken>
        <ns2:Username>PLAY_B2C</ns2:Username>
        <ns2:Password>P@ssw0rd</ns2:Password>
      </ns2:UsernameToken>
    </ns2:Security>
  </soapenv:Header>
  <soapenv:Body>
    <v1:getOrderDetails>
      <orderId>11000309828</orderId>
    </v1:getOrderDetails>
  </soapenv:Body>
</soapenv:Envelope>