Guia passo a passo para implementar compras no aplicativo em um aplicativo Flutter para Android e iOS: código e dicas.

Tempo de leitura: 2 minutes

A implementação de compras no aplicativo (IAP) em um aplicativo Flutter para Android envolve o uso do pacote in_app_purchase, que fornece uma API simples e flexível para lidar com IAPs no iOS e no Android. O pacote usa as APIs nativas de compra no aplicativo em cada plataforma, para que possa lidar com assinaturas e compras únicas.

aqui está um guia passo a passo para implementar compras no aplicativo (IAP) em um aplicativo Flutter para Android, incluindo trechos de código para ajudar você a entender cada etapa:

 

Passo 1:

Adicione o pacote in_app_purchase ao seu arquivo pubspec.yaml.

dependencies:
  flutter:
    sdk: flutter
  in_app_purchase: ^3.1.4

 

Passo 2:

Configure seu aplicativo para IAP criando uma nova lista de produtos no Google Play Developer Console. Você precisará carregar o APK do seu aplicativo no console, bem como criar uma lista dos produtos (ou itens no aplicativo) que deseja vender. Certifique-se de ter o ID do produto pronto para as próximas etapas.

 

Passo 3:

Inicialize o plug-in IAP chamando InAppPurchaseConnection.enablePendingPurchases() e

InAppPurchaseConnection.instance.isAvailable() em sua função principal.

void main() {
InAppPurchaseConnection.enablePendingPurchases();
 runApp(MyApp());
}

Passo 4:

Recupere a lista de produtos disponíveis chamando InAppPurchaseConnection.instance.queryPastPurchases()

e a

InAppPurchaseConnection.instance.queryProductDetails().

Future<void> _retrieveAvailableItems() async {
  final QueryPurchaseDetailsResponse purchaseResponse =
  await InAppPurchaseConnection.instance
        .queryPastPurchases();

  final QueryProductDetailsResponse productResponse =
  await InAppPurchaseConnection.instance.
        queryProductDetails(_productIds);

  availableItems = productResponse.productDetails;
  pastPurchases = purchaseResponse.pastPurchases;
 }

Passo 5:

Inicie uma compra chamando InAppPurchaseConnection.instance.buyNonConsumable() ou InAppPurchaseConnection.instance.buySubscription() e passando o ID do produto do item a ser comprado.

void _buyProduct(ProductDetails item) {
  InAppPurchaseConnection.instance.
        buyNonConsumable(productDetails: item);
}

Passo 6:

Ouça o purchaseUpdatedStream para receber atualizações sobre o status da compra.

InAppPurchaseConnection.instance.purchaseUpdatedStream
   .listen((purchaseDetails) {
 // Handle purchase here
});

Passo 7:

Depois que a compra for concluída, verifique se a compra é válida ou não ligando para VerifyPurchase(purchasedItem).

void _handlePurchase(PurchaseDetails purchase) {
  if (purchase.status == 
       PurchaseStatus.purchased) {
    if (Platform.isIOS) {
      InAppPurchaseConnection.instance
            .completePurchase(purchase);
    }
    _verifyPurchase(purchase);
  } else {
    // Handle failed purchase
  }
}

Passo 8:

Consuma a compra se ela não for consumível.

 void _verifyPurchase(PurchaseDetails purchase)
{
 InAppPurchaseConnection.instance
     .consumePurchase(purchase);
}

É importante observar que, no Android, você também precisará configurar um servidor para lidar com o processo de verificação da compra, pois o pacote de compra no aplicativo fornece apenas o cliente

 

Diferença entre implementar compras no aplicativo no Flutter para Android e iOS:

A principal diferença entre implementar compras in-app no Flutter para Android e iOS é a forma como as compras são tratadas pela plataforma.

No Android, as compras no aplicativo são feitas pela Google Play Store, e o desenvolvedor precisa configurar seu próprio servidor para verificação da compra. O desenvolvedor pode usar o método Security.verifyPurchase() da biblioteca de faturamento do Google Play para verificar a compra no servidor.

Já no iOS, as compras in-app são realizadas pela App Store, e a verificação da compra é feita pela própria App Store. O desenvolvedor não precisa configurar seu próprio servidor para verificação de compra.

Outra diferença é que no iOS, o aplicativo deve usar a mesma conta da App Store da conta do desenvolvedor que criou o aplicativo para testar as compras no aplicativo.

Ambas as plataformas têm APIs semelhantes para implementar compras no aplicativo, mas você deve ter em mente as diferenças acima e configurar de acordo.