Code snippets

This page contains code snippets for the following classes and objects:

JSON FlightClass

Once you have defined the FlightClass, insert it by making a POST request to the following REST URI:

https://www.googleapis.com/walletobjects/v1/flightClass

Add the strict=true parameter to the REST URI to enable strict error parsing and catch additional errors, such as duplicate ID fields:

https://www.googleapis.com/walletobjects/v1/flightClass?strict=true

The following example shows a JSON resource representing a FlightClass. The JSON must be sent in the body of the POST request. Specifically, the following code samples demonstrate defining and inserting the FlightClass.

Resource

{
    "kind": "walletobjects#flightClass",
    "id": string,
    "version": long,
    "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
List imageModuleData = new ArrayList();

ImageModuleData image = new ImageModuleData().setMainImage(
    new Image().setSourceUri(
        new Uri().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_Uri();
$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' => 'Custon 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_Uri();
$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

The following samples defines the FlightObject:

Resource

{
    "kind": "walletobjects#flightObject",
    "id": string,
    "classId": string,
    "version": long,
    "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')
    .setVersion(1L)
    .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->setVersion(1);
$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',
      'version': '1',
      'state': 'active',
      'passengerName' : 'Sir Bacon the IV',
      'boardingAndSeatingInfo' : {
        'seatNumber' : '42',
        'boardingGroup' : 'B'
      },
      'reservationInfo' : {
        'confirmationCode' : '42aQw'
      }
  }



There are two ways to insert the FlightObject.

The first way is to make a POST request (with defined object in body) to the following REST URI:

https://www.googleapis.com/walletobjects/v1/flightObject

The second way is to create a JSON web token (JWT) from the FlightObject definition and put the JWT in a Save to Google Pay button. For more information, see Get access to REST API.

Add FlightObject with Android API

Adding FlightObjects with the Android API is currently unavailable.

You can use the REST API from your app by invoking a JWT link in an ACTION_VIEW intent, as described in Use JWT link and intent.

Save multiple passengers button

You can save multiple passengers for the same flight leg, or multiple passengers for multi-flight legs, with one Save to Google Pay button or weblink.

In the JSON Web Token (JWT) to be signed, include multiple Passes in the array. The following examples show two variations on how to do this, as described in Make a button to save multiple passes:

  1. This example saves objects of the same pass with one JWT. It uses pre-inserted flight classes and objects, and it only sends the IDs of each object. Note that the classId property is optional. It's shown here for demonstrative purposes.

    {
       "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"
               }
           ]
       }
    }
        
  2. This example defines a class, as well as multiple objects that reference this class. Both the class and the objects are inserted when the user saves the passes.

    {
        "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"
                }
            ]
        }
    }
        

Envoyer des commentaires concernant…

Google Pay for Passes