Search code examples
androidgoogle-play-developer-api

Android Publisher API - get extra data (detect which user made purchase)


For in-app subscription I'm using this code (in Kotlin)

iabHelper.launchSubscriptionPurchaseFlow(act, "month", 1001, this@SubscriptionActivity, extraKey)

After this I'm making request to server for purchase verifying. For verification on server I'm using this code (in Go)

result, err := androidpublisher.Purchases.Subscriptions.Get(packageName, product, token).Do()
success := err == nil

How to get extraKey which I passed in app? I need it to know, which user made purchase


Solution

  • I was confused by parameter name "extraData", and was looking for same field in request result. But when I looked at the IabHelper source, I found this

    @param extraData Extra data (developer payload), which will be returned with the purchase * data when the purchase completes. This extra data will be permanently bound to that * purchase and will always be returned when the purchase is queried

    So, extra data is in DeveloperPayload field

    result, err := publ.Purchases.Subscriptions.Get(packageName, product, token).Do()
    success := err == nil && result.DeveloperPayload == extraKey
    

    Also, note, which can be useful for those, who aren't reading docs

    Note: Do not use the user's email address in the payload string, since that address may change.