Code snippets

Select one of the following pass verticals to learn more about how it can be used.


This section contains code snippets for gift cards. It covers the following classes and objects:

JSON GiftCardClass

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

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

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

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

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

Resource

{
  "kind" : "walletobjects#giftCardClass",
  "id" : "1234567890.ExampleGCClass",
  "issuerName" : "Baconrista",
  "merchantName" : "Baconrista",
  "programLogo" : {
    "kind" : "walletobjects#image",
    "sourceUri" : {
      "kind" : "walletobjects#uri",
      "uri" : "https://farm8.staticflickr.com/7340/11177041185_a61a7f2139_o.jpg"
    }
  },
  "textModulesData" : [
    {
      "header" : "Where to Redeem",
      "body" : "All US gift cards are redeemable in any US and Puerto Rico" +
                " Baconrista retail locations, or online at Baconrista.com where" +
                " available, for merchandise or services."
    }
  ],
  "linksModuleData" : {
    "uris" : [
      {
        "kind" : "walletobjects#uri",
        "uri" : "https://www.baconrista.com/",
        "description" : "Baconrista"
      }
    ]
  },
  "locations" : [{
    "kind" : "walletobjects#latLongPoint",
    "latitude" : 37.422601,
    "longitude" : -122.085286
  }],
  "reviewStatus" : "underReview",
  "hexBackgroundColor": "#ffffff",
  "heroImage": {
    "kind": "walletobjects#image",
    "sourceUri": {
      "kind": "walletObjects#uri",
      "uri": "https://farm8.staticflickr.com/7302/11177240353_115daa5729_o.jpg"
    }
  }
}

Java

// Define Text Module Data
List<TextModuleData> textModulesData = new ArrayList<TextModuleData>();

TextModuleData textModuleData = new TextModuleData().setHeader("Where to Redeem")
    .setBody("All US gift cards are redeemable in any US and Puerto Rico " +
           "Baconrista retail locations, or online at Baconrista.com where" +
           "available, for merchandise or services.");
textModulesData.add(textModuleData);

// Define Links Module Data
List<Uri> uris = new ArrayList<Uri>();
Uri uri1 = new Uri().setDescription("Baconrista").setUri("http://www.baconrista.com/");
uris.add(uri1);
LinksModuleData linksModuleData = new LinksModuleData().setUris(uris);

// Define Geofence locations
List<LatLongPoint> locations = new ArrayList<LatLongPoint>();
locations.add(new LatLongPoint().setLatitude(37.422601).setLongitude(
    -122.085286));

// Create class
GiftCardClass wobClass = new GiftCardClass()
    .setId("1234567890.ExampleGCClass")
    .setIssuerName("Baconrista")
    .setMerchantName("Baconrista")
    .setProgramLogo(
        new Image().setSourceUri(new ImageUri()
            .setUri("http://farm8.staticflickr.com/7340/11177041185_a61a7f2139_o.jpg")))
    .setTextModulesData(textModulesData)
    .setLinksModuleData(linksModuleData)
    .setReviewStatus("underReview").setMultipleDevicesAndHoldersAllowedStatus('multipleHolders')
    .setLocations(locations);

response = client.giftcardclass().insert(wobClass).execute();

PHP

// Define text module data.
$textModulesData = array(
    array(
        'header' => 'Where to Redeem',
        'body' => 'All US gift cards are redeemable in any US and Puerto Rico ' .
            'Baconrista retail locations, or online at Baconrista.com where ' .
            'available, for merchandise or services.'
    )
);
// Define links module data.
$linksModuleData = new Google_Service_Walletobjects_LinksModuleData();
$uris = array (
    array(
        'uri' => 'http://www.baconrista.com',
        'kind' => 'walletobjecs#uri',
        'description' => 'Baconrista'
    )
);
$linksModuleData->setUris($uris);

// A list of locations at which the Gift card Class can be used.
$locations = array(
    array(
        'kind' => 'walletobjects#latLongPoint',
        'latitude' => 37.422601,
        'longitude' => -122.085286
    )
);
// 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.
$giftCardClass = new Google_Service_Walletobjects_GiftCardClass();
$giftCardClass->setId('1234567890.ExampleGCClass');
$giftCardClass->setIssuerName('Baconrista');
$giftCardClass->setMerchantName('Baconrista');
$giftCardClass->setProgramLogo($imageInstance);
$giftCardClass->setLinksModuleData($linksModuleData);
$giftCardClass->setTextModulesData($textModulesData);
$giftCardClass->setReviewStatus('underReview');
$giftCardClass->setMultipleDevicesAndHoldersAllowedStatus('multipleHolders');
$giftCardClass->setLocations($locations);

