The SDK Catalog functionality allows users to retrieve, save and purchase from merchant catalogs.

Each catalog is created by a merchant and contains categories of products that the user can select and purchase.

There are two ways in which catalogs can be retrieved:

  • Catalog Workflow: A catalog is returned as part of a CatalogWorkflow which is triggered by a user scaning a Bidco tag.
  • Profile Catalogs: A list of saved catalogs can be retrieved from the user's profile.

Note: For those using RxJava, all the methods described below are available in the RxCatalogManager

Retrieving a Catalog From The Workflow

Each time a user interacts with a Bidco tag that results in a CatalogWorkflow, a catalog is returned and automatically added to the user's profile.
The workflow also contains a possible set of coupons that the user can redeem on future purchases. The coupons are automatically saved to the user's profile but returned here so they can be displayed to the user.

Retrieve the catalog from the CatalogWorkflow. (see triggers and workflows for how to get the workflow).

Catalog catalog = workflow.getCatalog();
Merchant merchant = workflow.getMerchant();
List<Coupon> coupons = workflow.getTriggeredCoupons();
// Display coupons to user

Retrieving Catalogs From The User's Profile

Each time a user scans a Bidco tag associated with a catalog, that catalog is saved to the user's profile.

To obtain all catalogs that have been saved to the profile:

CatalogManager catalogManager = ManagerFactory.getInstance().getCatalogManager();
catalogManager.getCatalogs(new PowaTagCallback<List<Catalog>>() {
	public void onSuccess(List<Catalog> catalogs) {
		// Display the list of catalogs to user showing the catalog Name, Description, merchant logo and any images.
	public void onError(@NonNull PowaTagException e) {

Deleting a Catalog From the User's Profile

When a user no longer needs a catalog they will choose to delete it from the profile:

catalogManager.deleteCatalog(catalog, new PowaTagCallback<Void> () {
	public void onSuccess(Voide voide) {
		// Catalog has been removed from the user's profile
	public void onError(@NonNull PowaTagException e) {

Retreiving Categories From The Catalog

Categories only exist within a catalog so once the user has selected the Catalog they would like to work with, you can retrieve its categories.

catalogManager.getCategories(selectedCatalog, new PowaTagCallback<List<Category>>() {
	public void onSuccess(List<Category> category) {
		// Display the list of categories to user showing the catalog Name, Description and any images.
	public void onError(@NonNull PowaTagException e) {

Retrieving Products For a Category

You can now retrieve all the products linked to the category selected by the user:

Page page = new Page(20);
ManagerFactory.getInstance().getProductManager().getProducts(category, page, new PowaTagCallback<List<Product>> () {
	public void onSuccess(List<Product> product) {
		// Display the list of products to the user
	public void onError(@NonNull PowaTagException e) {

Next Steps

When a catalog is retrieved from a user's profile the catalog only contains a reference to the merchant who created it. In this case there is one final step to perform before products can be added to a basket.

Retrieve the merchant for the selected catalog:

Merchant merchant = ManagerFactory.getInstance().getMerchantManger().getMerchant(catalog, page, new PowaTagCallback<Merchant> () {
	public void onSuccess(Merchant merchant) {
		// Use the merchant to get the basket
	public void onError(PowaTagException e) {

From here the products can be added to the basket.