Difference between revisions of "API Documentation"
(→Ticket Purchasing (3rd Party Credit Card Processing / TSYS - E2E)) |
(→Test Card Information) |
||
Line 196: | Line 196: | ||
{| class="mw-collapsible mw-collapsed wikitable" | {| class="mw-collapsible mw-collapsed wikitable" | ||
| <b>Number</b> | | <b>Number</b> | ||
− | | | + | | 6011-0009-9091-1111 |
|- | |- | ||
| <b>Expiration</b> | | <b>Expiration</b> | ||
− | | | + | | 12/2025 |
|- | |- | ||
| <b>AVS Street</b> | | <b>AVS Street</b> | ||
− | | | + | | 123 Main Street |
|- | |- | ||
| <b>AVS Postal</b> | | <b>AVS Postal</b> | ||
− | | | + | | 45209 |
|- | |- | ||
| <b>CVV</b> | | <b>CVV</b> | ||
− | | | + | | 222 |
|- | |- | ||
| <b>Customer Name</b> | | <b>Customer Name</b> | ||
Line 218: | Line 218: | ||
{| class="mw-collapsible mw-collapsed wikitable" | {| class="mw-collapsible mw-collapsed wikitable" | ||
| <b>Number</b> | | <b>Number</b> | ||
− | | | + | | 6011-0009-9091-1111 |
|- | |- | ||
| <b>Expiration</b> | | <b>Expiration</b> | ||
− | | | + | | 12/2025 |
|- | |- | ||
| <b>AVS Street</b> | | <b>AVS Street</b> | ||
− | | | + | | 123 Main Street |
|- | |- | ||
| <b>AVS Postal</b> | | <b>AVS Postal</b> | ||
− | | | + | | 45209 |
|- | |- | ||
| <b>CVV</b> | | <b>CVV</b> | ||
− | | | + | | 222 |
|- | |- | ||
| <b>Customer Name</b> | | <b>Customer Name</b> | ||
Line 240: | Line 240: | ||
{| class="mw-collapsible mw-collapsed wikitable" | {| class="mw-collapsible mw-collapsed wikitable" | ||
| <b>Number</b> | | <b>Number</b> | ||
− | | | + | | 4012-0020-0006-0016 |
|- | |- | ||
| <b>Expiration</b> | | <b>Expiration</b> | ||
Line 252: | Line 252: | ||
|- | |- | ||
| <b>CVV</b> | | <b>CVV</b> | ||
− | | | + | | 123 |
+ | |- | ||
+ | | <b>Customer Name</b> | ||
+ | | Any name | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | The test credit card information for the TSYS Secure server is:<br> | ||
+ | {| class="mw-collapsible mw-collapsed wikitable" | ||
+ | | <b>Number</b> | ||
+ | | 4012-0000-9876-5439 | ||
+ | |- | ||
+ | | <b>Expiration</b> | ||
+ | | 12 / 2020 | ||
+ | |- | ||
+ | | <b>AVS Street</b> | ||
+ | | 8320 T | ||
+ | |- | ||
+ | | <b>AVS Postal</b> | ||
+ | | 75024 | ||
+ | |- | ||
+ | | <b>CVV</b> | ||
+ | | 85284 | ||
|- | |- | ||
| <b>Customer Name</b> | | <b>Customer Name</b> |
Revision as of 17:14, 19 October 2020
Contents
- 1 Version Change History
- 2 Introduction
- 3 Communication
- 4 Test Server Information
- 5 Test Card Information
- 6 Performance Schedule
- 7 Selling - Fees and Adjustments
- 8 Gift Card / Loyalty Card Information
- 8.1 Gift Card / Loyalty Card - Sample Request Packet
- 8.2 Gift Card / Loyalty Card - Sample Response Packet – Non-Registered Card
- 8.3 Gift Card / Loyalty Card (With PIN) - Sample Request Packet
- 8.4 Gift Card / Loyalty Card (With PIN) - Sample Response Packet – Non-Registered Card
- 8.5 Gift Card / Loyalty Card - Sample Response Packet – Registered Card
- 9 Gift Certificate Purchasing
- 10 Loyalty Card Information
- 11 Ticket Purchasing – Check Sold Out
- 12 Ticket Purchasing – Check Redeem
- 13 Ticket Purchasing – Verify Transaction
- 14 Ticket Purchasing – Transaction Details
- 15 Ticket Purchasing – Redeem Tickets
- 16 Ticket Purchasing – Refunds
- 17 Ticket Purchasing – Reverse Transaction
- 18 WorldPay E2E - Credit Card Payment Overview
- 19 Credit Card Payments (WorldPay E2E)
- 20 Heartland Secure - Credit Card Payment Overview
- 21 Ticket Purchasing (3rd Party Credit Card Processing / TSYS - E2E)
- 22 Ticket Purchasing (3rd Party Credit Card Processing / TSYS - Non E2E)
- 23 Ticket Purchasing – General Admission
- 24 Seating Charts
- 24.1 Get Seat Layouts – Sample Request
- 24.2 Get Seat Layouts – Sample Response
- 24.3 Get Seat Plan For Performance – Sample Request
- 24.4 Get Seat Plan For Performance – Sample Response (made with SCHEDULE credentials)
- 24.5 Get Seat Plan For Performance – Sample Response (made with SELLING credentials)
- 25 Reserved Seating – Check Seat Picks
- 26 Holding and Releasing Seats
- 27 Ticket Purchasing – Reserved Seating
- 28 Concession Prices and Sales
- 29 Error Codes
- 30 Reserved Seating Codes
- 31 Film and Show Bit Field Values
Version Change History
Date | Change Notes | Version |
---|---|---|
12/28/08 | Added Error Listing | 0.2 |
06/16/09 | Added Retrieve Seating Chart Section | 1.0 |
06/17/09 | Added PHP sample code | 1.01 |
03/15/10 | Added the CustomerInfo and EmailAddress tags. Used to look-up transactions at the POS. | 1.02 |
04/13/10 | Added Gift Balance functions (requires server version 7.0.7564+).
Added gift number to purchase request, which allows adding money to an existing gift card (requires server version 7.0.7564+). |
1.03 |
11/22/10 | General document clean-up. Corrected 'GiftInfo' to be 'GiftInformation'. |
1.04 |
11/30/10 | Added test server information, credit card information, gift card information, etc Updated PHP sample code to contain additional sample packets |
1.05 |
12/13/10 | Added sample of purchase ticket response Updated sample response for GiftInformation, showing Registered Card information |
1.06 |
06/11/13 | Added multiple <Payment> sample Added GroupID for Reserved Seating – Seat Chart |
1.07 |
01/07/2014 | Corrected an error in the Fees section regarding <TicketFee> | 1.08 |
01/15/2015 | emoved sample code (too many people using for production environments) Switched from DIGEST to BASIC authentication |
1.09 |
03/20/2015 | Removed obsolete Seating Chart sample request | 1.10 |
06/03/2015 | Added WorldPay HostedCheckout sample requests and responses Added 3rd party credit card processing sample request |
1.11 |
10/24/2016 | Added CheckRedeem request sample Added GetSeatLayouts request sample |
1.12 |
02/08/2017 | Added Bit Field values for various new amenities | 1.13 |
05/30/2017 | Fixed documentation error with the CHECKSEATPICKS response | 1.14 |
10/19/2017 | Fixed typo in ‘CHECKSEATPICKS’ sample request Added GridRef to ‘GETSEATPLANFORPERF’ response |
1.15 |
02/02/2018 | Added note regarding GZIP compression now being required for schedule request | 1.16 |
07/24/2018 | Updated test credit card information Added Bit Field values for various new amenities |
1.17 |
08/13/2018 | Added TransactionDetails request sample Added Redeem request sample |
1.18 |
09/26/2019 | Added <SOGen> node to schedule data to indicate SoldOutGeneral state Updated verbiage on <SO> and Added gift card PIN node to BUY request Added 3rd party gift card support Added custom seat pricing data to GETSEATPLANFORPERF call Added note regarding send confirmation emails on purchase via API Updated existing error numbers / messagess |
1.19 |
11/25/2019 | Updated seat type nodes to support new types Added support for 3rd party gift cards into the GIFTINFORMATON call |
1.20 |
01/31/2020 | Added Heartland HostedCheckout test card information Added Heartland HostedCheckout sample requests and responses |
1.21 |
05/04/2020 | Updated seat status nodes to support Buffer seat status | 1.22 |
Introduction
RTS Ticketing has created an open interface to accommodate third party access to our sales engine. In order to allow access, we have created an HTTPS server that accepts XML packets.
Credit card payments are processed either through the POS locations’ credit card processing account, or through your own processing account. So a separate shopping cart or credit card processing account is not needed, but you have the option of building your own.
Purchased tickets can be redeemed at the locations POS at for actual tickets. These tickets can be redeemed using any of three methods:
- The credit card that was used to purchase the tickets
- The receipt number assigned to the purchase
- The bar code that is provided by the purchase response packet.
Note: Some locations do not have bar code readers or the bar code may be illegible when printed on a low-quality printer. It is strongly suggested that the confirmation number is also printed with the bar code.
Communication
Communications with the locations POS server are done using a HTTPS Post of an XML packet. Basic authentication is performed for each Post.
The URL for posting data is:
https://<Theatre RTN Number>.formovietickets.com:<port>/Data.ASP
Note: The listening port is 2235 (not the default web server port 80)
Test Server Information
It is a good idea to develop your application against a test server, and not against a live theatre server. Below is the information for the RTS Test Servers:
!! NOTE: These are not web pages, they cannot be viewed in a browser !!
WorldPay Non-E2E Server (also known as Mercury Classic Server):
The endpoint URL is: https://5.formovietickets.com:2235/Data.ASP
WorldPay E2E Server (also known as Mercury EMV Server):
The endpoint URL is: https://5.formovietickets.com:2245/Data.ASP
Heartland Secure Server:
The endpoint URL is: https://5.formovietickets.com:2255/Data.ASP
The credentials for these servers are:
Schedule and Selling Username: test
Schedule and Selling Password: test
Test Card Information
!! NOTE: The <ChargeAmount> for the test WorldPay cards cannot exceed $10 !!
The test credit card information for the WorldPay Non-E2E server is:
Number | 6011-0009-9091-1111 |
Expiration | 12/2025 |
AVS Street | 123 Main Street |
AVS Postal | 45209 |
CVV | 222 |
Customer Name | Any name |
The test credit card information for the WorldPay E2E server is:
Number | 6011-0009-9091-1111 |
Expiration | 12/2025 |
AVS Street | 123 Main Street |
AVS Postal | 45209 |
CVV | 222 |
Customer Name | Any name |
The test credit card information for the Heartland Secure server is:
Number | 4012-0020-0006-0016 |
Expiration | 12 / 2025 |
AVS Street | 6860 Dallas Pkwy |
AVS Postal | 75024 |
CVV | 123 |
Customer Name | Any name |
The test credit card information for the TSYS Secure server is:
Number | 4012-0000-9876-5439 |
Expiration | 12 / 2020 |
AVS Street | 8320 T |
AVS Postal | 75024 |
CVV | 85284 |
Customer Name | Any name |
To obtain a test gift card number, purchase a new gift card, and then use the returned number as your future test gift card number. See Gift Card / Loyalty Card Information for details on purchasing new gift cards.
Performance Schedule
!! NOTE: GZIP Compression is required when requesting schedule data !!
!! NOTE: Sending in <ShowAvalTickets> and <ShowSales> values that do not match the settings on the locations configured schedule API account will result in a 401 – Unauthorized error !!
Performance Schedule - Sample Request Packet
<Request> <Version>1</Version> <Command>ShowTimeXml</Command> <ShowAvalTickets>1</ShowAvalTickets> <ShowSales>1</ShowSales> <ShowSaleLinks>1</ShowSaleLinks> </Request>
Performance Schedule - Sample Response Packet
<Response> <ShowSchedule> <FileVersion>1.1</FileVersion> <RtsVersion>7.0.7238.0</RtsVersion> <LinkPrefix> https://www.readyticket.net/webticket/webticket2.aspWCI=BuyTicket&WCI= </LinkPrefix> <Tickets> <Ticket> <Code>1</Code> <Name>Adult</Name> <Price>7.5</Price> <Tax>.5</Tax> </Ticket> <Ticket> <Code>2</Code> <Name>Child</Name> <Price>7</Price> <Tax>.43</Tax> </Ticket> </Tickets> <Films> <Film> <Title>+21 STRANGE TITLE</Title> <TitleShort>+21 STRANGE TITLE</TitleShort> <Length>120</Length> <Rating>NC17</Rating> <WebSite>http://www.rts-solutions.com</WebSite> <FilmCode>+24230</FilmCode> <MtFilmCode></MtFilmCode> <Shows> <Show> <DT>200811261235</DT> <Aud>1</Aud> <ID>+24230|200811261235|1</ID> <SaleLink>%2B21+STRANGE+TITLE,112620081235,1,5,NC17</SaleLink> <RE>225</RE> <Sold>22</Sold> <SO>0</SO> <LI>0</LI> <TIs> <TI> <C>1|1</C> </TI> <TI> <C>1|2</C> </TI> </TIs> </Show> </Shows> </Film> </Films> </ShowSchedule> </Response>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Command | None | Char | Yes | ShowTimeXml |
ShowAvalTickets | None | Integer | No | Not 1 = Do not return available tickets (default) 1 = Return available tickets |
ShowSales | None | Integer | No | Not 1 = Do not return sales (default) 1 = Return sales |
Node | Child Node | Type | Required | Description <ShowSchedule> |
---|---|---|---|---|
FileVersion | None | String | Yes | 1.1 |
RtsVersion | None | String | Yes | Version of the POS |
LinkPrefix | None | String | Yes | Used to construct a direct ticketing link for a performance |
Tickets | Ticket | Sub Node | Maybe | Lists available tickets |
Films | Film | Sub Node | Yes | Lists films scheduled |
Node | Child Node | Type | Required | Description <Ticket> |
---|---|---|---|---|
Code | None | String | Yes | Ticket code used in purchase transactions |
Name | None | String | Yes | Ticket name as it should be displayed on the Internet |
Price | None | Decimal | Yes | Total ticket price |
Tax | None | Decimal | Maybe | Any tax included in the ticket price |
Node | Child Node | Type | Required | Description <Film> |
---|---|---|---|---|
Title | None | String | Yes | Film title name |
Length | None | String | Yes | Film length (minutes) |
WebSite | None | String | Maybe | URL associated with the film in the POS |
FilmCode | None | String | Maybe | RTS Film Code setup in the POS |
Shows | Show | Sub Node | Yes | List of available shows for a film |
Node | Child Node | Type | Required | Description <Show> |
---|---|---|---|---|
DT | None | String | Yes | Showing time (yyyyMMddhhmm) |
Aud | None | String | Yes | Auditorium name |
ID | None | String | Yes | Performance ID, used in purchase transactions |
Link | None | String | Maybe | URL to purchase tickets page. The <LinkPrefix> is inserted before this tag when creating the complete URL |
RE | None | Integer | Maybe | Number of seats remaining in the auditorium |
Sold | None | Integer | Maybe | Number of seats sold in the auditorium |
SO | None | Integer | Maybe | 1 if show is sold out (internet) state |
SOGen | None | Integer | Maybe | 1 if show is sold out (general) state |
LI | None | Integer | Maybe | 1 if show is in low seats state |
TIs | TI | Sub Node | Maybe | List of tickets available for this show |
Selling - Fees and Adjustments
The Open Interface API currently allows for 2 different types of Fees, and an Adjustment.
The <TicketFee>
item is a single charge added to the transaction.
The <TransactionFee>
item is a single charge added to the transaction.
The <Adjust>
item is an adjustment used to modify the charge amount. If you sell 3 tickets with -$1 in this item, it will deduct $1 from your transaction amount. This amount can be positive or negative, depending on how you wish to adjust the transaction.
All three of these items are placed inside the <Fees>
tags inside the purchase packet, see page 13 for a sample packet. These items can be used in any purchase packet: tickets, items, gift cards, etc.
Gift Card / Loyalty Card Information
Gift Card / Loyalty Card - Sample Request Packet
<Request> <Version>1</Version> <Command>GiftInformation</Command> <Data> <Packet> <GiftCards> <GiftCard>1234123412341234</GiftCard> </GiftCards> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Show> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Command | None | String | Yes | GiftInformation |
Data | Packet | Sub Node | Yes | |
Packet | GiftCards | Sub Node | Yes | |
GiftCards | GiftCard | Sub Node | Yes | |
GiftCard | None | String | Yes | Gift card number |
Gift Card / Loyalty Card - Sample Response Packet – Non-Registered Card
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <GiftCard> <GiftNumber>1234123412341234</GiftNumber> <DebitRemain>1061.16</DebitRemain> <Registered>0</Registered> </GiftCard> </Packet> </Response>
Gift Card / Loyalty Card (With PIN) - Sample Request Packet
<Request> <Version>1</Version> <Command>GiftInformationWithPIN</Command> <Data> <Packet> <GiftCards> <GiftCard> <CardNumber>1234123412341234</CardNumber> <CardPIN>1234</CardPIN> </GiftCard> </GiftCards> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Command | None | String | Yes | GiftInformation |
Data | Packet | Sub Node | Yes | |
Packet | GiftCards | Sub Node | Yes | |
GiftCards | GiftCard | Sub Node | Yes | |
GiftCard | None | String | Yes | One <GiftCard> node for each card in request |
CardNumber | None | String | Yes | Gift card number |
CardPIN | None | String | Yes | Gift card PIN |
Gift Card / Loyalty Card (With PIN) - Sample Response Packet – Non-Registered Card
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <GiftCard> <GiftNumber>1234123412341234</GiftNumber> <DebitRemain>1061.16</DebitRemain> <Registered>0</Registered> </GiftCard> </Packet> </Response>
Gift Card / Loyalty Card - Sample Response Packet – Registered Card
!! NOTE: RTS mag cards are the only type that will return registration data !!
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <GiftCard> <GiftNumber>2012700000745808</GiftNumber> <DebitRemain>1061.16</DebitRemain> <Registered>1</Registered> <RegisteredInfo> <FirstName>JOHN</FirstName> <LastName>DOE</LastName> <Address1>4 DOE ROAD</Address1> <Address2/> <City>DOEVILLE</City> <State>DO</State> <Postal>11111</Postal> </RegisteredInfo> <CardCredits> <TicketCredit> <Expiration>None</Expiration> <StartDate>None</StartDate> <Amount>1</Amount> <TitleRestriction/> <TicketRestriction/> </TicketCredit> <TicketCredit> <Expiration>20130405000000</Expiration> <StartDate>20130405000000</StartDate> <Amount>1</Amount> <TitleRestriction>WORLD WAR Z</TitleRestriction> <TicketRestriction/> </TicketCredit> <ItemCredit> <Expiration>None</Expiration> <StartDate>20130426000000</StartDate> <Amount>1</Amount> <Item>SM POPCORN</Item> </ItemCredit> </CardCredits> </GiftCard> </Packet> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Code | None | Integer | Yes | -1 |
Packet | GiftCard | Sub Node | Yes | |
GiftCard | RegisteredInfo | Sub Node | Yes | |
GiftCard | CardCredits | Sub Node | Yes | |
GiftNumber | None | String | Yes | Gift card number |
DebitRemain | None | Decimal | Yes | Gift card remaining balance |
Registered | None | Integer | Yes | 0 = not registered, 1 = registered |
Node | Child Node | Type | Required | Description <RegisteredInfo> |
---|---|---|---|---|
FirstName | None | String | Yes | Customer first name |
LastName | None | String | Yes | Customer last name |
Address1 | None | String | Yes | Customer street address 1 |
Address2 | None | String | Yes | Customer street address 2 |
City | None | String | Yes | Customer city |
State | None | String | Yes | Customer state |
Postal | None | String | Yes | Customer postal code |
Node | Child Node | Type | Required | Description <CardCredits> |
---|---|---|---|---|
TicketCredit | None | Sub Node | No | |
ItemCredit | None | Sub Node | No |
Node | Child Node | Type | Required | Description <TicketCredit> |
---|---|---|---|---|
Expiration | None | String | Yes | None = No expiration date, or date of expiration (yyyyMMddhhmmss) |
StartDate | None | String | Yes | None = No start date, or date ticket credit becomes valid (yyyyMMddhhmmss) |
Amount | None | Integer | Yes | Amount of tickets available |
TitleRestriction | None | String | Yes | Empty node = no restriction, or title of movie this credit is good for |
TicketRestriction | None | String | Yes | Empty node = no restriction, or name of ticket this credit is good for |
Node | Child Node | Type | Required | Description <ItemCredit> |
---|---|---|---|---|
Expiration | None | String | Yes | None = No expiration date, or date of expiration (yyyyMMddhhmmss) |
StartDate | None | String | Yes | None = No start date, or date item credit becomes valid (yyyyMMddhhmmss) |
Amount | None | Integer | Yes | Amount of item available |
Item | None | String | Yes | Name of item credit is good for |
Gift Certificate Purchasing
New Gift Card Purchase - Sample Request Packet
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <PurchaseGifts> <PurchaseGift> <Amount>25</Amount> </PurchaseGift> </PurchaseGifts> <Payments> <Payment> <Type>CreditCard</Type> <Number>5499990123456781</Number> <Expiration>0513</Expiration> <AvsStreet>4 Main St</AvsStreet> <AvsPostal>30329</AvsPostal> <CID>123</CID> <NameOnCard>John Doe</NameOnCard> <ChargeAmount>7.5</ChargeAmount> </Payment> </Payments> </Packet> </Data> </Request>
Add Money to Existing Gift Card Purchase - Sample Request Packet
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <PurchaseGifts> <PurchaseGift> <GiftCard>1234-1234-1234-1234</GiftCard> <Amount>25</Amount> </PurchaseGift> </PurchaseGifts> <Payments> <Payment> <Type>CreditCard</Type> <Number>5499990123456781</Number> <Expiration>0513</Expiration> <AvsStreet>4 Main St</AvsStreet> <AvsPostal>30329</AvsPostal> <CID>123</CID> <NameOnCard>John Doe</NameOnCard> <ChargeAmount>7.5</ChargeAmount> </Payment> </Payments> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <PurchaseGifts> |
---|---|---|---|---|
PurchaseGifts | PurchaseGift | Sub Node | No | Contains one or more gift card purchases |
Amount | None | Decimal | Yes | Amount to add to the gift card |
GiftCard | None | String | No | If specified, amount will be added to the gift card. If not specified, a new number will be generated and the amount added to the new number |
Gift Card Purchase - Sample Response Packet
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <Response> <Code>0</Code> <ResponseText>OK</ResponseText> <TransactionID>1476206</TransactionID> <GiftPurchases> <GiftPurchase> <GiftNumber>1234-1234-1234-1234</GiftNumber> <Amount>1</Amount> </GiftPurchase> </GiftPurchases> </Response> </Packet> </Response>
Loyalty Card Information
Registering a Loyalty Card – Sample Request Packet
<Request> <Version>1</Version> <Command>GIFTINFORMATION</Command> <Data> <RegisterCards> <RegisterCard> <CardNumber>12345</CardNumber> <FirstName>Jon</FirstName> <LastName>Doe</LastName> <Address1>Address Line 1</Address1> <Address2>Address Line 2</Address2> <City>The City</City> <State>The State</State> <Postal>Postal Code</Postal> <RegisteredID>Reg ID</RegisteredID> <Email>Support@rts-solutions.com</Email> <DOB>19710323</DOB> <DoNotEmail>1</DoNotEmail> </RegisterCard> </RegisterCards> </Data> </Request>
You can register multiple cards by passing in additional <RegisterCard> nodes.
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | integer | Yes | 1 |
Command | None | String | Yes | GIFTINFORMATION |
Data | RegisterCards | Sub Node | Yes | |
RegisterCards | RegisterCard | Sub Node | Yes | |
CardNumber | None | String | Yes | Card number to register |
FirstName | None | String | Yes | Customer first name |
LastName | None | String | Yes | Customer last name |
Address1 | None | String | Yes | Customer street address 1 |
Address2 | None | String | Yes | Customer street address 2 |
City | None | String | Yes | Customer city |
State | None | String | Yes | Customer state |
Postal | None | String | Yes | Customer postal code |
RegisteredID | None | String | Yes | ???? |
None | String | Yes | Customer email address | |
DOB | None | String | Yes | Customer date of birth |
DoNotEmail | None | String | Yes | 0 = email, 1 = do not email |
Ticket Purchasing – Check Sold Out
Checking Performance Sold / Remaining / SoldOut Levels – Sample Request Packet
<Request> <Version>1</Version> <Command>CheckSoldOut</Command> <Data> <Packet> <PerformanceID>013732000045</PerformanceID> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Command | None | String | Yes | CheckSoldOut |
PerformanceID | None | String | Yes | The PerformanceID for the show to check |
Checking Performance Sold / Remaining / SoldOut Levels – Sample Response Packet
<Response> <Version>1</Version> <Sold>3</Sold> <IsReserved>0</IsReserved> <TotalSeats>500</TotalSeats> <SoldOut_General>2</SoldOut_General> <SoldOut_Internet>5</SoldOut_Internet> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Sold | None | Integer | No | Number of tickets sold to this performance |
IsReserved | None | Integer | No | 0 = General Admission, 1 = Reserved |
TotalSeats | None | Integer | No | Total number of seats for the show |
SoldOut_General | None | Integer | No | General sold out seats remaining level |
SoldOut_Internet | None | Integer | No | Internet sold out seats remaining level |
An example of the levels meaning is: 500 seats total, Internet Sold Out happens with 5 seats remaining. Internet Sold Out happens when
Sold hits 495.
If the number of tickets in a transaction is greater than the number seats remaining until Internet Sold Out happens, the transaction will fail.
Ticket Purchasing – Check Redeem
This call allows you to see the status of a ticket redemption. If the tickets have not yet been redeemed, the transaction could be refunded or reversed. If the tickets have already been redeemed by the customer, the transaction cannot be altered.
Checking Ticket Redemption Status – Sample Request Packet
<Request> <Version>1</Version> <Command>CheckRedeem</Command> <Data> <Packet> <PickupNumber>558722177437</PickupNumber> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Command | None | String | Yes | CheckRedeem |
PickupNumber | None | String | Yes | The PickupNumber from the sale transaction |
Checking Ticket Redemption Status – Sample Response Packet
<Response> <Version>1</Version> <Redeemed>1</Redeemed> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Redeemed | None | Boolean | Yes | 0 = Not Redeemed, 1 = Redeemed |
Ticket Purchasing – Verify Transaction
This call allows you to see if a transaction was successfully received and processed. If, for example, you passed in a buy request (that uses
the <ThirdPartyID> node) and never received a response from the point-of-sale, this call can be used to see if the transaction was received
and processed.
Found transactions will return the <PickupNumber> associated with the purchase.
Verify Transaction Status – Sample Request Packet
<Request> <Version>1</Version> <Command>VERIFYTRANSACTION</Command> <Data> <Packet> <ThirdPartyID>63a96a1c66d44b568b3115aeeadc6b12</ThirdPartyID> <TransactionDateTimeUTC>20161024153500</TransactionDateTimeUTC> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Command | None | String | Yes | VerifyTransaction |
ThirdPartyID | None | String | Yes | Your ID for the sale transaction (must have been passed in with the original sale) |
TransactionDateTimeUTC | None | String | Yes | The sale transaction date/time in UTC (format:yyyyMMddhhmmss). |
Verify Transaction Status – Sample Response Packet
<Response> <Version>1</Version> <TransactionFound>1</TransactionFound> <PickupNumber>728722814391</PickupNumber> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
TransactionFound | None | Boolean | Yes | 0 = Not Found, 1 = Found |
PickupNumber | None | String | No | If transaction found, this will be the pickup number for the customer redemption. |
Ticket Purchasing – Transaction Details
This call lets you retrieve the details of a previous transaction by the PickupNumber associated with the purchase.
Transaction Details – Sample Request Packet
<Request> <Version>1</Version> <Command>TRANSACTIONDETAILS</Command> <Data> <Packet> <PickupNumber>249728765499</PickupNumber> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Command | None | String | Yes | TransactionDetails |
PickupNumber | None | String | Yes | The PickupNumber from the sale transaction |
Transaction Details – Sample Response Packet
<Response> <Version>1</Version> <TransactionFound>1</TransactionFound> <Performances> <Performance> <Title>ALIEN: COVENANT</Title> <DateTime>052920182115</DateTime> <Auditorium>2</Auditorium> <Tickets> <Ticket> <Status>Redeemed - Online</Status> <PickupDateTime>052920181119</PickupDateTime> <Type>senior</Type> <IsReserved>1</IsReserved> <Section>Ruby</Section> <RowDesc>H</RowDesc> <ColDesc>15</ColDesc> </Ticket> </Tickets> </Performance> </Performances> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
TransactionFound | None | Boolean | Yes | 0 = Not Found, 1 = Found |
Performances | Performance | Sub Node | No | If transaction found, this will contain the Performance(s) in the transaction. |
Node | Child Node | Type | Required | Description <Performances> |
---|---|---|---|---|
Performance | None | Sub Node | No | If transaction found, there will be 1 or more Performance nodes,depending on the transaction contents |
Node | Child Node | Type | Required | Description <Performance> |
---|---|---|---|---|
Title | None | String | Yes | The title for this performance |
DateTime | None | String | Yes | Performance start time (MMddyyyyhhmm) |
Auditorium | None | String | Yes | The auditorium this performance is in |
Tickets | Ticket | Sub Node | Yes | The tickets for this performance |
Node | Child Node | Type | Required | Description <Tickets> |
---|---|---|---|---|
Ticket | None | Sub Node | No | If transaction found, there will be 1 or more Performance nodes, depending on the transaction contents |
Node | Child Node | Type | Required | Description <Ticket> |
---|---|---|---|---|
Status | None | String | Yes | The current status of the ticket pickup: Valid - Ticket is available for redemption Expired - Ticket has expired Refunded - Transaction was refunded via the API Reversed - Transaction was reversed via the API Redeemed - Online - Ticket was picked up via the API Redeemed - Printed - Ticket was picked up in theatre |
PickupDateTime | None | String | Yes | Will be present if the ticket is not "Valid" or "Expired" (MMddyyyyhhmm) |
PickupLocation | None | String | Yes | Will be present if the ticket was picked up in theatre |
PickupUser | None | String | Yes | Will be present if the ticket was picked up in theatre |
Type | None | String | Yes | The type of ticket purchased |
IsReserved | None | Boolean | Yes | 0 = Not reserved, 1 = Reserved |
Section | None | String | Yes | Will be present if the ticket is reserved, indicates the section name the reserved seat is in |
RowDesc | None | String | Yes | Will be present if the ticket is reserved, indicates the Row description |
ColDesc | None | String | Yes | Will be present if the ticket is reserved, indicates the Column (or Seat) description |
Ticket Purchasing – Redeem Tickets
This call lets you tell the POS system that you have redeemed tickets via a 3rd party app.
Redeem – Sample Request Packet
<Request> <Version>1</Version> <Command>RDEEM</Command> <Data> <Packet> <PickupNumber>249728765499</PickupNumber> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Command | None | String | Yes | TransactionDetails |
PickupNumber | None | String | Yes | The PickupNumber from the sale transaction |
Redeem – Sample Request Packet
<Response> <Version>1</Version> <HasRedemptions>1</HasRedemptions> <HasExpirations>0</HasExpirations> <HasPickedUp>0</HasPickedUp> <ValidTickets> <Ticket> <Type>senior</Type> <IsReserved>1</IsReserved> <Section>Ruby</Section> <RowDesc>H</RowDesc> <ColDesc>15</ColDesc> </Ticket> </ValidTickets> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
HasRedemptions | None | Boolean | Yes | 0 = False, 1 = True |
HasExpirations | None | Boolean | Yes | 0 = False, 1 = True |
HasPickedUp | None | Boolean | Yes | 0 = False, 1 = True |
ValidTickets | Ticket | Sub Node | No | If there are redemptions, this node will indicate the tickets being redeemed |
ExpiredTickets | Ticket | Sub Node | No | If there are expirations, this node will indicate the tickets that have expired |
PickedUpTickets | Ticket | Sub Node | No | If there are already redeemed tickets, this node will indicate the tickets already redeemed |
Node | Child Node | Type | Required | Description <Ticket> |
---|---|---|---|---|
Type | None | String | Yes | The type of ticket purchased |
IsReserved | None | Boolean | Yes | 0 = Not reserved, 1 = Reserved |
Section | None | String | Yes | Will be present if the ticket is reserved, indicates the section name the reserved seat is in |
RowDesc | None | String | Yes | Will be present if the ticket is reserved, indicates the Row description |
ColDesc | None | String | Yes | Will be present if the ticket is reserved, indicates the Column (or Seat) description |
Ticket Purchasing – Refunds
Only use this call if you are processing the credit card transactions outside of the point-of-sale system!
Allows for refunding of ticket purchases BEFORE the show has started, as long as the tickets from the sale have not already been redeemed.
Whole Transaction Refund – Sample Request Packet
<Request> <Version>1</Version> <Command>Refund</Command> <Data> <Packet> <Fees> <TicketFee>2</TicketFee> <TransactionFee>1</TransactionFee> <Adjust>3.50</Adjust> </Fees> <PickupNumber>220000528377</PickupNumber> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Command | None | String | Yes | Refund |
Fees | None | Sub Node | Yes | |
TicketFee | None | Decimal | Yes | The ticket fee from the sale transaction |
TransactionFee | None | Decimal | Yes | The transaction fee from the sale transaction |
Adjust | None | Decimal | Yes | The sale transaction total (positive amount). |
PickupNumber | None | String | Yes | The PickupNumber from the sale transaction |
Partial Transaction Refund - Sample Request Packet
<Request> <Version>1</Version> <Command>Refund</Command> <Data> <Packet> <Fees> <TicketFee>-3.4</TicketFee> <TransactionFee>0</TransactionFee> <Adjust>0</Adjust> </Fees> <PickupNumber>312729628817</PickupNumber> <PartialRefunds> <!-- option 1: whole performance from a ticket day --> <PartialRefund> <PerformanceID>017988000012</PerformanceID> </PartialRefund> <!-- option 2: reserved partial ticket for performance--> <PartialRefund> <PerformanceID>017988000012</PerformanceID> <Tickets> <Ticket> <Amount>1</Amount> <TypeCode>6</TypeCode> <Seat> <Section>21</Section> <Row>7</Row> <Col>10</Col> </Seat> </Ticket> </Tickets> </PartialRefund> <!-- option 3: general admission partial ticket for performance--> <PartialRefund> <PerformanceID>017988000012</PerformanceID> <Tickets> <Ticket> <Amount>1</Amount> <TypeCode>6</TypeCode> </Ticket> </Tickets> </PartialRefund> </PartialRefunds> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Command | None | String | Yes | Refund |
Fees | None | Sub Node | Yes | |
TicketFee | None | Decimal | Yes | The ticket fee from the sale transaction |
TransactionFee | None | Decimal | Yes | The transaction fee from the sale transaction |
Adjust | None | Decimal | Yes | The sale transaction total (positive amount). |
PickupNumber | None | String | Yes | The PickupNumber from the sale transaction, from any <TicketDay> in the purchase response |
PartialRefunds | PartialRefund | Sub Node | Yes |
Node | Child Node | Type | Required | Description <PartialRefunds> |
---|---|---|---|---|
PartialRefund | None | Sub Node | Yes | Include this node for each partial refund action you want to take |
Node | Child Node | Type | Required | Description <PartialRefund> |
---|---|---|---|---|
PerformanceID | None | String | Yes | The performance ID for the performance you want to refund against |
Tickets | Ticket | Sub Node | No | If not present, will refund all tickets for this performance |
Node | Child Node | Type | Required | Description <Ticket> |
---|---|---|---|---|
Amount | None | Integer | Yes | General Admission: The number of tickets to refund. Reserved Seating: Will be 1 and <Seat> is required |
TypeCode | None | String | No | The ID of the ticket type being refunded |
Seat | None | Sub Node | No | If performance is reserved seating this is where you specify the seat to be refunded |
Node | Child Node | Type | Required | Description <Seat> |
---|---|---|---|---|
Section | None | String | Yes | The section ID for the seat being refunded |
Row | None | Integer | Yes | The row index for the seat being refunded |
Col | None | Integer | Yes | The col index for the seat being refunded |
Refund – Sample Response Packet
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <Response> <ResponseText>OK</ResponseText> <TransactionID>14722824</TransactionID> </Response> </Packet> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Code | None | Char | Yes | -1 |
TransactionFound | None | Boolean | Yes | 0 = Not Found, 1 = Found |
PickupNumber | None | String | No | If transaction found, this will be the pickup number for the customer redemption. |
Ticket Purchasing – Reverse Transaction
Note: Only use this call if you are processing the credit card transactions outside of the point-of-sale system!
Allows for reversal of a sale transaction by ThirdPartyID, in the event that you never received a response with a PickupNumber. It will be allowed as long as the tickets from the sale have not already been redeemed, and the show is still scheduled. Should be used in conjunction with “VerifyTransaction” to establish the state of the sale.
ReverseTransaction – Sample Request Packet
<Request> <Version>1</Version> <Command>ReverseTransaction</Command> <Data> <Packet> <Fees> <TicketFee>2</TicketFee> <TransactionFee>1</TransactionFee> <Adjust>3.50</Adjust> </Fees> <ThirdPartyID>220000528377</ThirdPartyID> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
Command | None | String | Yes | Refund |
Fees | None | Sub Node | Yes | |
TicketFee | None | Decimal | Yes | The ticket fee from the sale transaction |
TransactionFee | None | Decimal | Yes | The transaction fee from the sale transaction |
Adjust | None | Decimal | Yes | The sale transaction total (positive amount). |
ThirdPartyID | None | String | Yes | Your ID for the sale transaction (must have been passed in with the original sale) |
ReverseTransaction – Sample Response Packet
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <Response> <ResponseText>OK</ResponseText> <TransactionID>14722826</TransactionID> </Response> </Packet> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
TransactionFound | None | Boolean | Yes | 0 = Not Found, 1 = Found |
PickupNumber | None | String | No | If transaction found, this will be the pickup number for the customer redemption. |
WorldPay E2E - Credit Card Payment Overview
The introduction of End-to-End Encryption to the credit card processing system has changed the way credit cards are processed by the software. Instead of the software processing the transaction, it is processed directly at the processor via a HostedCheckout system. This means the customer needs to be redirected to a secure credit card entry page that is provided by the credit card processing company.
To summarize the process:
1. A request is sent into the software to create a payment at the processor. This request contains the charge amount to authorize and 2 URLs: a ProcessCompleteUrl, and a ReturnUrl. Be sure to URL Encode your URLs.
2. The software will return a create payment response which indicates if the create was successful, a TransactionId, a RedirectURL to send the customer to for credit card information entry, and the PostData to send into the processor page you redirect the customer to. If the create was unsuccessful there will be an ErrorMsg present to indicate the issue.
3. The customer will then need to be redirected to the RedirectURL in the create payment response, posting in the PostData in the create payment response. If the customer completes the process the processor will redirect back to the ProcessCompleteURL from step 1, which will contain the processor response in the PostData. If the customer cancels the process, the processor will redirect back to the ReturnURL.
4. If the payment was successful, a Buy request is then sent back to the software with the TransactionId, ProcessCompletePostData included in the Payment node. The software will then validate the payment and return either a failure or a success.
It is important to note that you could repeat steps 1 – 3 for multiple credit cards if needed, then simply include multiple Payment nodes in step 4. Be sure to authorize each payment for only the amount needed, not the total transaction amount.
Credit Card Payments (WorldPay E2E)
Create a HostedCheckout Payment – Sample Request
<Request> <Version>1</Version> <Command>CreatePayment</Command> <Data> <Packet> <ChargeAmount>0.62</ChargeAmount> <ProcessCompleteUrl> http%3A%2F%2Flocal.formovietickets.com%2FT.asp%3FWCI%3DBT%26Page%3DConfirm%26Mode%3DCCPAYRESPONSE </ProcessCompleteUrl> <ReturnUrl> http%3A%2F%2Flocal.formovietickets.com%2FT.asp%3FWCI%3DBT%26Page%3DConfirm%26Mode%3DPayments </ReturnUrl> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
ChargeAmount | None | Decimal | Yes | The amount this payment will authorize for. |
ProcessCompleteUrl | None | String | Yes | The URL the customer will be redirected back to after they complete the credit card entry process |
ReturnUrl | None | String | Yes | The URL the customer will be redirected back to if they cancel the credit card entry process |
Create a HostedCheckout Payment – Sample Response
<Response> <Version>1</Version> <Packet> <CreatePayment> <Worked>1</Worked> <TransactionId>3abac539-1731-421d-9291-989dffb65688</TransactionId> <RedirectUrl>https%3A%2F%2Fhc.mercurydev.net%2FCheckout.aspx</RedirectUrl> <PostData>587c7d7d-d990-4f29-8ff6-d121ddd98d6f</PostData> </CreatePayment> </Packet> </Response>
Ticket Purchase (WorldPay E2E) – Sample Request – PerformanceID
Note: See Ticket Purchasing – General Admission and Ticket Purchasing – Reserved Seating for additional information on the Buy packet nodes
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <PurchaseTitles> <PurchaseTitle> <PerformanceID>000166000023</PerformanceID> <Tickets> <Ticket> <Amount>2</Amount> <TypeCode>5</TypeCode> </Ticket> </Tickets> </PurchaseTitle> </PurchaseTitles> <Fees> <TicketFee>0</TicketFee> <TransactionFee>0</TransactionFee> <Adjust>0</Adjust> </Fees> <Payments> <Payment> <Type>CreditCard</Type> <TransactionId>5f627c67-8f5e-4f41-b26b-e8d2c8080167</TransactionId> <ProcessCompletePostData> PaymentID=cf679a14-dd17-4c0a-b151-be0fdcb27dfd&ReturnCode=0&ReturnMessage=Your+transaction+has+been+approved. </ProcessCompletePostData> <ChargeAmount>0.62</ChargeAmount> </Payment> </Payments> <CustomerInfo> <EmailAddress>testemail@yahoo.com</EmailAddress> </CustomerInfo> </Packet> </Data> </Request>
Ticket Purchase (WorldPay E2E) – Sample Response
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <Response> <Code>0</Code> <ResponseText>OK</ResponseText> <TransactionID>1524289</TransactionID> <Pickups> <Pickup> <TicketDay>20101213</TicketDay> <PickupNumber/> <BarCodes> <BarCode> <Type>Transaction</Type> <CodeType>UPC</CodeType> <BarCodeData>525524289675</BarCodeData> </BarCode> </BarCodes> </Pickup> </Pickups> </Response> </Packet> </Response>
Heartland Secure - Credit Card Payment Overview
Heartland Secure utilizes JavaScript to replace <div> elements in your payment form with secure hosted iframe fields, to ensure that no card data passes through your server (or the RTS server).
The customer enters their card data into these iframe fields and submits to Heartland. They will issue a single-use token and some safe card information (masked card number, card type, card last 4) returning it as JSON to the script. This data is then posted to your server via the form action on the page.
When attempting the sale, the single-use token and the safe card data is submitted in the buy request to RTS in the <Payment> node. We will validate the credit account data and either proceed with the sale, or return an error indicating the issue with the card.
A sample payment page can be found here:
http://www.readyticket.net/download/heartland_hc_example.html
Be sure to read the comments in the sample payment page for additional information!
The script utilizes a Public Key, which will change for each RTS location. You will need to contact RTS to get this key when needed, you can email the request to: support@rts-solutions.com. Be sure to include the location name and address in the request.
Below is sample of the post data from the form:
billingStreet=6860+Dallas+Pkwy&billingZip=75024&paymentReference=supt_htOWF0W14NdVKt6DAHi1HbM3&maskedCard=464069***4998&cardLast4=4998&cardType=visa
Below is a sample <Payment> node for a Heartland Secure buy request:
<Payment> <Type>CreditCard</Type> <SingleUseToken>supt_ycyDB65WX8B2TCWvaSOGIz4j</SingleUseToken> <MaskedCardNumber>464069***4998</MaskedCardNumber> <CardType>visa</CardType> <CardLast4>4998</CardLast4> <ChargeAmount>91.01</ChargeAmount> <BillingStreet>6860 Dallas Pkwy</BillingStreet> <BillingZip>75024</BillingZip> </Payment>
The <SingleUseToken>, <MaskedCardNumber>, <CardType>, <CardLast4>, <BillingStreet>, and <BillingZip> values come from the data returned by the Heartland JavaScript.
Note: In the case that both Address and Zip do not match the account, you will receive a DO NOT HONOR message from Heartland's Gateway
Ticket Purchasing (3rd Party Credit Card Processing / TSYS - E2E)
1. Integrator sends in a CreatePayment request, provides their complete url and cancel URL:
<Request> <Version>1</Version> <Command>CreatePayment</Command> <Data> <Packet> <ChargeAmount>5</ChargeAmount> <CustomerEmail></CustomerEmail> <CustomerName></CustomerName> <StreetAddress></StreetAddress> <ZipCode></ZipCode> <ProcessCompleteUrl>http%3A%2F%2F809261.formovietickets.com%3A2265%2FTSYS.asp%3FreqType%3DCOMPLETE</ProcessCompleteUrl> <ReturnUrl>http%3A%2F%2F890261.formovietickets.com%3A2265%2FTSYS.asp%3FreqType%3DCANCEL</ReturnUrl> </Packet> </Data> </Request>
2. RTS creates a transactionID, stores the request data.
3. RTS returns transactionID, redirectUrl
<Response> <Version>1</Version> <Packet> <CreatePayment> <Worked>1</Worked> <TransactionId>e9fb3f66-4dc8-4745-b354-b74900e32010</TransactionId> <RedirectUrl>https%3a%2f%2f809261.formovietickets.com%3a2265%2fTSYS.ASP%3freqType%3dREDIRECT%26transactionId%3de9fb3f66-4dc8-4745-b354-b74900e32010</RedirectUrl> </CreatePayment> </Packet> </Response>
4. Integrator redirects customer to the redirectUrl, which provides the stand-alone payment page
a. Continue - RTS attempts payment, posting return data to the integrators ProcessCompleteURL b. Cancel - RTS redirects the customer to the integrators ReturnURL
5. Integrator receives response based on status of credit card processing:
a. if good sale, send back the masked card number, cardlast4, cardtype, transactionid, and paymentid
POST Data: maskedCardNumber=<appropriate_masked_card_num>&cardLastFour=<appropriate_card_last_four>&cardType=<appropriate_card_type>&transactionId=<appropriate_transactionid>&paymentId=<appropriate_paymentid>
b. if bad cardverification or sale, send back the appropriate response
6. If integrator wants to continue with transaction, posts in the appropriate buy request, with the <payment> node as follows:
<Payment> <Type>CreditCard</Type> <TransactionId></TransactionId> <PaymentId></PaymentId> <ChargeAmount></ChargeAmount> </Payment>
7. RTS attempts to complete the transaction, and returns the appropriate response
Ticket Purchasing (3rd Party Credit Card Processing / TSYS - Non E2E)
This method of ticketing purchasing is to be used when the RTS software is not handling anything in the credit card processing chain.
Ticket Purchase (3rd Party) – Sample Request – PerformanceID
Note: The key differences between a 3rd party buy and a normal buy is the use of the <Adjust> node inside <Fees> to offset the amount charged by the 3rd party, and the <ChargeAmount> being zero.
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <PurchaseTitles> <PurchaseTitle> <PerformanceID>000158000012</PerformanceID> <Tickets> <Ticket> <Amount>1</Amount> <TypeCode>5</TypeCode> </Ticket> </Tickets> </PurchaseTitle> </PurchaseTitles> <Fees> <TicketFee>1</TicketFee> <TransactionFee>0</TransactionFee> <Adjust>-1.31</Adjust> </Fees> <Payments> <Payment> <ChargeAmount>0</ChargeAmount> </Payment> </Payments> <ThirdPartyID>3677745fb2cb4e20bc6f289fd65753aa</ThirdPartyID> <CustomerInfo> <EmailAddress>testemail@yahoo.com</EmailAddress> </CustomerInfo> </Packet> </Data> </Request>
Ticket Purchasing – General Admission
The performance you wish to purchase can be specified in 3 different ways:
- Title, ShowTime, and AuditoriumID
- PerformanceID
- MtFilmCode, MTPerformanceID, and ShowTime
Ticket Purchase - Sample Request – Title, ShowTime, and AuditoriumID
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <PurchaseTitles> <PurchaseTitle> <Title>The Title</Title> <ShowTime>200812051235</ShowTime> <Auditorium>1</Auditorium> <Tickets> <Ticket> <Amount>1</Amount> <TypeCode>1|1</TypeCode> </Ticket> </Tickets> </PurchaseTitle> </PurchaseTitles> <Fees> <TicketFee>1</TicketFee> <TransactionFee>1</TransactionFee> <Adjust>0</Adjust> </Fees> <Payments> <Payment> <Type>CreditCard</Type> <Number>5499990123456781</Number> <Expiration>0513</Expiration> <AvsStreet>4 Main St</AvsStreet> <AvsPostal>30329</AvsPostal> <CID>123</CID> <NameOnCard>John Doe</NameOnCard> <ChargeAmount>9.5</ChargeAmount> </Payment> </Payments> <Loyalty> <Cards> <Type>Earn</Type> <CardNumber>12345</CardNumber> </Cards> </Loyalty> <ThirdPartyID>3677745fb2cb4e20bc6f289fd65753aa</ThirdPartyID> <CustomerInfo> <EmailAddress>testemail@yahoo.com</EmailAddress> </CustomerInfo> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <PurchaseTitle> |
---|---|---|---|---|
Title | None | String | Yes | Performance Title |
ShowTime | None | String | Yes | Performance start time (yyyyMMddhhmm) |
Auditorium | None | String | Yes | Performance auditorium number |
Tickets | Ticket | Sub Node | Yes | One or more ticket types to purchase |
Ticket Purchase - Sample Request – PerformanceID
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <PurchaseTitles> <PurchaseTitle> <PerformanceID>+3934kd|392372374|23784237</PerformanceID> <Tickets> <Ticket> <Amount>1</Amount> <TypeCode>1|1</TypeCode> </Ticket> </Tickets> </PurchaseTitle> </PurchaseTitles> <Fees> <TicketFee>1</TicketFee> <TransactionFee>1</TransactionFee> <Adjust>0</Adjust> </Fees> <Payments> <Payment> <Type>CreditCard</Type> <Number>5499990123456781</Number> <Expiration>0513</Expiration> <AvsStreet>4 Main St</AvsStreet> <AvsPostal>30329</AvsPostal> <CID>123</CID> <NameOnCard>John Doe</NameOnCard> <ChargeAmount>9.5</ChargeAmount> </Payment> </Payments> <Loyalty> <Cards> <Type>Earn</Type> <CardNumber>12345</CardNumber> </Cards> </Loyalty> <ThirdPartyID>3677745fb2cb4e20bc6f289fd65753aa</ThirdPartyID> <CustomerInfo> <EmailAddress>testemail@yahoo.com</EmailAddress> </CustomerInfo> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <PurchaseTitle> |
---|---|---|---|---|
PerformanceID | None | String | Yes | The PerformanceID |
Tickets | Ticket | Sub Node | Yes | One or more ticket types to purchase |
Ticket Purchase - Sample Request – MtFilmCode, MtPerformanceID, and ShowTime
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <PurchaseTitles> <PurchaseTitle> <PerformanceID>93j2kd902j42d</PerformanceID> <ShowTime>200812051235</ShowTime> <MtFilmCode>TH12345</MtFilmCode> <Tickets> <Ticket> <Amount>1</Amount> <TypeCode>1|1</TypeCode> </Ticket> </Tickets> </PurchaseTitle> </PurchaseTitles> <Fees> <TicketFee>1</TicketFee> <TransactionFee>1</TransactionFee> <Adjust>0</Adjust> </Fees> <Payments> <Payment> <Type>CreditCard</Type> <Number>5499990123456781</Number> <Expiration>0513</Expiration> <AvsStreet>4 Main St</AvsStreet> <AvsPostal>30329</AvsPostal> <CID>123</CID> <NameOnCard>John Doe</NameOnCard> <ChargeAmount>9.5</ChargeAmount> </Payment> </Payments> <Loyalty> <Cards> <Type>Earn</Type> <CardNumber>12345</CardNumber> </Cards> </Loyalty> <CustomerInfo> <EmailAddress>testemail@yahoo.com</EmailAddress> </CustomerInfo> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <PurchaseTitle> |
---|---|---|---|---|
MtFilmCode | None | String | Yes | Movietickets.com film code |
MtPerformanceID | None | String | Yes | Movietickets.com PerformanceID |
ShowTime | None | String | Yes | Performance start time (yyyyMMddhhmm) |
Tickets | Ticket | Sub Node | Yes | One or more ticket types to purchase |
To sell multiple tickets in the same transaction, duplicate the <Ticket> node for each type and specify the amount of each ticket.
For example, to sell 3 tickets of 2 different types, your <Tickets> node would look like:
<Tickets> <Ticket> <Amount>2</Amount> <TypeCode>1|1</TypeCode> </Ticket> <Ticket> <Amount>1</Amount> <TypeCode>1|2</TypeCode> </Ticket> </Tickets>
To accept multiple payment types in the same transaction, duplicate the <Payment> node for each type of payment, and specify the appropriate information.
For example, to take credit card and gift card, your <Payment> node would look like:
<Payments> <Payment> <Type>CreditCard</Type> <Number>5499990123456781</Number> <Expiration>0513</Expiration> <AvsStreet>4 Main St</AvsStreet> <AvsPostal>30329</AvsPostal> <CID>123</CID> <NameOnCard>John Doe</NameOnCard> <ChargeAmount>9.5</ChargeAmount> </Payment> <Payment> <Payment> <Type>Gift</Type> <ChargeAmount>1.00</ChargeAmount> <GiftNumber>1234123412341234</GiftNumber> <GiftCardPIN>12345</GiftCardPIN> </Payment> </Payments>
Node | Child Node | Type | Required | Description <Ticket> |
---|---|---|---|---|
Amount | None | Integer | Yes | Number of this type of ticket to purchase |
TypeCode | None | String | Yes | Ticket type code (from schedule XML) |
Node | Child Node | Type | Required | Description <Fees> |
---|---|---|---|---|
TicketFee | None | Decimal | No | Amount to charge for ticket fees in the transaction. Recorded in the POS as the configured 'Ticket Fee' item. |
TransactionFee | None | Decimal | No | Amount to charge for the transaction fees in the transaction. Recorded in the POS as the configured 'Transaction Fee' item. |
Adjust | None | Decimal | No | Allows for positive or negative adjustment to the charge amount. Recorded in the POS as the configured 'Adjust' item. |
Node | Child Node | Type | Required | Description <Payments> |
---|---|---|---|---|
Payments | Payment | Sub Node | Yes | Contains one or more payment types for a transaction |
Node | Child Node | Type | Required | Description <Payment> |
---|---|---|---|---|
Type | None | String | Yes | Specifies the payment type: CreditCard or Gift |
Number | None | String | Yes | Credit card number |
GiftNumber | None | String | Yes | Gift card number |
GiftCardPIN | None | String | Maybe | Certain gift card processors in RTS can be marked as requiring a PIN during purchase. If this is enabled, this node is required. |
Expiration | None | String | Yes | Credit card expiration date (MMyy) |
AvsStreet | None | String | No | Credit card billing street address |
AvsPostal | None | String | No | Credit card billing postal code |
CID | None | String | No | Credit card CID (CVV, Security Code) number |
NameOnCard | None | String | No | Credit card customer name |
ChargeAmount | None | Decimal | Yes | Amount to charge on the credit or gift card |
Node | Child Node | Type | Required | Description <ThirdPartyID> |
---|---|---|---|---|
ThirdPartyID | None | Sub Node | No | Allows you to specify a transaction ID to the purchase, this can be used with “VerifyTransaction” to check for completion of the sale if normal response is not received. |
Node | Child Node | Type | Required | Description <Loyalty> |
---|---|---|---|---|
Loyalty | Cards | Sub Node | No | |
Type | None | String | No | Earn |
CardNumber | None | String | No | Card number to use for loyalty earn. Multiple cards can be passed in via additional <CardNumber> tags |
Node | Child Node | Type | Required | Description <CustomerInfo> |
---|---|---|---|---|
EmailAddress | None | String | No | Customer email address. Can be used to look-up transactions in the POS. NOTE: There is an option on the API selling account to have RTS send a confirmation email on a successful purchase. This email is NOT customizable. |
Ticket Purchase - Sample Response
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <Response> <Code>0</Code> <ResponseText>OK</ResponseText> <TransactionID>1524289</TransactionID> <Pickups> <Pickup> <TicketDay>20101213</TicketDay> <PickupNumber/> <BarCodes> <BarCode> <Type>Transaction</Type> <CodeType>UPC</CodeType> <BarCodeData>525524289675</BarCodeData> </BarCode> </BarCodes> </Pickup> </Pickups> </Response> </Packet> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Integer | Yes | 1 |
Code | None | Integer | Yes | -1 |
Packet | Response | Sub Node | Yes | |
ResponseText | None | String | Yes | OK |
TransactionID | None | String | Yes | Transaction receipt number |
Pickups | Pickup | Sub Node | Yes | |
TicketDay | None | String | Yes | Date of performance (yyyyMMdd) |
PickupNumber | None | String | Yes | Not currently used |
BarCodes | BarCode | Sub Node | Yes | |
Type | None | String | Yes | Transaction |
CodeType | None | String | Yes | The bar code type: UPC |
BarCodeData | None | String | Yes | The confirmation number to be encoded. BAR CODE IMAGE IS NOT PROVIDED BY THE POS. |
Seating Charts
All RTS layouts are built around the grid size provided in the <GridRef> node. Using these values in conjunction with your own known grid values, you can determine the ratio needed to convert each seat xpos, ypos, width, and height, to your own values, for example:
Your grid width divided by our grid width = your X ratio
Your grid height divided by our grid height = your Y ratio
Our Xpos multiplied by X ratio = your Xpos
Our Ypos multiplied by Y ratio = your Ypos
Our Width multiplied by X ratio = your width
Our Height multiplied by Y ration = your height
Get Seat Layouts – Sample Request
<Request> <Version>1</Version> <Command>GetSeatLayouts</Command> </Request>
This call allows you to pull the reserved seating layouts for all of the auditoriums in the point-of-sale system. It also includes a list of seat types configured in the system, so that any custom seat types are available to you.
Get Seat Layouts – Sample Response
<Response> <Code>-1</Code> <ResponseText>OK</ResponseText> <GridRef> <Width>10000</Width> <Height>10000</Height> </GridRef> <SeatTypes> <Type> <ID>0</ID> <CustomerName>Normal</CustomerName> </Type> ...... <Type> <ID>17</ID> <CustomerName>CompanionLeft</CustomerName> </Type> </SeatTypes> <Layouts> <Layout> <LayoutName>Reserved Auditorium 13</LayoutName> <SectionName>Section 1</SectionName> <SectionID>8</SectionID> <Seats> <Seat> <HideOnInternet>0</HideOnInternet> <HideRowDesc>0</HideRowDesc> <HideSeparator>0</HideSeparator> <RowIndex>1</RowIndex> <ColIndex>1</ColIndex> <RowDesc>A</RowDesc> <ColDesc>1</ColDesc> <TypeID>0</TypeID> <GroupID>1</GroupID> <GroupDesc>1</GroupDesc> <GroupPos>1</GroupPos> <XPos>2539</XPos> <YPos>2659</YPos> <Width>456</Width> <Height>740</Height> <Angle>0</Angle> </Seat> ...... <Seat> <HideOnInternet>0</HideOnInternet> <HideRowDesc>0</HideRowDesc> <HideSeparator>0</HideSeparator> <RowIndex>3</RowIndex> <ColIndex>13</ColIndex> <RowDesc>C</RowDesc> <ColDesc>13</ColDesc> <TypeID>0</TypeID> <GroupID>3</GroupID> <GroupDesc>13</GroupDesc> <GroupPos>13</GroupPos> <XPos>8193</XPos> <YPos>5305</YPos> <Width>442</Width> <Height>740</Height> <Angle>0</Angle> </Seat> </Seats> </Layout> </Layouts> </Response>
Node | Child Node | Type | Required | Description <GridRef> |
---|---|---|---|---|
Width | None | Integer | Yes | The relative grid width |
Height | None | Integer | Yes | The relative grid height |
Node | Child Node | Type | Required | Description <SeatTypes> |
---|---|---|---|---|
Type | None | Sub Node | Yes | |
ID | None | Integer | Yes | The ID of the SeatType |
CustomerName | None | String | Yes | The customer name for the SeatType |
Node | Child Node | Type | Required | Description <Layouts> |
---|---|---|---|---|
Layout | None | Sub Node | Yes | There will be a <Layout> node for each system layout |
LayoutName | None | String | Yes | The name of the layout |
SectionName | None | String | Yes | The name of the section |
SectionID | None | Integer | Yes | The ID of the section |
Seats | Seat | Sub Node | Yes |
Node | Child Node | Type | Required | Description <Seat> |
---|---|---|---|---|
HideOnInternet | None | Boolean | Yes | 0 = Do not hide, 1 = Needs to be hidden |
HideRowDesc | None | Boolean | Yes | 0 = Do not hide row desc., 1 = hide row desc. |
HideSeparator | None | Boolean | Yes | 0 = Do not hide row/col separator, 1 = hide separator |
RowIndex | None | Integer | Yes | The row index of the seat |
ColIndex | None | Integer | Yes | The column index of the seat |
RowDesc | None | String | Yes | The row descriptor of the seat |
ColDesc | None | String | Yes | The column descriptor of the seat |
TypeID | None | Integer | Yes | The SeatType ID for the seat |
GroupID | None | Integer | Yes | The group ID for the seat |
GroupDesc | None | String | Yes | The group description for the seat |
GroupPos | None | Integer | Yes | The seat position in the group |
Xpos | None | Integer | Yes | The relative X position of the seat in the layout |
Ypos | None | Integer | Yes | The relative Y position of the seat in the layout |
Width | None | Integer | Yes | The relative width position of the seat in the layout |
Height | None | Integer | Yes | The relative height position of the seat in the layout |
Angle | None | Integer | Yes | The angle of the seat in the layout |
!! NOTE: This call has been slightly modified to support locations that use custom seat pricing, these are locations that have different prices on specific seats in an auditorium. Due to this pricing not being known until the seat selection has been made, this call will return the pricing group for each seat, and a list of pricing groups and tickets. In order to access this data, this call should be made using the SCHEDULE credentials, not the SELLING credentials. Making this call with the selling credentials will not return any pricing data. !!
Get Seat Plan For Performance – Sample Request
<Request> <Version>1</Version> <Command>GETSEATPLANFORPERF</Command> <Data> <Packet> <PerformanceID>008180000166</PerformanceID> </Packet> </Data> </Request>
This call allows you to pull the reserved seating layouts for a specific performance, including the status of each seat. It also returns a list of seat types used in the layout.
Get Seat Plan For Performance – Sample Response (made with SCHEDULE credentials)
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <Response> <Code>-1</Code> <ResponseText>OK</ResponseText> <GridRef> <Width>10000</Width> <Height>10000</Height> </GridRef> <Layout> <Pricing> <Tickets> <Ticket> <Code>7</Code> <Name>Student</Name> <Price>0.71</Price> <Tax>0.01</Tax> <Points>8</Points> </Ticket> ... <Ticket> <Code>3</Code> <Name>Senior</Name> <Price>0.31</Price> <Tax>0.01</Tax> <Points>7</Points> </Ticket> </Tickets> <PriceGroups> <PriceGroup> <Code>1</Code> <Tickets> <Ticket> <Code>7</Code> </Ticket> ... <Ticket> <Code>3</Code> </Ticket> </Tickets> </PriceGroup> </PriceGroups> </Pricing> <SeatTypes> <SeatType> <ID>10</ID> <CustomerName>Recliner</CustomerName> </SeatType> ... <SeatType> <ID>1</ID> <CustomerName>Wheelchair</CustomerName> </SeatType> </SeatTypes> <Seats> <Seat> <ColDes>6</ColDes> <ColNum>7</ColNum> <RowDes>A</RowDes> <RowNum>0</RowNum> <Section>4</Section> <Type>9</Type> <GroupID>4</GroupID> <Status>0</Status> <XPos>3172</XPos> <YPos>2833</YPos> <Width>473</Width> <Height>706</Height> <Angle>0</Angle> <PriceGroupCode>1</PriceGroupCode> </Seat> ... <Seat> <ColDes>20</ColDes> <ColNum>20</ColNum> <RowDes>H</RowDes> <RowNum>7</RowNum> <Section>4</Section> <Type>10</Type> <GroupID>59</GroupID> <Status>0</Status> <XPos>9061</XPos> <YPos>8475</YPos> <Width>453</Width> <Height>598</Height> <Angle>0</Angle> <PriceGroupCode>1</PriceGroupCode> </Seat> </Seats> </Layout> </Response> </Packet> </Response>
Get Seat Plan For Performance – Sample Response (made with SELLING credentials)
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <Response> <Code>-1</Code> <ResponseText>OK</ResponseText> <GridRef> <Width>10000</Width> <Height>10000</Height> </GridRef> <Layout> <SeatTypes> <SeatType> <ID>0</ID> <CustomerName>Normal</CustomerName> </SeatType> </SeatTypes> <Seats> <Seat> <ColDes>1</ColDes> <ColNum>0</ColNum> <RowDes>E</RowDes> <RowNum>2</RowNum> <Section>21</Section> <Type>0</Type> <GroupID>2</GroupID> <Status>0</Status> <XPos>1627</XPos> <YPos>3057</YPos> <Width>448</Width> <Height>780</Height> <Angle>0</Angle> </Seat> ...... <Seat> <ColDes>1</ColDes> <ColNum>0</ColNum> <RowDes>D</RowDes> <RowNum>4</RowNum> <Section>21</Section> <Type>0</Type> <GroupID>3</GroupID> <Status>0</Status> <XPos>1627</XPos> <YPos>4013</YPos> <Width>448</Width> <Height>780</Height> <Angle>0</Angle> </Seat> </Seats> </Layout> </Response> </Packet> </Response>
Node | Child Node | Type | Required | Description <GridRef> |
---|---|---|---|---|
Width | None | Integer | Yes | The relative grid width |
Height | None | Integer | Yes | The relative grid height |
Node | Child Node | Type | Required | Description <Layouts> |
---|---|---|---|---|
Layout | None | Sub Node | Yes | |
Pricing | Tickets, PriceGroups | Sub Node | Maybe | If request was made using SCHEDULE credentials: The <Pricing> node will contain a <Tickets> node and a <PriceGroups> node. |
Tickets | Ticket | Sub Node | Maybe | If request was made using SCHEDULE credentials: The <Tickets> node will contain a number of <Ticket> nodes that are the tickets in use in this layout. |
PriceGroups | PriceGroup | Sub Node | Maybe | If request was made using SCHEDULE credentials: There will be a <PriceGroup> node for each unique price group in the layout |
SeatTypes | SeatType | Sub Node | Yes | There will be a <SeatType> node for each type used in this layout |
Seats | Seat | Sub Node | Yes |
Node | Child Node | Type | Required | Description <Ticket> |
---|---|---|---|---|
Code | None | String | Yes | Ticket code used in purchase transactions |
Name | None | String | Yes | Ticket name as it should be displayed on the Internet |
Price | None | Decimal | Yes | Total ticket price |
Tax | None | Decimal | Maybe | Any tax included in the ticket price |
Points | None | Integer | Maybe | Any points that are earned when buying this ticket type |
Node | Child Node | Type | Required | Description <PriceGroup> |
---|---|---|---|---|
Code | None | Integer | Yes | The unique ID for this PriceGroup node, this ID is what links the <Seat> to the <PriceGroup> |
Tickets | Ticket | Sub Node | Yes | There will be a <Ticket> node for each ticket type that is part of this PriceGroup |
Ticket | Code | Sub Node | Yes | Each <Ticket>will contain a node that links back to the <Tickets><Ticket> nodes under the <Pricing> node.
|
Node | Child Node | Type | Required | Description <SeatType> |
---|---|---|---|---|
Type | None | Sub Node | Yes | |
ID | None | Integer | Yes | The ID of the SeatType |
CustomerName | None | String | Yes | The customer name for the SeatType |
Node | Child Node | Type | Required | Description <SeatType> |
---|---|---|---|---|
RowNum | None | Integer | Yes | The row index of the seat |
ColNum | None | Integer | Yes | The column index of the seat |
RowDes | None | String | Yes | The row descriptor of the seat |
ColDes | None | String | Yes | The column descriptor of the seat |
Section | None | String | Yes | The section ID of the seat |
Type | None | Integer | Yes | The SeatType ID for the seat |
GroupID | None | String | Yes | The group ID for the seat |
Status | None | Integer | Yes | 0 = unsold, 1 = sold, 2 = locked, 3 = held, 4 = open tab, 5 = broken, 6 = buffer |
Xpos | None | Integer | Yes | The relative X position of the seat in the layout |
Ypos | None | Integer | Yes | The relative Y position of the seat in the layout |
Width | None | Integer | Yes | The relative width of the seat in the layout |
Height | None | Integer | Yes | The relative height of the seat in the layout |
Angle | None | Integer | Yes | The angle of the seat in the layout |
PriceGroupCode | None | Integer | Maybe | If the request was made using SCHEDULE credentials: This value links back to the appropriate <PriceGroups><PriceGroup>, which shows what <Tickets><Ticket> are available for this seat.
|
Reserved Seating – Check Seat Picks
This call allows for you to verify the point-of-sale system will allow the sale of the seats picked. This is in order to stop customer from leaving too many single seats across the auditorium.
Reserved Seating – Check Seat Picks – Sample Request
<Request> <Command>CHECKSEATPICKS</Command> <Data> <Packet> <PerformanceID>008691000166</PerformanceID> <Seats> <Seat> <RowIndex>0</RowIndex> <ColIndex>0</ColIndex> </Seat> </Seats> </Packet> </Data> </Request>
If there are multiple seats to check, just add the appropriate <Seat></Seat> information.
Node | Child Node | Type | Required | Description <Seats> |
---|---|---|---|---|
Seats | Seat | Sun Node | Yes |
Node | Child Node | Type | Required | Description <Seat> |
---|---|---|---|---|
Row | None | Integer | Yes | Row number |
Col | None | Integer | Yes | Column number |
Reserved Seating – Check Seat Picks – Sample Response
<Response> <Version>1</Version> <ValidSelections>1</ValidSelections> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Char | Yes | 1 |
ValidSelections | None | Integer | Yes | 0 = Invalid, 1 = Valid |
InvalidReason | None | String | Maybe | If invalid selection, this will be the reason why. |
Seating Chart - Sample Request – PerformanceID
<Request> <Version>1</Version> <Command>SeatChart</Command> <Data> <Packet> <PerformanceID>CA25640|201010222300|9</PerformanceID> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Integer | Yes | 1 |
Command | None | String | Yes | SeatChart |
PerformanceID | None | String | Maybe | Performance ID for show |
Seating Chart - Sample Request – MtFilmCode, MtPerformanceID, and ShowTime
<Request> <Version>1</Version> <Command>SeatChart</Command> <Data> <Packet> <MtPerformanceID>1</MtPerformanceID> <MtFilmCode>123</MtFilmCode> <ShowTime>201010201430</ShowTime> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Version | None | Integer | Yes | 1 |
Command | None | String | Yes | SeatChart |
MtPerformanceID | None | String | Yes | Movietickets.com performance id for show |
MtFilmCode | None | String | Yes | Movietickets.com film code for title |
ShowTime | None | String | Yes | Performance date/time (yyyyMMddhhmm) |
Seating Chart - Sample Response
<Response> <Code>0</Code> <ResponseText>OK</ResponseText> <Layout> <Seats> <Seat> <ColDes>11</ColDes> <ColNum>1</ColNum> <RowDes>D</RowDes> <RowNum>3</RowNum> <Section>11</Section> <Type>0</Type> <Status>0</Status> </Seat> <Seat> <ColDes>10</ColDes> <ColNum>1</ColNum> <RowDes>F</RowDes> <RowNum>6</RowNum> <Section>11</Section> <Type>0</Type> <GroupID>20</GroupID> <Status>0</Status> </Seat> </Seats> </Layout> </Response>
Node | Child Node | Type | Required | Description <Seat> |
---|---|---|---|---|
ColDesc | None | String | Yes | Column description |
ColNum | None | Integer | Yes | Column number |
RowDesc | None | String | Yes | Row description |
RowNum | None | Integer | Yes | Row number |
Section | None | String | Yes | Section name |
Type | None | Integer | Yes | Type of seat (see seat type list) |
GroupID | None | Integer | No | Grouped seats will have the same GroupID |
Status | None | Integer | Yes | 0 = unsold, 1 = sold, 2 = locked, 3 = held, 4 = open tab, 5 = broken, 6 = buffer |
Holding and Releasing Seats
A hold seat request will hold the requested seats in a pending state for 5 minutes. Held seats can, and should, be released if the customer switches to different seats.
Reserved Seating – Hold Seats – Sample Request
<Request> <Version>1</Version> <Command>HoldSeats</Command> <Data> <Packet> <Command>Hold</Command> <Performances> <Performance> <PerformanceID>+21 Strange Title</PerformanceID> <Seats> <Seat> <Row>0</Row> <Col>1</Col> <Section>All</Section> </Seat> </Seats> </Performance> </Performances> </Packet> </Data> </Request>
If there are multiple seats to hold, just add the appropriate <Seat></Seat> information. Performances can also be identified using PerformanceID.
Node | Child Node | Type | Required | Description <Seats> |
---|---|---|---|---|
Seats | Seat | Sub Node | Yes |
Node | Child Node | Type | Required | Description <Seat> |
---|---|---|---|---|
Row | None | Integer | Yes | Row number |
Col | None | Integer | Yes | Column number |
Section | None | String | Yes | Section name |
Reserved Seating – Hold Seats – Sample Response
<Response> <Code>0</Code> <ResponseText>OK</ResponseText> <TransactionID>80A6F0F0-6747-4717-BF27-E2593E61818C</TransactionID> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Code | None | Integer | Yes | 0 = success, or an Error Code |
None | String | Yes | OK | |
None | String | Yes | Used to complete transaction or release seats |
Reserved Seating – Release Seats – Sample Request
<Request> <Version>1</Version> <Command>HoldSeats</Command> <Data> <Packet> <Command>Release</Command> <TransactionID>18EEF867-F72E-4B47-9C3E-96CE026475E1</TransactionID> </Packet> </Data> </Request>
Node | Child Node | Type | Required | Description <Request> |
---|---|---|---|---|
Command | None | String | Yes | HoldSeats |
Packet | Sub Node | Yes | ||
None | String | Yes | Release | |
None | String | Yes | TransactionID from Hold request |
Reserved Seating – Release Seats – Sample Response
<Response> <Version>1</Version> <Code>0</Code> <ResponseText>OK</ResponseText> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Integer | Yes | 1 |
Code | None | String | Yes | 0 = success, or an Error Code |
ResponseText | None | String | Yes | OK |
Ticket Purchasing – Reserved Seating
Ticket Purchase (Reserved) – Title, ShowTime, and AuditoriumID - Sample Request
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <PurchaseTitles> <PurchaseTitle> <Title>Casino Royale</Title> <ShowTime>201012132335</ShowTime> <Auditorium>1</Auditorium> <Tickets> <Ticket> <Amount>1</Amount> <TypeCode>1|1</TypeCode> <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID> <Seat> <Row>7</Row> <Col>9</Col> </Seat> <Section>1|1</Section> </Ticket> <Ticket> <Amount>1</Amount> <TypeCode>1|1</TypeCode> <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID> <Seat> <Row>7</Row> <Col>10</Col> </Seat> <Section>1|1</Section> </Ticket> </Tickets> </PurchaseTitle> </PurchaseTitles> <Fees> <TicketFee>0</TicketFee> <TransactionFee>2</TransactionFee> <Adjust>0</Adjust> </Fees> <Payments> <Payment> <Type>CreditCard</Type> <Number>5499990123456781</Number> <Expiration>0114</Expiration> <AvsStreet>4 Baum</AvsStreet> <AvsPostal>30329</AvsPostal> <CID>123</CID> <NameOnCard>RTS</NameOnCard> <ChargeAmount>3</ChargeAmount> </Payment> </Payments> </Packet> </Data> </Request>
Ticket Purchase (Reserved) – PerformanceID - Sample Request
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <PurchaseTitles> <PurchaseTitle> <PerformanceID>1005233501</PerformanceID> <Tickets> <Ticket> <Amount>1</Amount> <TypeCode>1|1</TypeCode> <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID> <Seat> <Row>7</Row> <Col>9</Col> </Seat> <Section>1|1</Section> </Ticket> <Ticket> <Amount>1</Amount> <TypeCode>1|1</TypeCode> <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID> <Seat> <Row>7</Row> <Col>10</Col> </Seat> <Section>1|1</Section> </Ticket> </Tickets> </PurchaseTitle> </PurchaseTitles> <Fees> <TicketFee>0</TicketFee> <TransactionFee>2</TransactionFee> <Adjust>0</Adjust> </Fees> <Payments> <Payment> <Type>CreditCard</Type> <Number>5499990123456781</Number> <Expiration>0114</Expiration> <AvsStreet>4 Baum</AvsStreet> <AvsPostal>30329</AvsPostal> <CID>123</CID> <NameOnCard>RTS</NameOnCard> <ChargeAmount>3</ChargeAmount> </Payment> </Payments> </Packet> </Data> </Request>
Ticket Purchase (Reserved) – MtFilmCode, ShowTime, and PerformanceID - Sample Request
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <PurchaseTitles> <PurchaseTitle> <PerformanceID>1005233501</PerformanceID> <ShowTime>201010052335</ShowTime> <MtFilmCode>20516</MtFilmCode> <Tickets> <Ticket> <Amount>1</Amount> <TypeCode>1|1</TypeCode> <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID> <Seat> <Row>7</Row> <Col>9</Col> </Seat> <Section>1|1</Section> </Ticket> <Ticket> <Amount>1</Amount> <TypeCode>1|1</TypeCode> <HoldSeatTransactionID>4022547A-9FB1-4D24-956A-D98AEB482BDC</HoldSeatTransactionID> <Seat> <Row>7</Row> <Col>10</Col> </Seat> <Section>1|1</Section> </Ticket> </Tickets> </PurchaseTitle> </PurchaseTitles> <Fees> <TicketFee>0</TicketFee> <TransactionFee>2</TransactionFee> <Adjust>0</Adjust> </Fees> <Payments> <Payment> <Type>CreditCard</Type> <Number>5499990123456781</Number> <Expiration>0114</Expiration> <AvsStreet>4 Baum</AvsStreet> <AvsPostal>303529</AvsPostal> <CID>123</CID> <NameOnCard>RTS</NameOnCard> <ChargeAmount>3</ChargeAmount> </Payment> </Payments> </Packet> </Data> </Request>
Ticket Purchase (Reserved) - Sample Response
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <Response> <Code>0</Code> <ResponseText>OK</ResponseText> <TransactionID>1524291</TransactionID> <Pickups> <Pickup> <TicketDay>20101213</TicketDay> <PickupNumber/> <BarCodes> <BarCode> <Type>Transaction</Type> <CodeType>UPC</CodeType> <BarCodeData>525524291791</BarCodeData> </BarCode> </BarCodes> </Pickup> </Pickups> </Response> </Packet> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Integer | Yes | 1 |
Code | None | Integer | Yes | -1 |
Packet | Response | Sub Node | Yes | |
ResponseText | None | String | Yes | OK |
TransactionID | None | String | Yes | Transaction receipt number |
Pickups | Pickup | String | Yes | |
TicketDay | None | String | Yes | Date of performance (yyyyMMddhhmm) |
PickupNumber | None | String | Yes | Not currently used |
BarCodes | BarCode | String | Yes | |
Type | None | String | Yes | Transaction |
CodeType | None | String | Yes | The bar code type: UPC |
BarCodeData | None | String | Yes | The confirmation number to be encoded. IMAGE IS NOT PROVIDED BY THE POS. |
Concession Prices and Sales
A list of concession items, Per Cap settings, and prices can be downloaded in XML format, from the theatre, using the following URL:
https://<Theatre RTN Number>.formovietickets.com:2235/concessionprices.xml
When selling concession sales it may be necessary to include sales tax in the <ChargeAmount> tag. Insert additional <PurchaseItem> tags if needed.
Concession Sales – SalesTaxCheck – Sample Request
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <SalesTaxCheck>1</SalesTaxCheck> <PurchaseItems> <PurchaseItem> <ItemName>Candy Item</ItemName> <Amount>1</Amount> </PurchaseItem> </PurchaseItems> </Packet> </Data> </Request>
Concession Sales – SalesTaxCheck – Sample Response
<Response> <Status>0</Status> <SalesTax>0.24</SalesTax> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Status | None | Integer | Yes | 0 = success, or an Error Code |
SalesTax | None | Decimal | Yes | The amount of sales tax on the items in the Request. |
Concession Sales – Purchase – Sample Request
<Request> <Version>1</Version> <Command>Buy</Command> <Data> <Packet> <PurchaseItems> <PurchaseItem> <ItemName>Candy Item</ItemName> <Amount>1</Amount> </PurchaseItem> </PurchaseItems> <Fees> <TicketFee>0</TicketFee> <TransactionFee>0</TransactionFee> <Adjust>0</Adjust> </Fees> <Payments> <Payment> <Type>CreditCard</Type> <Number>5499990123456781</Number> <Expiration>0114</Expiration> <AvsStreet>4 Baum</AvsStreet> <AvsPostal>30329</AvsPostal> <CID>123</CID> <NameOnCard>RTS</NameOnCard> <ChargeAmount>2.00</ChargeAmount> </Payment> </Payments> </Packet> </Data> </Request>
Concession Sales – Purchase – Sample Response
<Response> <Version>1</Version> <Code>-1</Code> <Packet> <Response> <Code>0</Code> <ResponseText>OK</ResponseText> <TransactionID>1476432</TransactionID> </Response> </Packet> </Response>
Node | Child Node | Type | Required | Description <Response> |
---|---|---|---|---|
Version | None | Integer | Yes | 1 |
Code | None | Integer | Yes | -1 |
Packet | Response | Sub Node | Yes | |
Code | None | String | Yes | 0 = success, or an Error Code |
ResponseText | None | String | Yes | OK |
TransactionID | None | String | Yes | Confirmation for purchase |
Error Codes
Error Code | Error Description |
---|---|
100 |
No data packet was decrypted (possible encryption error) |
101 |
No <Payment> nodes specified |
102 |
Gift request received, but user does not have rights to sell gifts cards |
103 |
Films request received, but user does not have rights to sell tickets |
104 |
No films, gifts, or items in request |
106 |
Invalid PerformanceID format |
107 |
Could not find film for PerformanceID |
108 |
No tickets for film in request |
110 |
Auditorium is oversold |
111 |
Charge amount does not match calculated amount by POS |
113 |
Bad username or password |
114 |
No gift card prefixes are configured |
115 |
No gift purchase amount in request |
116 |
POS could not allocate gift certificate number |
117 |
Can't add points to a non registered card |
118 |
Invalid gift card number |
119 |
Unable to create HostedCheckout PaymentId |
120 |
Invalid ProcessCompletePostData Format |
121 |
Invalid HostedCheckout Processor |
122 |
HostedCheckout Transaction Expired |
123 |
MPS Payment Not Valid |
124 |
HostedCheckout Purchase Failed |
125 |
Invalid HostedCheckout PaymentId |
126 |
Multiple Payment Validations Error |
127 |
Charge Amount is Neg |
128 |
Ticket fee item not configured |
129 |
Extra fee item not configured |
130 |
Adjust item not configured |
131 |
Unknown Ticket Class In Request |
132 |
Ticket class in not enabled for internet ticketing |
133 |
Zero Priced Ticket in Request |
134 |
Payments are specified during check sales tax request |
135 |
No PickupNumber specified |
136 |
Refund, Reverse, or Redeem error (see message for specific details) |
137 |
Performance is no longer scheduled (or not a reserved seating show) |
138 |
Non-secure payment on tokenized account |
139 |
Ticket not available for performance |
140 |
Reserved ticket purchase error (see message for specific details) |
141 |
Transaction does not balance error |
142 |
Reserved ticket purchase error (see message for specific details) |
143 |
Malformed gift purchase packet (see message for specific details) |
144 |
Unable to validate GiftCardPIN |
201 |
Unknown Secure Processor Type |
202 |
Invalid Parameters In Payment Node |
203 |
VerifyAccount Failed - ResponseText: <Processor ResponseText> |
204 |
VerifyAccount Failed - Invalid AVS/CVV Result |
205 |
CreditSale Failed - ResponseText: <Processor ResponseText> |
500 |
POS could not allocate cash register control (possibly server too busy) |
700 |
Unknown error during sale |
701 |
Not enough money on gift card |
702 |
Invalid credit card number/expiration, or card declined |
703 |
Invalid performance |
704 |
Ticket type is disabled |
705 |
Ticket serial number file is invalid |
706 |
Concession item not setup – check ticket/concession link items |
707 |
Reserved seat sale failed – check the seating chart |
5000 |
Exception Error (see message for details). |
9000 |
POS Not Licensed |
9001 |
Packet Parse Error (see message for extra details) |
Reserved Seating Codes
Seat Code | Seat Description |
---|---|
0 |
Normal Seat |
1 |
Handicapped Seat |
2 |
Aisle (the aisle, NOT an aisle seat) |
3 |
House Seat |
4 |
Companion Seat |
5 |
Pillar |
6 |
Table |
7 |
Beanbag |
8 |
Loveseat |
9 |
Rocker |
10 |
Recliner |
Film and Show Bit Field Values
Info1
Info1 | Setting |
---|---|
1 |
RTN Display |
2 |
RTN Sell |
4 |
Kiosk Display |
8 |
No Passes |
16 |
Dolby Digital |
32 |
THX |
64 |
DLP |
128 |
Dubbed in English |
256 |
Subtitled in English |
512 |
DTS |
1024 |
No Discounts |
2048 |
Stadium Seating |
4096 |
3D |
8192 |
16MM |
16384 |
35MM |
Info2
Info2 | Setting |
---|---|
1 |
3rd Party Display |
2 |
3rd Party Sell |
4 |
Rentrak Transfer |
8 |
IMAX |
16 |
Flat |
32 |
Digital |
64 |
Descriptive Video Service |
128 |
Subtitled in French |
512 |
Dubbed in French |
1024 |
70MM |
2048 |
Open Caption |
4096 |
Closed Caption |
8192 |
Special Advanced Screening |
16384 |
Adults Only |
Info3
Info3 | Setting |
---|---|
1 |
Sign Display |
2 |
RESERVED / UNIMPLEMENTED |
4 |
RESERVED / UNIMPLEMENTED |
8 |
Director's Hall |
16 |
RWC |
32 |
Reserved Seating |
64 |
Gallery |
128 |
Lux Level |
256 |
Premier |
512 |
Cine Capri |
1024 |
Cine Art |
2048 |
Showcase Art |
4096 |
Surround Sound |
8192 |
Scope |
16384 |
DBOX |
32768 |
PLF |
32768 |
Dolby Atmos |
131072 |
RealD 3D |
262144 |
Sony 4K |
524228 |
DTSX |
1048576 |
Auro 3D |
2097152 |
Fedelio |
4194304 |
Captiview |
8388608 |
Audio Description |
16777216 |
Hearing Impaired Track |
33554432 |
Sensory Show |
Info4
Info4 | Setting |
---|---|
1 |
RESERVED / UNIMPLEMENTED |