$service->giftcardclass->insert($giftCardClass);

Python

giftcard_class = {
  'kind': 'walletobjects#giftCardClass',
  'id': '1234567890.ExampleGCClass',
  'issuerName': 'Baconrista',
  'merchantName': 'Baconrista',
  'issuerData': {
      'kind': 'walletobjects#typedValue'
  },
  'programLogo': {
      'kind': 'walletobjects#image',
      'sourceUri': {
          'kind': 'walletobjects#uri',
          'uri': 'http://farm8.staticflickr.com/7340/11177041185_a61a7f2139_o.jpg'
      }
  },
  'textModulesData': [{
    'header': 'Where to Redeem',
    'body': 'All US gift cards are redeemable in any US and Puerto Rico' +
            ' Baconrista retail locations, or online at Baconrista.com where'
            ' available, for merchandise or services.'
  }],
  'linksModuleData': {
    'uris': [
      {
        'kind': 'walletobjects#uri',
        'uri': 'http://www.baconrista.com',
        'description': 'Baconrista'
      }]
  },
  'locations': [{
      'kind': 'walletobjects#latLongPoint',
      'latitude': 37.422601,
      'longitude': -122.085286
  }],
  'multipleDevicesAndHoldersAllowedStatus': 'multipleHolders',
  'reviewStatus': 'underReview'
}
api_request = service.giftcardclass().insert(body=giftcard_class)
api_response = api_request.execute()

JSON GiftCardObject

The following samples define the GiftCardObject:

Resource

{
  "kind" : "walletobjects#giftCardObject",
  "classId" : "1234567890.ExampleGCClass",
  "id" : "1234567890.ExampleGCObject",
  "cardNumber" : "123jkl4889",
  "pin" : "1111",
  "eventNumber" : "123456",
  "balance" : {
    "kind" : "walletobjects#money",
    "micros" : 20000000,
    "currencyCode" : "USD"
  },
  "balanceUpdateTime" : {
    "date" : '2014-01-12T23:20:50.52Z'
  },
  "barcode" : {
    "alternateText" : "12345",
    "type" : "qrCode",
    "value" : "28343E3"
  },
  "textModulesData" : [{
    "header" : "Earn double points",
    "body" : "Jane, don't forget to use your Baconrista Rewards when " +
              "paying with this gift card to earn additional points"
  }],
  "linksModuleData" : {
    "uris" : [
      {
        "kind" : "walletobjects#uri",
        "uri" : "https://www.baconrista.com/mybalance?id=1234567890",
        "description" : "My Baconrista Gift Card Purchases"
      }]
  },
  "state" : "active"
}

Java

Barcode barcode = new Barcode().setType("qrCode")
    .setValue("28343E3")
    .setAlternateText("12345")

Money balance = new Money();
balance.setCurrencyCode("USD");
balance.setMicros(20000000L);

DateTime balanceUpdateTime = new DateTime();
balanceUpdateTime.setDate(new com.google.api.client.util.DateTime(new Date()));

// Define Text Module Data
List<TextModuleData> textModulesData = new ArrayList<TextModuleData>();
TextModuleData textModuleData = new TextModuleData()
    .setHeader("Earn double points")
    .setBody("Jane, don't forget to use your Baconrista Rewards when " +
                "paying with this gift card to earn additional points");
textModulesData.add(textModuleData);

// Define Links Module Data
List<Uri> uris = new ArrayList<Uri>();
Uri uri1 = new Uri().setDescription("My Baconrista Gift Card Purchases")
    .setUri("http://www.baconrista.com/mybalance?id=1234567890");
uris.add(uri1);
LinksModuleData linksModuleData = new LinksModuleData().setUris(uris);

// Define Wallet Instance
GiftCardObject object = new GiftCardObject()
    .setClassId("1234567890.ExampleGCClass").setId("1234567890.ExampleGCObject")
    .setState("active").setBarcode(barcode)
    .setTextModulesData(textModulesData)
    .setLinksModuleData(linksModuleData)
    .setBalance(balance)
    .setBalanceUpdateTime(balanceUpdateTime)
    .setEventNumber("123456").setCardNumber("123jkl4889").setPin("1111");

PHP

