React-native-iap: validateReceiptIos sempre retorna falso

Criado em 15 ago. 2018  ·  11Comentários  ·  Fonte: dooboolab/react-native-iap

Versão do react-native-iap

2.0.0-alpha3
(Eu tentei 1.1.5 também, mesmo problema)

Plataformas em que você enfrentou o erro (IOS ou Android ou ambos?)

iOS

Comportamento esperado

validateReceiptIos retorna 0/1 / verdadeiro para recibos válidos

Comportamento real

validateReceiptIos sempre retorna falso

Ambiente testado (emulador? Dispositivo real?)

Dispositivo real, loja de aplicativos sandbox

Passos para reproduzir o comportamento

Consigo fazer compras de assinaturas de renovação automática com êxito e recebo um recibo da transação. Quando tento validar isso no iOS usando validateReceiptIos (reciboBody, verdadeiro, 55), sempre recebo um retorno falso.

Se eu logar JSON.stringify (res), recebo:
{"status": 21004, "ambiente": "Sandbox"}

Houve um problema semelhante no # 190

1️⃣ good first issue 📱 iOS 🙏 help wanted

Comentários muito úteis

@LinusU @dooboolab
Acabei de adicionar o segredo compartilhado no corpo do recibo e agora parece funcionar.
Talvez eu tenha perdido em algum lugar dos documentos? Ou não é assim que deveria acontecer?

  const receiptBody = {
        'receipt-data': product.transactionReceipt,
        'password': '*********'
      };

(ainda usando a versão 2.0.0-alpha3)

Todos 11 comentários

Em que linha você está inserindo o log? 🤔

Além disso, qual versão do React Native você está executando?

@fabianunger Strange. Deve ser corrigido em # 190. Você poderia compartilhar alguns códigos?

"react": "^ 16.3.2"
"reagir nativo": "^ 0.55.3"

`` `
validate = assíncrono (produto) => {
tentar {
console.log (produto);

  const receiptBody = {
    'receipt-data': product.transactionReceipt,
  };
  console.log(receiptBody);

  const result = await RNIap.validateReceiptIos(receiptBody, true, 55);
  console.log(result);

} catch(err) {
  console.warn(err.code, err.message);
  Alert.alert(err.message);
}

};

`` `

@fabianunger Você poderia experimentar esta versão e ver se ela apresenta uma mensagem de erro mais detalhada?

npm install LinusU/react-native-iap#ios-validate

@LinusU @dooboolab
Acabei de adicionar o segredo compartilhado no corpo do recibo e agora parece funcionar.
Talvez eu tenha perdido em algum lugar dos documentos? Ou não é assim que deveria acontecer?

  const receiptBody = {
        'receipt-data': product.transactionReceipt,
        'password': '*********'
      };

(ainda usando a versão 2.0.0-alpha3)

@LinusU
Eu testei também com a sua versão: mesmo resultado.
Como resposta, recebo {"status": 21004, "environment": "Sandbox"}.

Funciona adicionando o segredo compartilhado como a 'senha' dentro do corpo do recibo. Em geral: esta é a forma normal mesmo?

@fabianunger Você fez certo. Para mais informações ref aqui. Será bom atualizar o documento duro.

O que é shared secret e onde posso encontrá-lo?

Validar Recibo no modo de produção retornando {status: 21007}, alguém pode ajudar mw com isso.

desde já, obrigado

Olhe aqui:

https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html

"21007: Este recibo é do ambiente de teste, mas foi enviado ao ambiente de produção para verificação. Envie-o para o ambiente de teste."

use este endereço para verificação do ambiente de teste: https://sandbox.itunes.apple.com/verifyReceipt

Esta página foi útil?
0 / 5 - 0 avaliações