GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Fire OS Developer Docs
  • Cross-platform Engines

This view

  • Original page
  • New address

GeezerVison is showing developer.amazon.com — IAP v2.0 Plugin for Unity | Cross-Platform Plugins

Amazon Developer
Alexa
Amazon Appstore
Ring
AWS
Documentation

Console

as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
Ring
AWS
Documentation
Support
Contact Us
My Cases

Console

as

Fire OS Developer Docs
Home
Develop
Test
Publish
Monetize
Engage users
Device specifications
Resources
Cross-platform Engines

Collapse All | Expand All


  • << Fire OS Developer Docs
    • Overview
      • Cross Platform Engine Plugins
      • Implement the IAP Plugin
      • IAP Plugin Methods and Events
      • Release Notes
    • Unity
      • Unity Plugins and Extensions
      • Add a Plugin to Your Unity Project
      • Appstore SDK for Unity
        • Appstore SDK Plugin for Unity
        • Configure Unity App with Public Key
        • DRM in Android Projects Using Unity
        • DRM Methods, Events, and Integration
        • Tiered Subscriptions, Methods, and Events for Unity
        • Appstore SDK Troubleshooting
      • IAP v2.0 Plugin for Unity

    IAP v2.0 Plugin for Unity

    This document provides sample code showing how to use the Unity Plugin for the In-App Purchasing (IAP) v2.0 SDK.

    You can download the Unity plugin here:

    Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of the License is located at https://aws.amazon.com/apache-2-0/ or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

    • Methods and events
    • Initiate method calls in Unity
      • GetUserData
      • Purchase
      • GetProductData
      • GetPurchaseUpdates
      • NotifyFulfillment
    • Handle events in Unity
      • GetUserDataResponse
      • PurchaseResponse
      • GetProductDataResponse
      • GetPurchaseUpdatesResponse
    • Example

    Methods and events

    You can initiate method calls and listen for events. Method calls initiate requests, some of which return a response. Events are asynchronous system-generated messages that are sent in response to method calls to return the requested data to you.

    All of the method calls, except for NotifyFulfillment, request data from the system. When you initiate a request for data, the system immediately returns an object containing a requestId string, which is a unique request identification string. The requested data is returned asynchronously via an event. The NotifyFulfillment method call does not return a response because its purpose is to notify Amazon that your app has delivered the purchased item to the user.

    To get the data contained in an event, you must define a handler function and bind it to an event listener for the specific type of event. The returned data, accessible from within your event handler, includes a unique requestId that matches the requestId that was returned in the request method call. You can use the requestIds to match a specific request to a specific response, if necessary.

    Initiate method calls in Unity

    To initiate a method call, you must perform the following general steps:

    1. Construct the object used to interact with the plugin.
    2. If needed, construct the object used to pass input to the operation.
    3. For asynchronous operations, define a callback function that is invoked when a response is ready.
    4. Call the operation, passing in any required input and/or callback function as arguments.

    GetUserData

    GetUserData initiates a request to retrieve the user ID and marketplace of the currently logged-in user.

    using com.amazon.device.iap.cpt;
    
    // Obtain object used to interact with plugin
    IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
    
    // Call synchronous operation with no input
    RequestOutput response = iapService.GetUserData();
    
    // Get return value
    string requestIdString = response.RequestId;
    

    Purchase

    Purchase initiates a purchase flow for a product.

    using com.amazon.device.iap.cpt;
    
    // Obtain object used to interact with plugin
    IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
    
    // Construct object passed to operation as input
    SkuInput request = new SkuInput();
    
    // Set input value
    request.Sku = "sku";
    
    // Call synchronous operation with input object
    RequestOutput response = iapService.Purchase(request);
    
    // Get return value
    string requestIdString = response.RequestId;
    

    GetProductData

    GetProductData initiates a request to retrieve item data for up to 100 SKUs.

    using com.amazon.device.iap.cpt;
    
    // Obtain object used to interact with plugin
    IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
    
    // Construct object passed to operation as input
    SkusInput request = new SkusInput();
    
    // Create list of SKU strings
    List<string> list = new List<string>();
    list.Add("sku1");
    list.Add("sku2");
    list.Add("sku3");
    
    // Set input value
    request.Skus = list;
    
    // Call synchronous operation with input object
    RequestOutput response = iapService.GetProductData(request);
    
    // Get return value
    string requestIdString = response.RequestId;
    

    GetPurchaseUpdates

    GetPurchaseUpdates initiates a request to retrieve updates about items the customer has purchased and/or cancelled.

    using com.amazon.device.iap.cpt;
    
    // Obtain object used to interact with plugin
    IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
    
    // Construct object passed to operation as input
    ResetInput request = new ResetInput();
    
    // Set input value
    request.Reset = true;
    
    // Call synchronous operation with input object
    RequestOutput response = iapService.GetPurchaseUpdates(request);
    
    // Get return value
    string requestIdString = response.RequestId;
    

    NotifyFulfillment

    NotifyFulfillment notifies Amazon about the purchase fulfillment.

    using com.amazon.device.iap.cpt;
    
    // Obtain object used to interact with plugin
    IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
    
    // Construct object passed to operation as input
    NotifyFulfillmentInput request = new NotifyFulfillmentInput();
    
    // Set input values
    request.ReceiptId = "receiptID";
    request.FulfillmentResult = "FULFILLED";
    
    // Call synchronous operation with input object
    RequestOutput response = iapService.NotifyFulfillment(request);
    

    Handle events in Unity

    To handle an event, you must perform the following general steps:

    1. Construct the object used to interact with the plugin.
    2. Define an event handler.
    3. Register your event handler with an event listener.

    GetUserDataResponse

    GetUserDataResponse returns the response from the GetUserData call.

    using com.amazon.device.iap.cpt;
    
    // Obtain object used to interact with plugin
    IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
    
    // Define event handler
    private void EventHandler(GetUserDataResponse args)
    {
        string requestId = args.RequestId;
        string userId = args.AmazonUserData.UserId;
        string marketplace = args.AmazonUserData.Marketplace;
        string status = args.Status;
    }
    
    // Register for an event
    iapService.AddGetUserDataResponseListener(EventHandler);
    

    PurchaseResponse

    PurchaseResponse returns the response from the Purchase call.

    using com.amazon.device.iap.cpt;
    
    // Obtain object used to interact with plugin
    IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
    
    // Define event handler
    private void EventHandler(PurchaseResponse args)
    {
        string requestId = args.RequestId;
        string userId = args.AmazonUserData.UserId;
        string marketplace = args.AmazonUserData.Marketplace;
        string receiptId = args.PurchaseReceipt.ReceiptId;
        long cancelDate = args.PurchaseReceipt.CancelDate;
        long purchaseDate = args.PurchaseReceipt.PurchaseDate;
        string sku = args.PurchaseReceipt.Sku;
        string productType = args.PurchaseReceipt.ProductType;
        string status = args.Status;
    }
    
    // Register for an event
    iapService.AddPurchaseResponseListener(EventHandler);
    

    GetProductDataResponse

    GetProductDataResponse returns the response from the GetProductData call.

    using com.amazon.device.iap.cpt;
    
    // Obtain object used to interact with plugin
    IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
    
    // Define event handler
    private void EventHandler(GetProductDataResponse args)
    {
        string requestId = args.RequestId;
        Dictionary<string, ProductData> productDataMap = args.ProductDataMap;
        List<string> unavailableSkus = args.UnavailableSkus;
        string status = args.Status;
    
        // for each item in the productDataMap you can get the following values for a given SKU
        // (replace "sku" with the actual SKU)
        string sku = productDataMap["sku"].Sku;
        string productType = productDataMap["sku"].ProductType;
        string price = productDataMap["sku"].Price;
        string title = productDataMap["sku"].Title;
        string description = productDataMap["sku"].Description;
        string smallIconUrl = productDataMap["sku"].SmallIconUrl;
    }
    
    // Register for an event
    iapService.AddGetProductDataResponseListener(EventHandler);
    

    GetPurchaseUpdatesResponse

    GetPurchaseUpdatesResponse returns the response from the GetProductData call.

    using com.amazon.device.iap.cpt;
    
    // Obtain object used to interact with plugin
    IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
    
    // Define event handler
    private void EventHandler(GetPurchaseUpdatesResponse args)
    {
        string requestId = args.RequestId;
        string userId = args.AmazonUserData.UserId;
        string marketplace = args.AmazonUserData.Marketplace;
        List<PurchaseReceipt> receipts = args.PurchaseReceipts;
        string status = args.Status;
        boolean hasMore = args.HasMore;
    
        // for each purchase receipt you can get the following values
        string receiptId = receipts[0].ReceiptId;
        long cancelDate = receipts[0].CancelDate;
        long purchaseDate = receipts[0].PurchaseDate;
        string sku = receipts[0].Sku;
        string productType = receipts[0].ProductType;
    }
    
    // Register for an event
    iapService.AddGetPurchaseUpdatesResponseListener(EventHandler);
    

    Example

    Create a file for Puchaser class. Add the following code:

        using System;
        using System.Collections.Generic;
        using UnityEngine;
        using UnityEngine.UI;
        using com.amazon.device.iap.cpt;
    
        	public class Purchaser : MonoBehaviour, IStoreListener
        	{
        		// Obtain object used to interact with plugin, this is the IAP service object
                   IAmazonIapV2 iapService = AmazonIapV2Impl.Instance;
              }
    

    Add a method that will handle the response from the purchase function first:

        // Define event handler
        private void EventHandler(GetPurchaseUpdatesResponse args)
        {
            string requestId = args.RequestId;
            string userId = args.AmazonUserData.UserId;
            string marketplace = args.AmazonUserData.Marketplace;
            List<PurchaseReceipt> receipts = args.PurchaseReceipts;
            string status = args.Status;
            boolean hasMore = args.HasMore;
    
            // for each purchase receipt you can get the following values
            string receiptId = receipts[0].ReceiptId;
            long cancelDate = receipts[0].CancelDate;
            long purchaseDate = receipts[0].PurchaseDate;
            string sku = receipts[0].Sku;
            string productType = receipts[0].ProductType;
        }
    
        // Register for an event
        iapService.AddGetPurchaseUpdatesResponseListener(EventHandler);
    

    Now we are ready to make some purchases. Paste the below code in any function that is going to actually do the purchasing of a previously-defined SKU "100_gold_stars".

        // Construct object passed to operation as input
        SkuInput request = new SkuInput();
    
        // Set input value
        request.Sku = "100_gold_stars";
    
        // Call synchronous operation with input object
        RequestOutput response = iapService.Purchase(request);
    
        // Get return value
        string requestIdString = response.RequestId;
    

    The method EventHandler() will run when the response from the purchase function is received by the game.


    Last updated: Jan 15, 2022


    • Methods and events
    • Initiate method calls in Unity
      • GetUserData
      • Purchase
      • GetProductData
      • GetPurchaseUpdates
      • NotifyFulfillment
    • Handle events in Unity
      • GetUserDataResponse
      • PurchaseResponse
      • GetProductDataResponse
      • GetPurchaseUpdatesResponse
    • Example
    Follow us:

    Resources

    • Appstore developer blog

    • Technical documentation

    • Amazon Developer Huddle

    Supported devices

    • Amazon Fire TV

    • Fire tablets

    Other services & APIs

    • Small Business Accelerator Program

    • Developer Promotions Console

    • Alexa for video publishers

    • Login with Amazon

    • Frustration-Free Setup

    • Amazon Incentives API

    • Amazon Merch on Demand

    • Amazon Music

    • Fire TV Partners

    Support

    • Appstore Developer Community

    • FAQs

    • Contact us

    Legal

    • Terms & agreements

    • Privacy Notice

    amazon_developer_logo

    © 2010-2026, Amazon.com, Inc. or its affiliates. All Rights Reserved.

    Terms

    Amazon Developer Blog

    Contact Us

    You are visitor 01402503 — GeezerVison does not store the pages you look up.
    Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.