API Documentation
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 location's POS 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 an HTTPS Post of an XML packet. Basic authentication is performed for each Post.
The URL for posting data is:
Note: The listening port is 2235 (not the default web server port 80)
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):
WorldPay E2E Server (also known as Mercury EMV Server):
TSYS Secure Server:
The credentials for these servers are:
Schedule and Selling Username: test
Schedule and Selling Password: test
!! 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
The test credit card information for the WorldPay E2E server is:
Number 6011-0009-9091-1111
The test credit card information for the Heartland Secure server is:
Number 4012-0020-0006-0016
The test credit card information for the TSYS Secure server is:
Number 4012-0000-9876-5439
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 in this Knowledge Base for details on purchasing new gift cards.
!! 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 !!
<Request>
<Version>1</Version>
<Command>ShowTimeXml</Command>
<ShowAvalTickets>1</ShowAvalTickets>
<ShowSales>1</ShowSales>
<ShowSaleLinks>1</ShowSaleLinks>
</Request>
<Response>
<ShowSchedule>
<FileVersion>1.1</FileVersion>
<RtsVersion>7.0.7238.0</RtsVersion>
</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>
<FilmCode>+24230</FilmCode>
<MtFilmCode></MtFilmCode>
<Shows>
<Show>
<DT>200811261235</DT>
<Aud>1</Aud>
<ID>+24230|200811261235|1</ID>
<Link>12345</Link>
<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. These items can be used in any purchase packet: tickets, items, gift cards, etc.
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 | CollapseDescription <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 Generation
New Gift Card Generation - Sample Request Packet
<Request>
<Version>1</Version>
<Command>Buy</Command>
<Data>
<Packet>
<PurchaseGifts>
<PurchaseGift>
<Amount>0</Amount>
</PurchaseGift>
</PurchaseGifts>
<Payments>
<Payment></Payment>
</Payments>
</Packet>
</Data>
</Request>
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>
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.
You can have RTS generate a new card number by passing ASSIGNNEW as the card number
Node | Child Node | Type | Required | CollapseDescription <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 | ???? |
---|
Email | 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 | CollapseDescription <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 | CollapseDescription <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.
This command will only find tickets whose pickup times is between Now - The Pickup Ticket Block Time and Now + 180 Days. The Pickup Ticket Block Time can be set via Setup -> Tickets -> Options - Block Pickup Tickets After Minutes
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>REDEEM</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 | Whether or not the transaction has tickets available for pickup - 0 = False, 1 = True |
---|
HasExpirations | None | Boolean | Yes | Whether or not the transaction contains tickets to shows at a prior date/time - 0 = False, 1 = True |
---|
HasPickedUp | None | Boolean | Yes | Whether or not the transaction has tickets that have been picked up - 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!
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 | CollapseDescription <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
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.
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>
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>
</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.
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.
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>
</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>
</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
|
---|
<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>
</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 |
---|
<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>
</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. !!
<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.
<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>
<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. |
---|
<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 |
---|
<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 |
---|
ResponseText | None | String | Yes | OK |
---|
TransactionID | 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 | CollapseDescription <Request> |
---|
Command | None | String | Yes | HoldSeats |
---|
Data | Packet | Sub Node | Yes | |
---|
Command | None | String | Yes | Release |
---|
TransactionID | 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>
<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>
<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 | CollapseDescription <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>
- When selling items with a variable price (Amount Entry Items), a <Price> node can be added inside the <PurchaseItem> node after the <Amount>. Example:
<PurchaseItem>
<ItemName>Donation</ItemName>
<Amount>1</Amount>
<Price>2.00</Price>
</PurchaseItem>
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 | CollapseSeat 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
Information is encoded in these values as a bit field. Bit fields work by storing multiple true/false values in the same integer, instead of having multiple integers for each value.
To look up a value in a bitfield, you'll want to make use of Bit Masks.
As an example, my performance has an Info1 value of 7, and I want to see if 3D is set. I know that 3D is bit 12 with a decimal value of 4096. I can check to see if bit 12 is set in my Info1 value by AND
'ing it and the decimal value of 4096.
7 / 0000 0000 0000 0111
AND
4096 / 0001 0000 0000 0000
___________________________
0 / 0000 0000 0000 0000
Another performance has an Info1 value of 6051. To check if 3D is set here, I'll again AND
it with the decimal value of the 3D bit, 4096.
6151 / 0001 1000 0000 0111
AND
4096 / 0001 0000 0000 0000
___________________________
4096 / 0001 0000 0000 0000
Info1
Bit | Decimal Value | Setting
|
---|
0 | 1 | RTN Display |
---|
1 | 2 | RTN Sell |
---|
2 | 4 | Kiosk Display |
---|
3 | 8 | No Passes |
---|
4 | 16 | Dolby Digital |
---|
5 | 32 | THX |
---|
6 | 64 | DLP |
---|
7 | 128 | Dubbed in English |
---|
8 | 256 | Subtitled in English |
---|
9 | 512 | DTS |
---|
10 | 1024 | No Discounts |
---|
11 | 2048 | Stadium Seating |
---|
12 | 4096 | 3D |
---|
13 | 8192 | 16MM |
---|
14 | 16384 | 35MM |
---|
Info2
Bit | Decimal Value | Setting
|
---|
0 | 1 | 3rd Party Display |
---|
1 | 2 | 3rd Party Sell |
---|
2 | 4 | Rentrak Transfer |
---|
3 | 8 | IMAX |
---|
4 | 16 | Flat |
---|
5 | 32 | Digital |
---|
6 | 64 | Descriptive Video Service |
---|
7 | 128 | Subtitled in French |
---|
8 | 256 | Dubbed in French |
---|
9 | 512 | French Language Film |
---|
10 | 1024 | 70MM |
---|
11 | 2048 | Open Caption |
---|
12 | 4096 | Closed Caption |
---|
13 | 8192 | Special Advanced Screening |
---|
14 | 16384 | Adults Only |
---|
Info3
Bit | Decimal Value | Setting
|
---|
0 | 1 | Sign Display |
---|
1 | 2 | RESERVED / UNIMPLEMENTED |
---|
2 | 4 | RESERVED / UNIMPLEMENTED |
---|
3 | 8 | Director's Hall |
---|
4 | 16 | RWC |
---|
5 | 32 | Reserved Seating |
---|
6 | 64 | Gallery |
---|
7 | 128 | Lux Level |
---|
8 | 256 | Premier |
---|
9 | 512 | Cine Capri |
---|
10 | 1024 | Cine Art |
---|
11 | 2048 | Showcase Art |
---|
12 | 4096 | Surround Sound |
---|
13 | 8192 | Scope |
---|
14 | 16384 | DBOX |
---|
15 | 32768 | PLF |
---|
16 | 65536 | Dolby Atmos |
---|
17 | 131072 | RealD 3D |
---|
18 | 262144 | Sony 4K |
---|
19 | 524228 | DTSX |
---|
20 | 1048576 | Auro 3D |
---|
21 | 2097152 | Fedelio |
---|
22 | 4194304 | Captiview |
---|
23 | 8388608 | Audio Description |
---|
24 | 16777216 | Hearing Impaired Track |
---|
25 | 33554432 | Sensory Show |
---|
26 | 67108864 | Onyx |
---|
27 | 134217728 | Not ADA Accessible |
---|
28 | 268435456 | HFR |
---|
29 | 536870912 | Spanish Dubbed |
---|
30 | 1073741824 | Spanish Subtitled |
---|
Info4
Bit | Decimal Value | Setting
|
---|
0 | 1 | RESERVED / UNIMPLEMENTED |
---|