Wer nutzt das?
- Verbindungen nach dem Prinzip SSO
herstellen. Mittels der Schnittstelle kann
eine Verbindung zwischen Kundenkonten im
Ticketsystem und einem externen System
hergestellt werden. Dies ist z.B. der Fall
wenn man eine eigene App nutzt und Kunden
Konten der App gleichzeitig mit den
Kundenkonten des Ticketsystems verbinden
möchte
- Informationen zu Bestellungen und Events
aus dem System abrufen und diese extern
weiterzuverarbeiten. Beispiele:
- Eventinformationen
(Veranstaltungsname, Tag, Ort,...)
abrufen und automatisierte
Darstellungen (z.B. Eventkalender) auf
der Homepage erzeugen.
- individuelle Eventseiten erzeugen, bei
denen jeder Aufführungstermin auf
einer eigenen Webseite dargestellt
wird
- Informationen der Tickets(Eventname,
Preis, Sitzplatz, QR-Code) in der
eigenen App nachbauen und diese im
individuellen Design abbilden
- Veranstalter hinterlegt im System eine URL für den Webhook und aktiviert den Trigger "ticket.scanned"
- Wenn ein Ticket gescannt wurde, sendet der Webhook die TicketID (GUID) an den Endpoint den der Veranstalter definiert hat
- Die Ticketnutzer Information (Vorname, Nachname, Phone, E-Mail) kann nun über den API-Endpunkt abgerufen werden
- URL für die Abfrage: https://www.vbotickets.com/api2/orderdetail/ticketuser/{id}
Part 1: SSO Beispiel für die
Logik. Linke Seite = externe App / Rechte
Seite = Ticketsystem
Part 2: Webhook (Abrufen von
Bestell + Eventinformationen)
Webhook
Types
// Defines
values for
WebhookWebhookType.
const
(
WebhookWebhookTypeOrderRefund
WebhookWebhookType
=
"order.refund"
WebhookWebhookTypeOrderSale
WebhookWebhookType
= "order.sale"
)
//
OrderRefund
defines model
for
OrderRefund.
type
OrderRefund
struct
{
RefundReceiptID
int32
`json:"RefundReceiptID"`
UniqueOrderID
string
`json:"UniqueOrderID"`
}
// OrderSale
defines model
for OrderSale.
type OrderSale
struct
{
SalesReceiptID
int32
`json:"RefundReceiptID"`
UniqueOrderID
string
`json:"UniqueOrderID"`
}
// Webhook
defines model
for Webhook.
type Webhook
struct
{
Payload
json.RawMessage
`json:"Payload"`
WebhookDate
string
`json:"WebhookDate"`
WebhookType
WebhookWebhookType
`json:"WebhookType"`
WebhookUrl
string
`json:"WebhookUrl"`
Id string
`json:"id"`
}
Beispiel für
REST API GET
Request Auth
in
Golang:
apiKey :=
"XXXXXXXXX"
apiSecret :=
"ZZZZZZZZ"
url :=
"https://www.vbotickets.com/api2/Order/883d9724-b282-4c09-945f-584628021bc9?salesReceiptID=110"
// GET orders
hat keinen Payload
-> daher wird
nur die URL
ge-hasht
h :=
hmac.New(sha256.New,
[]byte(apiSecret))
h.Write([]byte(url))
sha :=
hex.EncodeToString(h.Sum(nil))
req, _ :=
http.NewRequest("GET",
url, nil)
bearer := "Bearer
" + apiKey
req.Header.Set("Authorization",
bearer)
req.Header.Set("SecretHash",
sha)
{
"Status": "Success", "Error": null, "Data":
{
"OrderID": 9666545,
"UserID": 0,
"OrderIDAlt": 0,
"OrderIDParent": 0,
"PromoterID": 8206,
"OrderDate": "2022-06-13T12:35:36.423", "LocaleID": 1031,
"TimeZone": 1,
"SalesMethod": "ONLINE",
"PaymentType": null,
"ShippingType": "eTicket",
"ShippingInfo": "Print
your tickets
now. You must
print a
separate
ticket for
each seat
you
purchased.
Do not bring
this order
confirmation.
The order
confirmation
is NOT YOUR
TICKET”,
"IsPreAuth": false,
"UniqueOrderID": "0aa455e8-2bf6-4c2d-bc4d-bf45cbe152ab",
"LastWarning": null,
"WarningLevel": 0, "Account":
{
"AcctID": 3667267, "FirstName": "Rico", "LastName": "Bärisch", "Company": "1", "Title": null,
"Suffix": null, "Salutation": null, "Address":
{
"Address1": "Herweghstrasse
4", "Address2": null,
"City": "Dresden", "StateProvince": null,
"ZipCode": "01157",
"Country": "Deutschland" },
"Phone": "",
"MobilePhone": null,
"EmailAddress": rico@egocentric-systems.de, "IsNewsletter": false,
"Birthdate": null }, "BillingAddress":
{
"Address1": "Herweghstrasse
4", "Address2": null,
"City": "Dresden", "StateProvince": null,
"ZipCode": "01157",
"Country": "Deutschland" }, "ShippingAddress": null, "OrderPayments":
[
{
"OrderPayID": 6172013,
"UserID": 0,
"PaymentDate": "2022-06-13T12:35:33.967", "Total": 120.0,
"CashReceived": 0.0,
"PaymentMethod": "CCTYPE",
"PaymentType": "CreditCard",
"CardType": "VISA",
"NameOnCard": "Rico
Bärisch",
"CreditCard": "4242",
"ExpMonth": "4",
"ExpYear": "2024",
"TransactionID": "ch_3LAJ2wJgy8HpGVYJ0RIO1Mim",
"TransactionStart": "2022-06-13T12:35:36.313",
"TransactionEnd": "2022-06-13T12:35:36.313",
"TransactionStatus": "Completed",
"SalesReceiptID": 107,
"RefundReceiptID": 0,
"SalesMethod": "ONLINE",
"UniquePayID": "8d2092e9-faac-4bba-a300-1ce7bf0ef6e5",
"CreditDate": null,
"CreditAmount": 0.0,
"CreditTransactionID": null,
"CreditUserID": 0,
"IsPreAuth": false,
"PreAuthCaptureDate": null,
"BalanceDueDate": null,
"BalancePaid": 0.0,
"LocalisedPaymentType": "VISA" }
],
"OrderDetails":
[
{
"OrderDtlID": 19365261,
"EventID": 62710,
"EventDateID": 284246,
"ItemID": 1379465,
"DateCreated": "2022-06-13T12:35:36.343",
"AuditDate": "2022-06-13T12:35:36.343",
"ItemName": "General
Admission
-
Normalpreis",
"ItemDescription": "Null
Euro<br>Die,
14. Jun,
2022 @
0:00 Uhr -
Section:
Block B
-
Normalpreis",
"ItemCat": "ga",
"Qty": 1,
"ListPrice": 40.0,
"Price": 40.0,
"PriceAdjusted": 0.0,
"ServiceFee": 0.0,
"ServiceFeePromoter": 60.0,
"FacilityFee": 0.0,
"Total": 40.0,
"ShippingFee": 0.0,
"OrderFee": 0.0, "TaxRate": 19.0,
"TaxRateBase": 19.00,
"SubPrice": 0.0,
"Option1": "",
"Value1": "",
"Option2": "RegType",
"Value2": "UserInfoForm",
"Option3": "",
"Value3": "",
"TicketUserInfo": "",
"TicketID": "6bdc197b-027c-4dca-8892-1472b9afdcc3", "SalesReceiptID": 107,
"RefundReceiptID": 0,
"SalesReceiptPrefix": "",
"RefundReceiptPrefix": null, "OpenSeat":
{
"OpenSeatID": 1379465, "Section": "Block
B", "Name": "Normalpreis", "Color": "",
"Picture": "21971_seat.png",
"Notes": "Der
Block B
befindet sich
auf der
Nordseite der
EnergieVerbund
Arena
Dresden.",
"IsVideo": false },
"Seat": null, "EventDate":
{
"EventID": 62710, "EventDateID": 284246, "EventDateName": "Null
Euro", "Date": "2022-06-14T00:00:00", "Venue":
{
"VenueID": 5039,
"VenueName": "EnergieVerbund
Arena Dresden
(Test)", "VenuePhone": "",
"VenueEmail": "",
"Address":
{
"Address1": "Magdeburger
Str.
10", "Address2": null,
"City": "Dresden",
"StateProvince": "Sachsen", "ZipCode": "01067
",
"Country": "Deutschland" }
}
},
"Barcode": "O-BJ2BX-G-TKEH-63BQ",
"ItemTax": 6.3865546218487394957983193277, "ServiceFeeTax": 0.0,
"ShippingFeeTax": 0.0,
"OrderFeeTax": 0.0,
"FacilityFeeTax": 0.0,
"Tax": 6.3865546218487394957983193277 },
{
"OrderDtlID": 19365262,
"EventID": 62710,
"EventDateID": 284246,
"ItemID": 1379465,
"DateCreated": "2022-06-13T12:35:36.343",
"AuditDate": "2022-06-13T12:35:36.343",
"ItemName": "General
Admission -
Normalpreis",
"ItemDescription": "Null
Euro<br>Die,
14. Jun, 2022
@ 0:00 Uhr -
Section: Block
B
-
Normalpreis", "ItemCat": "ga",
"Qty": 1,
"ListPrice": 40.0,
"Price": 40.0, "PriceAdjusted": 0.0, "ServiceFee": 0.0, "ServiceFeePromoter": 60.0,
"FacilityFee": 0.0,
"Total": 40.0, "ShippingFee": 0.0, "OrderFee": 0.0, "TaxRate": 19.0, "TaxRateBase": 19.00, "SubPrice": 0.0, "Option1": "",
"Value1": "",
"Option2": "RegType", "Value2": "UserInfoForm", "Option3": "",
"Value3": "",
"TicketUserInfo": "",
"TicketID": "5a4303ec-c2ac-41ed-98a0-225ff1c94eb4", "SalesReceiptID": 107,
"RefundReceiptID": 0,
"SalesReceiptPrefix": "",
"RefundReceiptPrefix": null,
"OpenSeat":
{
"OpenSeatID": 1379465, "Section": "Block
B", "Name": "Normalpreis", "Color": "",
"Picture": "21971_seat.png",
"Notes": "Der
Block B
befindet sich
auf der
Nordseite der
EnergieVerbund
Arena
Dresden.",
"IsVideo": false },
"Seat": null, "EventDate":
{
"EventID": 62710, "EventDateID": 284246, "EventDateName": "Null
Euro", "Date": "2022-06-14T00:00:00", "Venue":
{
"VenueID": 5039,
"VenueName": "EnergieVerbund
Arena Dresden
(Test)", "VenuePhone": "",
"VenueEmail": "",
"Address":
{
"Address1": "Magdeburger
Str.
10", "Address2": null,
"City": "Dresden",
"StateProvince": "Sachsen", "ZipCode": "01067
",
"Country": "Deutschland" }
}
},
"Barcode": "O-BJ2BY-G-TKEH-63BQ",
"ItemTax": 6.3865546218487394957983193277, "ServiceFeeTax": 0.0,
"ShippingFeeTax": 0.0,
"OrderFeeTax": 0.0,
"FacilityFeeTax": 0.0,
"Tax": 6.3865546218487394957983193277 },
{
"OrderDtlID": 19365263, "EventID": 62710,
"EventDateID": 284246,
"ItemID": 1379465,
"DateCreated": "2022-06-13T12:35:36.343",
"AuditDate": "2022-06-13T12:35:36.343",
"ItemName": "General
Admission -
Normalpreis",
"ItemDescription": "Null
Euro<br>Die,
14. Jun, 2022
@ 0:00 Uhr -
Section: Block
B
-
Normalpreis", "ItemCat": "ga",
"Qty": 1,
"ListPrice": 40.0,
"Price": 40.0,
"PriceAdjusted": 0.0,
"ServiceFee": 0.0,
"ServiceFeePromoter": 60.0,
"FacilityFee": 0.0,
"Total": 40.0,
"ShippingFee": 0.0,
"OrderFee": 0.0,
"TaxRate": 19.0,
"TaxRateBase": 19.00,
"SubPrice": 0.0,
"Option1": "",
"Value1": "",
"Option2": "RegType",
"Value2": "UserInfoForm",
"Option3": "",
"Value3": "",
"TicketUserInfo": "",
"TicketID": "f4661271-2fd1-4141-980f-47d48d3816bb", "SalesReceiptID": 107,
"RefundReceiptID": 0,
"SalesReceiptPrefix": "",
"RefundReceiptPrefix": null,
"OpenSeat":
{
"OpenSeatID": 1379465, "Section": "Block
B", "Name": "Normalpreis", "Color": "",
"Picture": "21971_seat.png",
"Notes": "Der
Block B
befindet sich
auf der
Nordseite der
EnergieVerbund
Arena
Dresden.",
"IsVideo": false },
"Seat": null, "EventDate":
{
"EventID": 62710, "EventDateID": 284246, "EventDateName": "Null
Euro", "Date": "2022-06-14T00:00:00", "Venue":
{
"VenueID": 5039,
"VenueName": "EnergieVerbund
Arena Dresden
(Test)", "VenuePhone": "",
"VenueEmail": "",
"Address":
{
"Address1": "Magdeburger
Str.
10", "Address2": null,
"City": "Dresden",
"StateProvince": "Sachsen",
"ZipCode": "01067
",
"Country": "Deutschland" }
}
},
"Barcode": "O-BJ2BZ-G-TKEH-63BQ",
"ItemTax": 6.3865546218487394957983193277,
"ServiceFeeTax": 0.0,
"ShippingFeeTax": 0.0,
"OrderFeeTax": 0.0,
"FacilityFeeTax": 0.0,
"Tax": 6.3865546218487394957983193277 }
],
"OrderReceipt":
{
"OrderReceiptID": 1932005,
"ReceiptID": 107,
"DateStart": "2022-06-13T12:35:36.343",
"DateEnd": "2022-06-13T12:35:36.343",
"ReceiptPrefix": "",
"CashRegisterSignature": null },
"Total": 120.0,
"Shipping": 0.0,
"ServiceFees": 0.0,
"FacilityFees": 0.0,
"OrderFees": 0.0,
"SubTotal": 120.0,
"CashReceived": 0.0,
"CashTotal": 0.0,
"CashChange": 0.0,
"Tax": 19.159663865546218487394957983,
"NetAmount": 100.84033613445378151260504202,
"OpenBalance": 0.0,
"OrderDateLocal": "2022-06-13T21:35:36.423",
"BalanceDueDate": null,
"TicketCount": 3 }
}