程式碼片段

本頁面包含下列類別和物件的程式碼片段:

JSON LoyaltyClass

定義 LoyaltyClass 後,請發送 POST 要求至下列 REST URI 來插入這個類別:

https://walletobjects.googleapis.com/walletobjects/v1/loyaltyClass

在 REST URI 中新增 strict=true 參數以啟用嚴格錯誤剖析,並找出如重複 ID 欄位等其他錯誤:

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

下列範例顯示代表 LoyaltyClass 的 JSON 資源。必須在 POST 要求的內容中傳送 JSON。下列程式碼範例具體示範如何定義和插入 LoyaltyClass

資源

    {
      "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()
    

JSON LoyaltyObject

下列範例定義 LoyaltyObject

資源

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

插入 LoyaltyObject 的方式有兩種。

第一種方法是發送 POST 要求 (內容包含已定義的物件) 至下列 REST URI:

https://walletobjects.googleapis.com/walletobjects/v1/loyaltyObject

第二種方法則是透過 LoyaltyObject 定義來建立 JSON Web Token (JWT),然後將 JWT 置入 [儲存至 Google Pay] 按鈕。詳情請參閱新增網站按鈕一節。

使用 Android API 新增 LoyaltyObject

您可以使用 Android API 電子錢包 SDK 套件插入下列 LoyaltyObject 範例:

    // Define Points
    LoyaltyPoints points = LoyaltyPoints.newBuilder()
        .setLabel("Points")
        .setType("points")
        .setBalance(LoyaltyPointsBalance.newBuilder().setString("500").build()).build();

    // Define Text Module Data
    List textModulesData = new ArrayList();
    TextModuleData textModuleData = new TextModuleData("Jane's Baconrista Rewards", "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 uris = new ArrayList();
    UriData uri1 = new UriData("http://www.baconrista.com/myaccount?id=1234567890","My Baconrista Account");
    uris.add(uri1);

    List imageUris = new ArrayList();
    UriData uri2 = new UriData("http://examplesite/images/exampleimage2.jpg", "Image Description");
    imageUris.add(uri2);

    // Define Info Module
    List row0cols = new ArrayList();
    LabelValue row0col0 = new LabelValue("Next Reward in","2 coffees");
    LabelValue row0col1 = new LabelValue("Member Since", "01/15/2013");
    row0cols.add(row0col0);
    row0cols.add(row0col1);

    List row1cols = new ArrayList();
    LabelValue row1col0 = new LabelValue("Local Store", "Mountain View");
    row1cols.add(row1col0);

    List rows = new ArrayList();
    LabelValueRow row0 = LabelValueRow.newBuilder().addColumns(row0cols).build();
    LabelValueRow row1 = LabelValueRow.newBuilder().addColumns(row1cols).build();

    rows.add(row0);
    rows.add(row1);

    // Define general messages
    List messages = new ArrayList();
    WalletObjectMessage message =  WalletObjectMessage.newBuilder()
        .setHeader("Hi Jane!")
        .setBody("Thanks for joining our program. Show this message to " +
            "our barista for your first free coffee on us!")
        .build();
    messages.add(message);

    // Define Geolocations

    LatLng location = new LatLng(37.422601, -122.085286);

    List locations = new ArrayList();
    locations.add(location);

    LoyaltyWalletObject wob = LoyaltyWalletObject
        .newBuilder()
        .setClassId("2967745143867465930.LoyaltyClass")
        .setId("2967745143867465930.LoyaltyObject")
        .setState(WalletObjectsConstants.State.ACTIVE)
        .setAccountId("1234567890")
        .setAccountName("Jane Doe")
        .setIssuerName("Baconrista")
        .setProgramName("Baconrista Rewards")
        .setBarcodeType("qrCode")
        .setBarcodeValue("28343E3")
        .setBarcodeAlternateText("12345")
        .setLoyaltyPoints(points)
        .addTextModulesData(textModulesData)
        .addLinksModuleDataUris(uris)
        .addInfoModuleDataLabelValueRows(rows)
        .addImageModuleDataMainImageUris(imageUris)
        .addMessages(messages)
        .addLocations(locations)
        .build();

詳情請參閱儲存至 Google Pay 一文。