// Define barcode type and value.
$barcode = new Google_Service_Walletobjects_Barcode();
$barcode->setAlternateText('12345');
$barcode->setType('qrCode');
$barcode->setValue('28343E3');
// Define text module data.
$textModulesData = array(
    array(
        'header' => 'Earn double points',
        'body' => 'Jane, don\'t forget to use your Baconrista Rewards when '.
                  'paying with this gift card to earn additional points'
    )
);
// Define links module data.
$linksModuleData = new Google_Service_Walletobjects_LinksModuleData();
$uris = array (
    array(
        'uri' => 'http://www.baconrista.com/mybalance?id=1234567890',
        'kind' => 'walletobjecs#uri',
        'description' => 'My Baconrista Gift Card Purchases'
    )
);
$linksModuleData->setUris($uris);

$balance = new Google_Service_Walletobjects_Money();
$balance->setKind('walletobjects#money');
$balance->setMicros(20000000);
$balance->setCurrencyCode('USD');

$balanceUpdateTime = new Google_Service_Walletobjects_DateTime();
date_default_timezone_set('UTC');
$balanceUpdateTime->setDate(date("Y-m-d\TH:i:s.u\Z"));

// Create wallet object.
$giftCardObject = new Google_Service_Walletobjects_GiftCardObject();
$giftCardObject->setClassId("1234567890.ExampleGCClass");
$giftCardObject->setId("1234567890.ExampleGCObject");
$giftCardObject->setState('active');
$giftCardObject->setBarcode($barcode);
$giftCardObject->setLinksModuleData($linksModuleData);
$giftCardObject->setTextModulesData($textModulesData);
$giftCardObject->setBalance($balance);
$giftCardObject->setBalanceUpdateTime($balanceUpdateTime);
$giftCardObject->setCardNumber('123jkl4889');
$giftCardObject->setEventNumber('123456');
$giftCardObject->setPin('1111');

Python

giftcard_object = {
    'kind' : 'walletobjects#giftCardObject',
    'classId' : '1234567890.ExampleGCClass',
    'id' : '1234567890.ExampleGCObject',
    'cardNumber' : '123jkl4889',
    'pin' : '1111',
    'eventNumber' : '123456',
    'balance' : {
      'kind' : 'walletobjects#money',
      'micros' : 20000000,
      'currencyCode' : 'USD'
    },
    'balanceUpdateTime' : {
      'date' : datetime.datetime.utcnow().isoformat("T") + "Z"
    },
    'barcode' : {
        'alternateText' : '12345',
        'type' : 'qrCode',
        'value' : '28343E3'
    },
    'textModulesData': [{
      'header': 'Earn double points',
      'body': 'Jane, don\'t forget to use your Baconrista Rewards when  ' +
              'paying with this gift card to earn additional points. '
    }],
    'linksModuleData': {
      'uris': [
        {
          'kind': 'walletobjects#uri',
          'uri': 'http://www.baconrista.com/mybalance?id=1234567890',
          'description': 'My Baconrista Gift Card Purchases'
        }]
    },
    'state': 'active'
}

There are two ways to insert the GiftCardObject.

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

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

The second way is to create a JWT from the GiftCardObject definition and put the JWT in a Save to Google Pay button. For more information, see Add a web button.

Add GiftCardObject with Android API

The following example GiftCardObject can be inserted using the Android API wallet SDK package:

//Define Messages Data
List messages = new ArrayList();
WalletObjectMessage message = WalletObjectMessage.newBuilder()
        .setHeader("Hi Jane!")
        .setBody("Thanks for saving your gift card.")
        .build();
messages.add(message);

// Define Links Module Data
List linkModulesData = new ArrayList();
UriData uri1 = new UriData("http://www.baconrista.com/mybalance?id=1234567890", "My Baconrista Gift Card Purchases");
linkModulesData.add(uri1);

// Define Text Module Data
List textModulesData = new ArrayList();
TextModuleData textModuleData = new TextModuleData("Jane's Baconrista Gift Card", "Use your gift card when you purchase your next bacon fat latte!");
textModulesData.add(textModuleData);

// Build and Return New Gift Card Object
return GiftCardWalletObject.newBuilder()
        .setId("2967745143867465930.GiftCardObjectBarcodeTextTest4")
        .setClassId("2967745143867465930.GiftCardClass1501161237")
        .setState(WalletObjectsConstants.State.ACTIVE)
        .setCardNumber("1234567890")
        .setPin("1234")
        .setTitle("This is my GiftCard")
        .setBalanceMicros(1000000)
        .setBalanceCurrencyCode("USD")
        .setBalanceUpdateTime(1425943338)
        .setEventNumber("1")
        .setIssuerName("Baconrista")
        .setBarcodeType("qrCode")
        .setBarcodeValue("28343E3")
        .setBarcodeAlternateText("12345")
        .addMessages(messages)
        .addLinksModuleDataUris(linkModulesData)
        .addTextModulesData(textModulesData)
        .build();

For more information, see Save passes to Google Pay.