---
title: "Compras no aplicativo para iOS, parte 5: lista de códigos SKError e como resolvê-los."
description: "A lista de SKErrors no iOS. Que problemas podem ocorrer durante a transação e que ações devem ser tomadas pelo desenvolvedor."
url: "https://adapty.io/pt/blog/ios-in-app-purchases-part-5-list-of-skerror-codes-and-how-to-handle-them/"
language: "pt"
slug: "ios-in-app-purchases-part-5-list-of-skerror-codes-and-how-to-handle-them"
category: "adapty-updates"
date: "2021-08-30T00:00:00.000Z"
date_modified: "2021-08-30T00:00:00.000Z"
author: "Kirill Potekhin"
---

# Compras no aplicativo para iOS, parte 5: lista de códigos SKError e como resolvê-los.

Neste posto, vou abordar os SKErrors: quais os problemas que eles acarretam e o que fazer com eles. Para cada erro, trabalharemos três aspectos: por que ele ocorre, como resolvê-los e que mensagem exibir na notificação de erro.

## SKError.Code.unknown, código 0

**O que significa.** Um erro ocorreu por uma razão desconhecida.

**Como corrigir.** Nenhuma ação precisa ser tomada por parte dos desenvolvedores. Este erro também ocorre quando se tenta comprar produtos ao usar as versões de simuladores do iOS 14 e superiores. Neste caso, para comprar um produto, use o teste local do StoreKit ou um dispositivo/emulador real com a versão iOS inferior ao iOS 14.

**Qual mensagem deve ser exibida.** Infelizmente, não é possível realizar a compra no momento devido a um motivo desconhecido. Tentar novamente mais tarde.

