Code snippets

This page contains code snippets for 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://www.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://www.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 Uri()
            .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_Uri();
$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://www.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 to Google Pay.