다음 패스 카테고리 중 하나를 선택하여 사용 방법을 자세히 알아보세요.
이 섹션에는 탑승권의 코드 스니펫이 포함되어 있습니다. 다음 클래스와 객체가 나와 있습니다.
JSON FlightClass
FlightClass
를 정의한 후 다음 REST URI에 대해 POST
요청을 실행하여 해당 클래스를 삽입합니다.
https://walletobjects.googleapis.com/walletobjects/v1/flightClass
엄격한 오류 파싱을 설정하고 중복 ID 필드와 같은 더 많은 오류를 포착하려면 REST URI에 strict=true
매개변수를 추가합니다.
https://walletobjects.googleapis.com/walletobjects/v1/flightClass?strict=true
다음 예시에서는 FlightClass
를 나타내는 JSON 리소스를 보여줍니다. JSON은 POST 요청의 본문으로 보내야 합니다. 다음 코드 샘플은 FlightClass
를 정의하고 삽입하는 구체적인 방법을 보여줍니다.
리소스
{ "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 } }
자바
// 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
다음 샘플은 FlightObject
를 정의합니다.
리소스
{ "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 } } }
자바
// 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' } }
FlightObject
를 삽입하는 방법에는 두 가지가 있습니다.
첫 번째 방법은 다음 REST URI에 POST
요청을 수행하는 것입니다(본문에 객체를 정의함).
https://walletobjects.googleapis.com/walletobjects/v1/flightObject
두 번째 방법은 FlightObject
정의에서 JSON 웹 토큰(JWT)을 만들고 이 JWT를 Google Pay에 저장 버튼에 넣는 것입니다. 자세한 내용은 REST API 액세스 권한 받기를 참조하세요.
Android API를 사용하여 FlightObject 추가
현재는 Android API를 사용하여 FlightObjects
를 추가할 수 없습니다.
JWT 링크 및 인텐트 사용에 설명된 대로 ACTION_VIEW
인텐트에서 JWT 링크를 호출하여 앱에서 REST API를 사용할 수 있습니다.
여러 승객 저장 버튼
Google Pay에 저장 버튼 또는 웹링크 하나로 같은 운항 구간 또는 여러 운항 구간의 승객을 여러 명 저장할 수 있습니다.
서명할 JSON 웹 토큰(JWT)에서 배열에 패스를 여러 장 포함시킵니다. 다음 예시에서는 여러 패스를 저장하는 버튼 만들기에 나와 있듯이 패스를 여러 장 저장하는 변형된 두 방법을 보여줍니다.
-
이 예시에서는 JWT 하나로 동일 패스의 여러 객체를 저장합니다. 사전에 삽입된 항공편 클래스 및 객체를 사용하며 각 객체의 ID만을 전송합니다.
classId
속성은 선택사항입니다. 이 예시에서는 시연을 목적으로 표시됩니다.{ "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" } ] } }
-
이 예시에서는 클래스는 물론 클래스를 참조하는 여러 객체를 정의합니다. 사용자가 패스를 저장하면 클래스와 객체가 모두 삽입됩니다.
{ "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" } ] } }