Unable to get any details like product data, user data, subscription from Amazon for FireTv application

34 views Asked by At

I am working on FireTV inApp purchase for my application.
I folowed the steps mentioned at URL: https://developer.amazon.com/docs/in-app-purchasing/iap-implement-iap.html
We are unable to get subscription from Amazon for FireTv application.

I have also created subscription on Amazon with the package.

I am not able to get user details in OnResume method

PurchasingService.getUserData()

Also, I am not able to fetch subscription from Amazon. Please help me on this.

My code is below:

const val parentSKU = "com.myCompany.subscription"
//const val childSKU = "com.myCompany.subscription.monthly"
class NewAccessPage : FragmentActivity(), NetworkCall.MyNetworkCallBack {
    private lateinit var binding: ActivityNewAccessBinding
    private lateinit var currentUserId: String
    private lateinit var currentMarketplace: String
    private lateinit var productSkus: HashSet<String>


@RequiresApi(Build.VERSION_CODES.M)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
       
        PurchasingService.registerListener(applicationContext, purchasingListener)
//      binding.backToBrowse.setOnClickListener { PurchasingService.purchase(parentSKU) }
    }

override fun onResume() {
    super.onResume()

    //getUserData() will query the Appstore for the Users information
    PurchasingService.getUserData()

    // getPurchaseUpdates() will query the Appstore for any previous purchase
    // PurchasingService.getPurchaseUpdates(true)

    // getProductData will validate the SKUs with Amazon Appstore
    productSkus = hashSetOf(parentSKU)

    PurchasingService.getProductData(productSkus)
    Log.e("Validating SKUs", "Validating SKUs with Amazon")
}


private var purchasingListener: PurchasingListener = object : PurchasingListener {
    override fun onUserDataResponse(response: UserDataResponse) {
        when (response.requestStatus) {
            UserDataResponse.RequestStatus.SUCCESSFUL -> {
                currentUserId = response.userData.userId
                currentMarketplace = response.userData.marketplace
                Log.e("Requestmy request", currentUserId+"  "+ currentMarketplace)
            }
            UserDataResponse.RequestStatus.FAILED -> Log.e("Request", response.toString())

            UserDataResponse.RequestStatus.NOT_SUPPORTED -> {
                Log.e("Request", "Request not supported")
            }

            null -> Log.e("Request", "Request null")
        }
    }

    override fun onProductDataResponse(productDataResponse: ProductDataResponse) {
        when (productDataResponse.requestStatus) {
            ProductDataResponse.RequestStatus.SUCCESSFUL -> {
                val products = productDataResponse.productData
                for (key in products.keys) {
                    val product = products[key]
                    Log.e(
                        "Product:",
                        "Product: ${product!!.title} \n Type: ${product.productType}\n SKU: ${product.sku}\n Price: ${product.price}\n Description: ${product.description}\n"
                    )
                }
                for (s in productDataResponse.unavailableSkus) {
                    Log.e("Unavailable SKU:$s", "Unavailable SKU:$s")
                }
            }
            ProductDataResponse.RequestStatus.FAILED -> Log.e("FAILED", "FAILED")

            else -> {
                Log.e("Product", "Not supported")
            }
        }
    }

    override fun onPurchaseResponse(purchaseResponse: PurchaseResponse) {
        when (purchaseResponse.requestStatus) {
            PurchaseResponse.RequestStatus.SUCCESSFUL -> PurchasingService.notifyFulfillment(
                purchaseResponse.receipt.receiptId,
                FulfillmentResult.FULFILLED
            )
            PurchaseResponse.RequestStatus.FAILED -> {
            }
            else -> {
                Log.e("Product", "Not supported")
            }
        }
    }

    override fun onPurchaseUpdatesResponse(response: PurchaseUpdatesResponse) {
        when (response.requestStatus) {
            PurchaseUpdatesResponse.RequestStatus.SUCCESSFUL -> {
                for (receipt in response.receipts) {
                    if (!receipt.isCanceled) {
                        Log.e("Product", "Not supported")
                    }
                }
                if (response.hasMore()) {
                    PurchasingService.getPurchaseUpdates(true)
                }
            }
            PurchaseUpdatesResponse.RequestStatus.FAILED -> Log.d("FAILED", "FAILED")
            else -> {
                Log.e("Product", "Not supported")
            }
        }
    }
}// class closed

Error details:

In product data response

(com.amazon.device.iap.model.ProductDataResponse@2ec27fa, requestId: "81c97561-12aa-4cd5-8b87-1dc575f224ec", unavailableSkus: [], requestStatus: "FAILED", productData: {})

We tried to get user data and product data (SKU). But getting request failed.

0

There are 0 answers