Selecione uma das seguintes indústrias de cartão para saber mais sobre como ele pode ser usado.
Esta seção contém snippets de código para cartões de embarque. Ela abrange as seguintes classes e objetos:
JSON FlightClass
Depois que você tiver definido a FlightClass
, insira-a fazendo uma solicitação POST
ao seguinte URI REST:
https://walletobjects.googleapis.com/walletobjects/v1/flightClass
Adicione o parâmetro strict=true
ao URI REST para ativar a análise de erro rígida e capturar erros extras, como campos de códigos duplicados:
https://walletobjects.googleapis.com/walletobjects/v1/flightClass?strict=true
O exemplo a seguir mostra um recurso JSON representando uma FlightClass
. O JSON precisa ser enviado no corpo da solicitação POST. Mais especificamente, as amostras de código a seguir demonstram como definir e inserir a FlightClass
.
Recurso
{ "kind": "walletobjects#flightClass", "id": string, "issuerName": string, "reviewStatus": string, "localScheduledDepartureDateTime": string, "flightHeader": { "kind": "walletobjects#flightHeader", "carrier": { "kind": "walletobjects#flightCarrier", "carrierIataCode": string, "airlineName": { "kind": "walletobjects#localizedString", "translatedValues": [{ "kind": "walletobjects#translatedString", "language": string, "value": string }], "defaultValue": { "kind": "walletobjects#translatedString", "language": string, "value": string } }, "airlineLogo": { "kind": "walletobjects#image", "sourceUri": { "kind": "walletobjects#uri", "uri": string, "description": string, "localizedDescription": { "kind": "walletobjects#localizedString", "translatedValues": [{ "kind": "walletobjects#translatedString", "language": string, "value": string }], "defaultValue": { "kind": "walletobjects#translatedString", "language": string, "value": string } } } }, "airlineAllianceLogo": { "kind": "walletobjects#image", "sourceUri": { "kind": "walletobjects#uri", "uri": string, "description": string, "localizedDescription": { "kind": "walletobjects#localizedString", "translatedValues": [{ "kind": "walletobjects#translatedString", "language": string, "value": string }], "defaultValue": { "kind": "walletobjects#translatedString", "language": string, "value": string } } } } }, "flightNumber": string }, "origin": { "kind": "walletobjects#airportInfo", "airportIataCode": string, "terminal": string, "gate": string }, "destination": { "kind": "walletobjects#airportInfo", "airportIataCode": string, "terminal": string, "gate": string } }
Java
// Define the Image Module Data ListimageModuleData = new ArrayList (); ImageModuleData image = new ImageModuleData().setMainImage( new Image().setSourceUri( new ImageUri().setUri("http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg"))); imageModuleData.add(image); // Define Links Module Data List uris = new ArrayList (); Uri uri1 = new Uri().setDescription("Nearby Locations").setUri("http://maps.google.com/?q=google"); Uri uri2 = new Uri().setDescription("Call Customer Service").setUri("tel:6505555555"); uris.add(uri1); uris.add(uri2); LinksModuleData linksModuleData = new LinksModuleData().setUris(uris); // Define Text Areas List textModulesData = new ArrayList (); TextModuleData details = new TextModuleData().setHeader("Custom Flight Details").setBody( "Baconrista flights has served snacks in-flight since its founding."); textModulesData.add(details); // Define Geofence locations List locations = new ArrayList (); locations.add(new LatLongPoint().setLatitude(37.422601).setLongitude( -122.085286)); locations.add(new LatLongPoint().setLatitude(37.424354).setLongitude( -122.09508869999999)); locations.add(new LatLongPoint().setLatitude(40.7406578).setLongitude( -74.00208940000002)); // Define Flight details CarrierData carrier = new CarrierData().setCarrierIataCode("LX"); FlightHeaderData flightHeaderData = new FlightHeaderData().setCarrier(carrier).setFlightNumber("123") OriginData origin = new OriginData().setAirportIataCode("LAX").setGate("B2").setTerminal("1"); DestinationData destination = new DestinationData().setAirportIataCode("SFO").setGate("C3").setTerminal("2"); FlightClass wobClass = new FlightClass() .setId('2945482443380251551.ExampleFlightClass1') .setIssuerName("Baconrista Flights") .setReviewStatus("underReview") .setLinksModuleData(linksModuleData) .setImageModulesData(imageModuleData) .setTextModulesData(textModulesData) .setLocalScheduledDepartureDateTime("2027-03-05T06:30:00") .setFlightHeader(flightHeaderData) .setOrigin(origin) .setDestination(destination); FlightClass response = client.flightclass().insert(wobClass).execute();
PHP
// A list of locations at which the Wallet Class can be used. $locations = array( array( 'kind' => 'walletobjects#latLongPoint', 'latitude' => 37.424015499999996, 'longitude' => -122.09259560000001 ), array( 'kind' => 'walletobjects#latLongPoint', 'latitude' => 37.424354, 'longitude' => -122.09508869999999 ), array( 'kind' => 'walletobjects#latLongPoint', 'latitude' => 37.7901435, 'longitude' => -122.39026709999997 ), array( 'kind' => 'walletobjects#latLongPoint', 'latitude' => 40.7406578, 'longitude' => -74.00208940000002 ) ); // Source uri of title image. $uriTitleImageInstance = new Google_Service_Walletobjects_ImageUri(); $imageTitleImageInstance = new Google_Service_Walletobjects_Image(); $uriTitleImageInstance->setUri( 'http://farm4.staticflickr.com/3723/11177041115_6e6a3b6f49_o.jpg' ); $imageTitleImageInstance->setSourceUri($uriTitleImageInstance); // Define text module data. $textModulesData = array( array( 'header' => 'Custom Flight Details', 'body' => 'Baconrista flights has served snacks in-flight since its founding.' ) ); // Define links module data. $linksModuleData = new Google_Service_Walletobjects_LinksModuleData(); $uris = array ( array( 'uri' => 'http://maps.google.com/map?q=google', 'kind' => 'walletobjecs#uri', 'description' => 'Nearby Locations' ), array( 'uri' => 'tel:6505555555', 'kind' => 'walletobjecs#uri', 'description' => 'Call Customer Service' ) ); $linksModuleData->setUris($uris); $uriModuleImageInstance = new Google_Service_Walletobjects_ImageUri(); $uriModuleImageInstance->setUri( 'http://farm8.staticflickr.com/7401/11177116434_d8e600bba6_o.jpg' ); $uriModuleImageInstance->setDescription('Flights perks); $imageModuleImageInstance = new Google_Service_Walletobjects_Image(); $imageModuleImageInstance->setSourceUri($uriModuleImageInstance); $imagesModuleData = new Google_Service_Walletobjects_ImageModuleData(); $imagesModuleData->setMainImage($imageModuleImageInstance); $imagesModuleDataArr = array ($imagesModuleData); // Define Flight details $carrier = array( 'carrierIataCode' => 'LX' ); $flightHeaderData = array( 'carrier' => $carrier, 'flightNumber' => '123' ); $origin = array( 'airportIataCode' => 'LAX', 'gate' => 'B2', 'terminal' => '1' ); $destination = array( 'airportIataCode' => 'SFO', 'gate' => 'C1', 'terminal' => '2' ); // Create wallet class. $wobClass = new Google_Service_Walletobjects_FlightClass(); $flightClass->setId('2945482443380251551.FlightClass'); $wobClass->setIssuerName('Baconrista Flights'); $wobClass->setLinksModuleData($linksModuleData); $wobClass->setTextModulesData($textModulesData); $wobClass->setImageModulesData($imagesModuleDataArr); $wobClass->setReviewStatus('underReview'); $wobClass->setLocations($locations); $wobClass->setLocalScheduledDepartureDateTime("2027-03-05T06:30:00") $wobClass->setFlightHeader($flightHeaderData) $wobClass->setOrigin($origin) $wobClass->setDestination($destination); $service->flightclass->insert($wobClass);
Python
api_object = generate_flight_class( '1234567', 'ExampleFlightClass') api_request = service.flightclass().insert(body=api_object) api_response = api_request.execute() def generate_flight_class(issuer_id, class_id): flight_class = { 'kind': 'walletobjects#flightClass', 'id': '%s.%s' % (issuer_id, class_id), 'issuerName': 'Baconrista Flights', 'locations': [{ 'kind': 'walletobjects#latLongPoint', 'latitude': 37.424015499999996, 'longitude': -122.09259560000001 },{ 'kind': 'walletobjects#latLongPoint', 'latitude': 37.424354, 'longitude': -122.09508869999999 },{ 'kind': 'walletobjects#latLongPoint', 'latitude': 37.7901435, 'longitude': -122.39026709999997 },{ 'kind': 'walletobjects#latLongPoint', 'latitude': 40.7406578, 'longitude': -74.00208940000002 }], 'reviewStatus': 'underReview', 'review': { 'comments': 'Real auto approval by system' }, 'textModulesData': [ { 'header': 'Custom Flight Details', 'body': 'Baconrista flights has served snacks in-flight since its founding.' } ], 'linksModuleData': { 'uris': [ { 'kind': 'walletobjects#uri', 'uri': 'http://maps.google.com/map?q=google', 'description': 'Nearby Locations' },{ 'kind': 'walletobjects#uri', 'uri': 'tel:6505555555', 'description': 'Call Customer Service' }] }, 'imageModulesData': [ { 'mainImage': { 'kind': 'walletobjects#image', 'sourceUri': { 'kind': 'walletobjects#uri', 'uri': 'http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg', 'description': 'Flight perks' } } } ], 'localScheduledDepartureDateTime' : '2027-03-05T06:30:00', 'flightHeader' : { 'carrier' : { 'carrierIataCode' : 'LX' }, 'flightNumber' : '123' }, 'origin' : { 'airportIataCode' : 'LAX', 'gate' : 'A1', 'terminal' : '1' }, 'destination' : { 'airportIataCode' : 'SFO', 'gate' : 'C3', 'terminal' : '2' }, } return flight_class
JSON FlightObject
Os exemplos a seguir definem o FlightObject
:
Recurso
{ "kind": "walletobjects#flightObject", "id": string, "classId": string, "state": string, "passengerName": string, "boardingAndSeatingInfo": { "kind": "walletobjects#boardingAndSeatingInfo", "boardingGroup": string, "seatNumber": string, "boardingPosition": string, "sequenceNumber": string, "seatClass": string, "boardingPrivilegeImage": { "kind": "walletobjects#image", "sourceUri": { "kind": "walletobjects#uri", "uri": string, "description": string, "localizedDescription": { "kind": "walletobjects#localizedString", "translatedValues": [{ "kind": "walletobjects#translatedString", "language": string, "value": string }], "defaultValue": { "kind": "walletobjects#translatedString", "language": string, "value": string } } } }, "boardingDoor": string }, "reservationInfo": { "kind": "walletobjects#reservationInfo", "confirmationCode": string, "eticketNumber": string, "frequentFlyerInfo": { "kind": "walletobjects#frequentFlyerInfo", "frequentFlyerProgramName": { "kind": "walletobjects#localizedString", "translatedValues": [{ "kind": "walletobjects#translatedString", "language": string, "value": string }], "defaultValue": { "kind": "walletobjects#translatedString", "language": string, "value": string } }, "frequentFlyerNumber": string } } }
Java
// Define Boarding and Seating Info BoardingAndSeatingInfo boardingAndSeatingInfo = new BoardingAndSeatingInfo().setSeatNumber("42").setBoardingGroup('B'); // Define Reservation Info ReservationInfo reservationInfo = new ReservationInfo().setConfirmationCode("42aQw"); // Define Wallet Object FlightObject object = new FlightObject() .setClassId('2945482443380251551.ExampleFlightClass1') .setId('2945482443380251551.ExampleFlightObject1') .setState("active") .setPassengerName("Sir Bacon the IV") .setBoardingAndSeatingInfo(boardingAndSeatingInfo) .setReservationInfo(reservationInfo);
PHP
// Define Boarding and Seating Info $boardingAndSeatingInfo = new BoardingAndSeatingInfo(); $boardingAndSeatingInfo->setSeatNumber("42"); $boardingAndSeatingInfo->setBoardingGroup('B'); // Define Reservation Info $reservationInfo = new ReservationInfo() $reservationInfo->setConfirmationCode("42aQw"); // Create wallet object. $flightObject = new Google_Service_Walletobjects_FlightObject(); $flightObject->setClassId('2945482443380251551.FlightClass'); $flightObject->setId('2945482443380251551.FlightObject'); $flightObject->setState('active'); $flightObject->setPassengerName("Sir Bacon the IV"); $flightObject->setBoardingAndSeatingInfo($boardingAndSeatingInfo); $flightObject->setReservationInfo($reservationInfo);
Python
flight_object = { 'kind': 'walletobjects#flightObject', 'classId': '1234567.ExampleFlightClass', 'id': '1234567.ExampleFlightObject', 'state': 'active', 'passengerName' : 'Sir Bacon the IV', 'boardingAndSeatingInfo' : { 'seatNumber' : '42', 'boardingGroup' : 'B' }, 'reservationInfo' : { 'confirmationCode' : '42aQw' } }
Há duas maneiras de inserir o FlightObject
.
A primeira maneira é fazer uma solicitação POST
(com objeto definido no corpo) para o seguinte URI REST:
https://walletobjects.googleapis.com/walletobjects/v1/flightObject
A segunda maneira é criar um JSON Web Token (JWT) com base na definição FlightObject
e colocá-lo em um botão Salvar no Google Pay. Para mais informações, consulte Receber acesso à API REST.
Adicionar FlightObject com a API Android
A adição de FlightObjects
à API Android não está disponível no momento.
Para usar a API REST no app, chame um link JWT em uma intent ACTION_VIEW
,
conforme descrito em
Usar o método de intent e link do JWT.
Botão para salvar vários passageiros
É possível salvar vários passageiros para o mesmo trecho de voo, ou vários passageiros para trechos com vários voos, com um botão Salvar no Google Pay ou um link da Web.
No JSON Web Token (JWT) a ser assinado, inclua vários cartões na matriz. Os exemplos a seguir mostram duas formas de fazer isso, conforme descrito em Criar um botão para salvar vários cartões:
-
Este exemplo salva objetos do mesmo cartão em um JWT. Ele usa classes e objetos de voo pré-inseridos e envia apenas os códigos de cada objeto. Observe que a propriedade
classId
é opcional. Ela é mostrada aqui para fins demonstrativos.{ "aud": "google", "origins": [], "iss": "your_iam_account@appspot.gserviceaccount.com", "iat": 1534891254, "typ": "savetowallet", "payload": { "flightObjects": [ { "classId": "<my_issuer_id>.FlightClass_A", "id": "<my_issuer_id>.FlightObject_A_01" }, { "classId": "<my_issuer_id>.FlightClass_A", "id": "<my_issuer_id>.FlightObject_A_02" } ] } }
-
Este exemplo define uma classe e vários objetos que referenciam essa classe. Tanto a classe quanto os objetos são inseridos quando o usuário salva os cartões.
{ "aud": "google", "origins": [ "http://localhost:8080" ], "iss": "s2googlepay-api@sunlit-pixel-197421.google.com.iam.gserviceaccount.com", "iat": 1536886148, "typ": "savetoandroidpay", "payload": { "flightObjects": [ { "classId": "<my_issuer_id>.FlightClass_A", "state": "active", "passengerName": "test name adHoc", "id": "<my_issuer_id>.FlightObject_A", "reservationInfo": { "confirmationCode": "testcode" } }, { "classId": "<my_issuer_id>.FlightClass_A", "state": "active", "passengerName": "test name", "id": "<my_issuer_id>.flight_multi_0913-obj01-copy", "reservationInfo": { "confirmationCode": "testcode" } } ], "flightClasses": [ { "origin": { "terminal": "2", "gate": "A1", "kind": "walletobjects#airportInfo", "airportIataCode": "SFO" }, "kind": "walletobjects#flightClass", "reviewStatus": "underReview", "destination": { "terminal": "1", "gate": "B3", "kind": "walletobjects#airportInfo", "airportIataCode": "TPE" }, "id": "<my_issuer_id>.FlightClass_A", "flightHeader": { "carrier": { "carrierIataCode": "BR" }, "flightNumber": "123" }, "localScheduledDepartureDateTime": "2027-03-05T06:30:00", "issuerName": "Baconrista Airlines" } ] } }