Przypadki użycia są takie same we wszystkich kategoriach kart. Na przykład wszystkie karty lojalnościowe, karty podarunkowe, oferty specjalne, bilety na wydarzenia, lotnicze karty pokładowe i bilety na przejazdy można dodać do aplikacji Google Pay na kilka sposobów. Aby dowiedzieć się więcej, wybierz jedną z tych metod:
Dodanie przycisku na stronie
Dodaj przycisk Zapisz w Google Pay w swojej witrynie, aby umożliwić użytkownikom zapisywanie w aplikacji Google Pay kart lojalnościowych, kart podarunkowych, ofert specjalnych, biletów na wydarzenia, lotniczych kart pokładowych i biletów na przejazdy.
Gdy użytkownik kliknie ten przycisk, na serwery Google zostanie wysłany token sieciowy JSON (JWT) jego karty lub biletu. Na serwerach Google na podstawie tokena JWT zostanie utworzony odpowiedni zasób Object
, który zostanie połączony z kontem użytkownika.
Aby zintegrować przycisk Zapisz w Google Pay ze swoją witryną, wykonaj 3 czynności:
- Określ
Class
rozszerzeń obiektów. - Utwórz token JWT reprezentujący
Object
. - Dodaj przycisk Zapisz w Google Pay do swojej strony.
Pokazane kroki dotyczą kart lojalnościowych, ale są takie same w przypadku wszystkich kart.
1. Określ klasy rozszerzeń obiektów
Najpierw określ LoyaltyClass
. Aby wstawić LoyaltyClass
, wyślij żądanie POST
do tego identyfikatora URI REST:
https://walletobjects.googleapis.com/walletobjects/v1/loyaltyClass
Aby włączyć ścisłą analizę błędów i wykrywać dodatkowe błędy, takie jak powtarzające się pola identyfikatorów, dodaj parametr strict=true
do identyfikatora URI REST, jak w tym przykładowym identyfikatorze URI:
https://walletobjects.googleapis.com/walletobjects/v1/loyaltyClass?strict=true
Poniższy przykład przedstawia zasób JSON reprezentujący LoyaltyClass
. Należy go wysłać w treści żądania POST
. Poniżej znajdziesz przykładowy kod pokazujący, jak określić i wstawić LoyaltyClass
.
Zasób
{ "accountIdLabel": "Member Id", "accountNameLabel": "Member Name", "id": "2945482443380251551.ExampleClass1", "issuerName": "Baconrista", "kind": "walletobjects#loyaltyClass", "textModulesData": [ { "header": "Rewards details", "body": "Welcome to Baconrista rewards. Enjoy your rewards for being a loyal customer. " + "10 points for every dollar spent. Redeem your points for free coffee, bacon and more!" } ], "linksModuleData": { "uris": [ { "kind": "walletobjects#uri", "uri": "https://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": "https://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg", "description": "Coffee beans" } } } ], "messages": [{ "header": "Welcome to Banconrista Rewards!", "body": "Featuring our new bacon donuts.", "kind": "walletobjects#walletObjectMessage" }], "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 }], "programLogo": { "kind": "walletobjects#image", "sourceUri": { "kind": "walletobjects#uri", "uri": "https://farm8.staticflickr.com/7340/11177041185_a61a7f2139_o.jpg" } }, "programName": "Baconrista Rewards", "rewardsTier": "Gold", "rewardsTierLabel": "Tier", "reviewStatus": "underReview", "hexBackgroundColor": "#ffffff", "heroImage": { "kind": "walletobjects#image", "sourceUri": { "kind": "walletobjects#uri", "uri": "https://farm8.staticflickr.com/7302/11177240353_115daa5729_o.jpg" } } }
Java
// Define the Image Module Data List<ImageModuleData> imageModuleData = new ArrayList<ImageModuleData>(); ImageModuleData image = new ImageModuleData().setMainImage( new Image().setSourceUri( new ImageUri().setUri("http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg"))); imageModuleData.add(image); // Define Text Module Data List<TextModuleData> textModulesData = new ArrayList<TextModuleData>(); TextModuleData textModuleData = new TextModuleData().setHeader("Rewards details") .setBody( "Welcome to Baconrista rewards. Enjoy your rewards for being a loyal customer. 10 points for ever dollar spent. Redeem your points for free coffee, bacon and more!"); textModulesData.add(textModuleData); // Define Links Module Data List<Uri> uris = new ArrayList<Uri>(); 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 general messages List<Message> messages = new ArrayList<Message>(); Message message = new Message() .setHeader("Welcome to Baconrista") .setBody("Featuring our new bacon donuts."); messages.add(message); // Define Geofence locations List<LatLongPoint> locations = new ArrayList<LatLongPoint>(); 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)); // Create class LoyaltyClass wobClass = new LoyaltyClass() .setId('2945482443380251551.ExampleClass1') .setIssuerName("Baconrista") .setProgramName("Baconrista Rewards") .setProgramLogo( new Image().setSourceUri(new ImageUri() .setUri("http://farm8.staticflickr.com/7340/11177041185_a61a7f2139_o.jpg"))) .setRewardsTierLabel("Tier").setRewardsTier("Gold") .setImageModulesData(imageModuleData) .setTextModulesData(textModulesData) .setLinksModuleData(linksModuleData) .setAccountNameLabel("Member Name").setAccountIdLabel("Member Id") .setMessages(messages) .setReviewStatus("underReview").setMultipleDevicesAndHoldersAllowedStatus("multipleHolders") .setLocations(locations); LoyaltyClass response = client.loyaltyclass().insert(wobClass).execute();
PHP
// Define text module data. $textModulesData = array( array( 'header' => 'Rewards details', 'body' => 'Welcome to Baconrista rewards. Enjoy your rewards for being a loyal customer. ' . '10 points for every dollar spent. Redeem your points for free coffee, bacon and more!' ) ); // 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://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg' ); $uriModuleImageInstance->setDescription('Coffee beans'); $imageModuleImageInstance = new Google_Service_Walletobjects_Image(); $imageModuleImageInstance->setSourceUri($uriModuleImageInstance); $imagesModuleData = new Google_Service_Walletobjects_ImageModuleData(); $imagesModuleData->setMainImage($imageModuleImageInstance); $imagesModuleDataArr = array ($imagesModuleData); // Messages to be displayed to all users of Wallet Objects. $messages = array(array( 'header' => 'Welcome to Banconrista Rewards!', 'body' => 'Featuring our new bacon donuts.', 'kind' => 'walletobjects#walletObjectMessage' )); $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 program logo. $uriInstance = new Google_Service_Walletobjects_ImageUri(); $imageInstance = new Google_Service_Walletobjects_Image(); $uriInstance->setUri( 'http://farm8.staticflickr.com/7340/11177041185_a61a7f2139_o.jpg' ); $imageInstance->setSourceUri($uriInstance); // Create wallet class. $wobClass = new Google_Service_Walletobjects_LoyaltyClass(); $wobClass->setId('2945482443380251551.ExampleClass1'); $wobClass->setIssuerName('Baconrista'); $wobClass->setProgramName('Baconrista Rewards'); $wobClass->setProgramLogo($imageInstance); $wobClass->setRewardsTierLabel('Tier'); $wobClass->setRewardsTier('Gold'); $wobClass->setAccountNameLabel('Member Name'); $wobClass->setAccountIdLabel('Member Id'); $wobClass->setLinksModuleData($linksModuleData); $wobClass->setTextModulesData($textModulesData); $wobClass->setImageModulesData($imagesModuleDataArr); $wobClass->setMessages($messages); $wobClass->setReviewStatus('underReview'); $wobClass->setMultipleDevicesAndHoldersAllowedStatus('multipleHolders'); $wobClass->setLocations($locations); $service->loyaltyclass->insert($wobClass);
Python
loyalty_class = { 'accountIdLabel': 'Member Id', 'accountNameLabel': 'Member Name', 'multipleDevicesAndHoldersAllowedStatus': 'multipleHolders', 'id': '2945482443380251551.ExampleClass1', 'issuerName': 'Baconrista', 'kind': 'walletobjects#loyaltyClass', '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 }], 'textModulesData': [{ 'header': 'Rewards details', 'body': 'Welcome to Baconrista rewards. Enjoy your rewards for being a loyal customer. ' + '10 points for ever dollar spent. Redeem your points for free coffee, bacon and more! ' }], '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': 'Coffee beans' } } } ], 'messages': [{ 'header': 'Welcome to Banconrista Rewards!', 'body': 'Featuring our new bacon donuts.', 'kind': 'walletobjects#walletObjectMessage' }], 'programLogo': { 'kind': 'walletobjects#image', 'sourceUri': { 'kind': 'walletobjects#uri', 'uri': 'http://farm8.staticflickr.com/7340/11177041185_a61a7f2139_o.jpg' } }, 'programName': 'Baconrista Rewards', 'rewardsTier': 'Gold', 'rewardsTierLabel': 'Tier', 'reviewStatus': 'underReview', } api_request = service.loyaltyclass().insert(body=loyalty_class) api_response = api_request.execute()
Pełną listę wszystkich pól LoyaltyClass
znajdziesz w dokumentacji klasy LoyaltyClass.
2. Utwórz token JWT reprezentujący obiekt
Najpierw określ LoyaltyObject
, jak w tych przykładach:
Zasób
{ "classId": "2945482443380251551.ExampleClass1", "id": "2945482443380251551.ExampleObject1", "accountId": "1234567890", "accountName": "Jane Doe", "barcode": { "alternateText": "12345", "type": "qrCode", "value": "28343E3" }, "textModulesData": [{ "header": "Jane's Baconrista Rewards", "body": "Save more at your local Mountain View store Jane. " + "You get 1 bacon fat latte for every 5 coffees purchased. " + "Also just for you, 10% off all pastries in the Mountain View store." }], "linksModuleData": { "uris": [ { "kind": "walletobjects#uri", "uri": "https://www.baconrista.com/myaccount?id=1234567890", "description": "My Baconrista Account" }] }, "infoModuleData": { "labelValueRows": [{ "columns": [{ "label": "Next Reward in", "value": "2 coffees" }, { "label": "Member Since", "value": "01/15/2013" }] }, { "columns": [{ "label": "Local Store", "value": "Mountain View" }] }], "showLastUpdateTime": "true" }, "loyaltyPoints": { "balance": { "string": "5000" }, "label": "Points", "pointsType": "points" }, "messages": [{ "header": "Jane, welcome to Banconrista Rewards!", "body": "Thanks for joining our program. Show this message to " + "our barista for your first free coffee on us!" }], "state": "active" }
Java
// Define Barcode Barcode barcode = new Barcode().setType("qrCode") .setValue("28343E3") .setAlternateText("12345"); // Define Points LoyaltyPoints points = new LoyaltyPoints() .setLabel("Points") .setPointsType("points") .setBalance(new LoyaltyPointsBalance().setString("500")); // Define Text Module Data List<TextModuleData> textModulesData = new ArrayList<TextModuleData>(); TextModuleData textModuleData = new TextModuleData() .setHeader("Jane's Baconrista Rewards") .setBody( "Save more at your local Mountain View store Jane. You get 1 bacon fat latte for every 5 coffees purchased. Also just for you, 10% off all pastries in the Mountain View store."); textModulesData.add(textModuleData); // Define Links Module Data List<Uri> uris = new ArrayList<Uri>(); Uri uri1 = new Uri().setDescription("My Baconrista Account") .setUri("http://www.baconrista.com/myaccount?id=1234567890"); uris.add(uri1); LinksModuleData linksModuleData = new LinksModuleData().setUris(uris); // Define Info Module List<LabelValue> row0cols = new ArrayList<LabelValue>(); LabelValue row0col0 = new LabelValue().setLabel("Next Reward in") .setValue("2 coffees"); LabelValue row0col1 = new LabelValue().setLabel("Member Since") .setValue("01/15/2013"); row0cols.add(row0col0); row0cols.add(row0col1); List<LabelValue> row1cols = new ArrayList<LabelValue>(); LabelValue row1col0 = new LabelValue().setLabel("Local Store") .setValue("Mountain View"); row1cols.add(row1col0); List<LabelValueRow> rows = new ArrayList<LabelValueRow>(); LabelValueRow row0 = new LabelValueRow().setColumns(row0cols); LabelValueRow row1 = new LabelValueRow().setColumns(row1cols); rows.add(row0); rows.add(row1); InfoModuleData infoModuleData = new InfoModuleData() .setShowLastUpdateTime(true) .setLabelValueRows(rows); // Define general messages List<Message> messages = new ArrayList<Message>(); Message message = new Message() .setHeader("Hi Jane!") .setBody("Thanks for joining our program. Show this message to " + "our barista for your first free coffee on us!"); messages.add(message); // Define Wallet Instance LoyaltyObject object = new LoyaltyObject() .setClassId('2945482443380251551.ExampleClass1').setId('2945482443380251551.ExampleObject1') .setState("active").setBarcode(barcode).setInfoModuleData(infoModuleData) .setAccountName("Jane Doe").setTextModulesData(textModulesData) .setMessages(messages).setLinksModuleData(linksModuleData) .setAccountId("1234567890").setLoyaltyPoints(points);
PHP
$barcode = new Google_Service_Walletobjects_Barcode(); $barcode->setAlternateText('12345'); $barcode->setType('qrCode'); $barcode->setValue('28343E3'); // Define text module data. $textModulesData = array( array( 'header' => 'Janes Baconrista Rewards', 'body' => 'Save more at your local Mountain View store Jane. ' . 'You get 1 bacon fat latte for every 5 coffees purchased. ' . 'Also just for you, 10% off all pastries in the Mountain View store.' ) ); // Define links module data. $linksModuleData = new Google_Service_Walletobjects_LinksModuleData(); $uris = array ( array( 'uri' => 'http://www.baconrista.com/myaccount?id=1234567890', 'kind' => 'walletobjecs#uri', 'description' => 'My Baconrista Account' ) ); $linksModuleData->setUris($uris); // Define label values. $labelValueRows = array( array( 'columns' => array( array( 'label' => 'Next Reward in', 'value' => '2 coffees' ), array( 'label' => 'Member Since', 'value' => '01/15/2013' ) ) ), array( 'columns' => array( array( 'label' => 'Local Store', 'value' => 'Mountain View' ) ) ) ); // Define info module data. $infoModuleData = new Google_Service_Walletobjects_InfoModuleData(); $infoModuleData->setShowLastUpdateTime(true); $infoModuleData->setLabelValueRows($labelValueRows); // Messages to be displayed. $messages = array(array( 'header' => 'Jane, welcome to Banconrista Rewards!', 'body' => 'Thanks for joining our program. Show this message to '. 'our barista for your first free coffee on us!', 'kind' => 'walletobjects#walletObjectMessage' )); // Reward points a user has. $points = new Google_Service_Walletobjects_LoyaltyPoints(); $balance = new Google_Service_Walletobjects_LoyaltyPointsBalance(); $balance->setString('500'); $points->setBalance($balance); $points->setLabel('Points'); $points->setPointsType('points'); // Create wallet object. $wobObject = new Google_Service_Walletobjects_LoyaltyObject(); $wobObject->setClassId('2945482443380251551.ExampleClass1'); $wobObject->setId('2945482443380251551.ExampleObject1'); $wobObject->setState('active'); $wobObject->setBarcode($barcode); $wobObject->setInfoModuleData($infoModuleData); $wobObject->setLinksModuleData($linksModuleData); $wobObject->setTextModulesData($textModulesData); $wobObject->setAccountName('Jane Doe'); $wobObject->setAccountId('1234567890'); $wobObject->setLoyaltyPoints($points); $wobObject->setMessages($messages);
Python
loyalty_object = { 'classId' : '2945482443380251551.ExampleClass1', 'id' : '2945482443380251551.ExampleObject1', 'accountId': '1234567890', 'accountName': 'Jane Doe', 'barcode': { 'alternateText' : '12345', 'type' : 'qrCode', 'value' : '28343E3' }, 'textModulesData': [{ 'header': 'Jane\'s Baconrista Rewards', 'body': 'Save more at your local Mountain View store Jane. ' + ' You get 1 bacon fat latte for every 5 coffees purchased. ' + 'Also just for you, 10% off all pastries in the Mountain View store.' }], 'linksModuleData': { 'uris': [ { 'kind': 'walletobjects#uri', 'uri': 'http://www.baconrista.com/myaccount?id=1234567890', 'description': 'My Baconrista Account' }] }, 'infoModuleData': { 'labelValueRows': [{ 'columns': [{ 'label': 'Next Reward in', 'value': '2 coffees' }, { 'label': 'Member Since', 'value': '01/15/2013' }] },{ 'columns': [{ 'label': 'Local Store', 'value': 'Mountain View' }] }], 'showLastUpdateTime': 'true' }, 'messages': [{ 'header': 'Jane, welcome to Banconrista Rewards', 'body': 'Thanks for joining our program. Show this message to ' + 'our barista for your first free coffee on us!', 'kind': 'walletobjects#walletObjectMessage' }], 'loyaltyPoints': { 'balance': { 'string': '500' }, 'label': 'Points', 'pointsType': 'points' }, 'state': 'active' }
Zakoduj LoyaltyObject
jako token JWT za pomocą klucza prywatnego konta usługi OAuth 2.0. Poniżej znajdziesz fragmenty pokazujące, jak zakodować token JWT w różnych językach. Karta protokołu zawiera niezakodowany token JWT. Objaśnienia pól tokena JWT znajdziesz w opisie tokena JWT Google Pay API for Passes.
Protokół
{ "iss": "example_service_account@developer.gserviceaccount.com", "aud": "google", "typ": "savetoandroidpay", "iat": 1368029586, "payload": { "eventTicketClasses": [{ ... //Event ticket Class JSON }], "eventTicketObjects": [{ ... //Event ticket Object JSON }], "flightClasses": [{ ... //Flight Class JSON }], "flightObjects": [{ ... //Flight Object JSON }], "giftCardClasses": [{ ... //Gift card Class JSON }], "giftCardObjects": [{ ... //Gift card Object JSON }], "loyaltyClasses": [{ ... //Loyalty Class JSON }], "loyaltyObjects": [{ ... //Loyalty Object JSON }], "offerClasses": [{ ... //Offer Class JSON }], "offerObjects": [{ ... //Offer Object JSON }], "transitClasses": [{ ... //Transit Class JSON }], "transitObjects": [{ ... //Transit Object JSON }] }, "origins": ["http://baconrista.com", "https://baconrista.com"] }
Java
WobCredentials credentials = null; WobUtils utils = null; // Instantiate the WobUtils class which contains handy functions // Wob utils can be found in the quickstart sample try { credentials = new WobCredentials( ServiceAccountEmailAddress, ServiceAccountPrivateKeyPath, ApplicationName, IssuerId); utils = new WobUtils(credentials); } catch (GeneralSecurityException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // Add valid domains for the Save to Wallet button List<String> origins = new ArrayList<String>(); origins.add("http://baconrista.com"); origins.add("https://baconrista.com"); origins.add(req.getScheme() + "://" + req.getServerName() + ":" + req.getLocalPort()); //Generate Objects and Classes here //........ WobPayload payload = new WobPayload(); payload.addObject({WalletObject/WalletClass}); // Convert the object into a Save to Android Pay Jwt String jwt = null; try { jwt = utils.generateSaveJwt(payload, origins); } catch (SignatureException e) { e.printStackTrace(); }
PHP
$requestBody = [ "iss"=> SERVICE_ACCOUNT_EMAIL_ADDRESS, "aud" => "google", "typ" => "savetoandroidpay", "iat"=> time(), "payload" => { "eventTicketClasses" => [ ], # Event ticket classes "eventTicketObjects" => [ ], # Event ticket objects "flightClasses" => [ ], # Flight classes "flightObjects" => [ ], # Flight objects "giftCardClasses" => [ ], # Gift card classes "giftCardObjects" => [ ], # Gift card objects "loyaltyClasses" => [ ], # Loyalty classes "loyaltyObjects" => [ ], # Loyalty objects "offerClasses" => [ ], # Offer classes "offerObjects" => [ ], # Offer objects "transitClasses" => [ ], # Transit classes "transitObjects" => [ ] # Transit objects }, "origins" => ["http://baconrista.com", "https://baconrista.com"] ] // Generate the Save to Android Pay Jwt echo $jwt = $assertObj->makeSignedJwt($requestBody, $client);
Python
jwt = { 'iss': config.SERVICE_ACCOUNT_EMAIL_ADDRESS, 'aud': 'google', 'typ': 'savetoandroidpay', 'iat': int(time.time()), 'payload': { 'webserviceResponse': { 'result': 'approved', 'message': 'Success.' }, 'eventTicketClasses': [], # Event ticket classes 'eventTicketObjects': [], # Event ticket objects 'flightClasses': [], # Flight classes 'flightObjects': [], # Flight objects 'giftCardClasses': [], # Gift card classes 'giftCardObjects': [], # Gift card objects 'loyaltyClasses': [], # Loyalty classes 'loyaltyObjects': [], # Loyalty objects 'offerClasses': [], # Offer classes 'offerObjects': [], # Offer objects 'transitClasses': [], # Transit classes 'transitObjects': [] # Transit objects }, 'origins' : ['http://baconrista.com', 'https://baconrista.com'] } // Generate the Save to Android Pay Jwt signer = crypt.Signer.from_string(app_key) signed_jwt = crypt.make_signed_jwt(signer, jwt) response = webapp2.Response(signed_jwt)
Bezpieczna długość zakodowanego tokena JWT to 1800 znaków. Tokeny JWT nie powinny przekraczać tej długości. Jeśli długość przekroczy 1800 znaków, zapis nie będzie możliwy, ponieważ token zostanie przycięty w przeglądarkach. Obiekty zakodowane w tokenach JWT powinny być małe i zawierać tylko dane dotyczące użytkownika. Utwórz klasę obiektu przed tokenem JWT, aby zapisać w niej większość danych. Jeśli obiekt przekracza limit, spróbuj utworzyć go za pomocą interfejsu API REST i wysłać w tokenie JWT tylko identyfikator obiektu.
3. Dodaj przycisk Zapisz w Google Pay
Dodaj ten skrypt do strony, na której chcesz wyświetlić przycisk Zapisz w Google Pay:
<script src="https://apis.google.com/js/platform.js" type="text/javascript"></script>
Potem wstaw tag przestrzeni nazw g:savetoandroidpay
, który określa miejsce i atrybuty przycisku Zapisz w Google Pay. Dodaj wcześniej utworzony token JWT.
<g:savetoandroidpay jwt="{jwt_generated}" onsuccess="successHandler" onfailure="failureHandler" size="small" theme="light" ></g:savetoandroidpay>
Przycisk Zapisz w Google Pay powinien być widoczny na Twojej stronie.
Więcej informacji o przycisku JavaScript na stronie znajdziesz w dokumentacji dotyczącej interfejsu API podczas używania Google Pay API for Passes na stronach internetowych.