![6129480992e3bf3eee2b6498 6zrtcxb0l aojbaykonkyks ytivmmkytagofibbph6zuprqv 4p1h8bjunif2yqzsush8mv26sehrxknqi ajrtygdos2nrly shjoisglkplfpgmxsnc hfvmsodaxqcii5sjz3ds0](https://adapty.io/wp-content/uploads/2023/01/6129480992e3bf3eee2b6498_6zrtcxb0l-aojbaykonkyks-ytivmmkytagofibbph6zuprqv_4p1h8bjunif2yqzsush8mv26sehrxknqi-ajrtygdos2nrly_shjoisglkplfpgmxsnc-hfvmsodaxqcii5sjz3ds0.png)

## SKError.Code.clientInvalid, código 1

**O que significa.** O usuário não consegue fazer uma compra. Por exemplo, uma criança tenta comprar um produto quando a função de controle dos pais no dispositivo está ativada.

**Como corrigir.** Nenhuma ação precisa ser tomada por parte dos desenvolvedores.

**Qual mensagem deve ser exibida.** A compra não pode ser concluída. Troque de conta ou dispositivo.

## SKError.Code.paymentCancelled, código 2

**O que significa.** O usuário chegou à tela de pagamento, mas mudou de ideia sobre fazer a compra e clicou em “cancelar”.

**Como corrigir.** Do ponto de vista técnico, não ocorreu nenhum erro e, neste caso, nada precisa ser feito. Do ponto de vista comercial, você pode continuar trabalhando com o usuário em questão, por exemplo, oferecendo um desconto.

**Qual mensagem deve ser exibida.** Neste caso, você tem duas opções. A mais fácil é não fazer nada. No entanto, você pode tentar recuperar o usuário com uma mensagem como esta: “Você cancelou sua compra. Gostaria de experimentar uma assinatura com desconto?”.

## SKError.Code.paymentInvalid, código 3

**O que significa.** Por algum motivo, o pagamento falhou: o cartão expirou ou não havia saldo suficiente para esta compra.

**Como corrigir.** Nenhuma ação precisa ser tomada por parte dos desenvolvedores.

**Qual mensagem deve ser exibida.** Sua compra foi recusada. Verifique as informações de pagamento e certifique-se de que sua conta tem saldo suficiente.

## SKError.Code.paymentNotAllowed, código 4

**O que significa.** Provavelmente, o cartão de ter algumas restrições de compra: os limites são fixos ou a função de compras on-line não está disponível.

**Como corrigir.** Nenhuma ação precisa ser tomada por parte dos desenvolvedores.

**Qual mensagem deve ser exibida.** Não é possível concluir a compra para a forma de pagamento selecionada. Verifique se o método de pagamento selecionado permite a realização de compras on-line.

## SKError.Code.storeProductNotAvailable, código 5

**O que significa.** O usuário está tentando comprar um produto que não está disponível na região em que esta loja é utilizada.

**Como corrigir.** O desenvolvedor deve verificar a disponibilidade dos produtos na região e loja do usuário. Para essa finalidade, você pode usar [SKStorefront](https://developer.apple.com/documentation/storekit/skstorefront).

**Qual mensagem deve ser exibida.** Este produto não está disponível na sua região. Mude de loja e tente novamente.

## SKError.Code.cloudServicePermissionDenied, código 6

**O que significa.** O usuário não permitiu o acesso às informações de seu serviços no iCloud.

**Como corrigir.** Nenhuma ação precisa ser tomada por parte dos desenvolvedores.

**Qual mensagem deve ser exibida. Para ser honesto,** eu nunca me deparei com esse erro. Na verdade, você pode simplesmente escrever que a compra foi recusada.

## SKError.Code.cloudServiceNetworkConnectionFailed, código 7

**O que significa.** Ao fazer uma compra, o dispositivo não estava conectado à Internet.

**Como corrigir.** Nenhuma ação precisa ser tomada por parte dos desenvolvedores.

**Qual mensagem deve ser exibida.** A compra não pode ser concluída porque seu dispositivo não está conectado à Internet.  Tente novamente mais tarde usando uma conexão estável com a Internet.

## SKError.Code.cloudServiceRevoked, código 8

**O que significa.** Este dispositivo não tem acesso ao serviço de pagamento do StoreKit. Geralmente, este erro ocorre no Sandbox.

**Como corrigir.** Crie um novo usuário no Sandbox ou simplesmente tente repetir a operação.

**Qual mensagem deve ser exibida.** Lamento,mas ocorreu um erro.

## SKError.Code.privacyAcknowledgementRequired, código 9

**O que significa.** O usuário não aceitou os termos de uso na AppStore. Como consta na documentação, “o usuário ainda não aceitou a política de privacidade da Apple para o Apple Music”. Na verdade, parece um erro, pois não há motivo para se mencionar a Apple Music.

**Como corrigir.** Nenhuma ação precisa ser tomada por parte dos desenvolvedores.

**Qual mensagem deve ser exibida.** A compra não pode ser concluída porque você não aceitou os termos de uso da AppStore. Confirme o seu consentimento nas configurações e depois retorne para concluir a compra.

## SKError.Code.unauthorizedRequestData, código 10

**O que significa.** Sua ID do aplicativo não contempla o direito necessário para o uso do StoreKit.

**Como corrigir.** Você precisa concluir o processo de configuração de compras no aplicativo.

**Qual mensagem deve ser exibida.** Ocorreu um erro. Tente novamente mais tarde.

## SKError.Code.invalidOfferIdentifier, código 11

**O que significa.** O usuário está tentando comprar um produto com uma oferta promocional incorreta.

**Como corrigir.** Nenhuma ação precisa ser tomada por parte dos desenvolvedores.

**Qual mensagem deve ser exibida.** A oferta promocional é inválida ou expirou.

## SKError.Code.invalidSignature, código 12

**O que significa.** A assinatura da oferta promocional para a solicitação do StoreKit foi gerada incorretamente.

**Como corrigir.** Verifique como a assinatura foi gerada e corrija os erros. Se você usar a Adapty, faça o download da Chave de Assinatura.

**Qual mensagem deve ser exibida.** Infelizmente, ocorreu um erro ao aplicar o código promocional. Tente novamente mais tarde.

## SKError.Code.missingOfferParams, código 13

**O que significa.** Os parâmetros da oferta promocional foram incorretamente configurados.

**Como corrigir.** Verifique e corrija os parâmetros da sua oferta promocional.

**Qual mensagem deve ser exibida.** Infelizmente, ocorreu um erro ao aplicar a oferta promocional. Tente novamente mais tarde.

## SKError.Code.invalidOfferPrice, código 14

**O que significa.** O usuário está tentando comprar um produto por um preço irrelevante. Provavelmente, o preço exibido na AppStore perdeu a validade.

**Como corrigir.** Faça a atualização do preço para esta oferta na AppStore.

**Qual mensagem deve ser exibida.** Infelizmente, sua compra não pode ser concluída. Tente novamente mais tarde.

## Conclusão

O tratamento correto dos erros melhora a experiência do usuário e pode recuperar alguns dos usuários que não conseguiram efetuar o pagamento imediato da assinatura por algum motivo. Estes são os erros mais comuns ao implementar compras em um aplicativo no sistema iOS:

- SKError.Code.unknown, um erro desconhecido;
- SKError.Code.paymentCancelled, quando o usuário cancela a compra;
- SKError.Code.paymentInvalid, quando não é possível processar o pagamento.

Na realidade, o tratamento de erros e a implementação de compras são processos complicados. Portanto, eu recomendo tentar o [SDK da Adapty para iOS](https://adapty.io/sdk/ios/), que facilita a implementação de compras no aplicativo e oferece outros benefícios, como analytics de assinaturas, análise de coorte, testes a/b para paywalls e validação de recibos do lado do servidor.
