React-native-iap: validateReceiptIos renvoie toujours false

Créé le 15 août 2018  ·  11Commentaires  ·  Source: dooboolab/react-native-iap

Version de react-native-iap

2.0.0-alpha3
(J'ai aussi essayé la version 1.1.5, même problème)

Plateformes sur lesquelles vous avez rencontré l'erreur (IOS ou Android ou les deux?)

iOS

Comportement attendu

validateReceiptIos renvoie 0/1 / true pour les reçus valides

Comportement réel

validateReceiptIos renvoie toujours false

Environnement testé (émulateur? Real Device?)

Appareil réel, magasin d'applications sandbox

Étapes pour reproduire le comportement

Je suis en mesure de faire des achats d'abonnements renouvelables automatiquement et de recevoir un reçu de transaction. Lorsque j'essaie de valider cela sur iOS en utilisant validateReceiptIos (receptionBody, true, 55), je reçois toujours false.

Si je connecte JSON.stringify (res), j'obtiens:
{"status": 21004, "environment": "Sandbox"}

Il y avait un problème similaire au n ° 190

1️⃣ good first issue 📱 iOS 🙏 help wanted

Commentaire le plus utile

@LinusU @dooboolab
Je viens d'ajouter le secret partagé dans le reçuBody et maintenant il semble que ça marche.
Peut-être que je viens de le manquer quelque part dans la documentation? Ou n'est-ce pas ainsi que cela est censé arriver?

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

(toujours en utilisant la version 2.0.0-alpha3)

Tous les 11 commentaires

À quelle ligne insérez-vous le journal? 🤔

aussi, quelle version de React Native utilisez-vous?

@fabianunger Strange. Doit être corrigé dans # 190. Pouvez-vous partager quelques codes?

"réagir": "^ 16,3,2"
"react-native": "^ 0,55,3"

''
validate = async (produit) => {
essayez {
console.log (produit);

  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 Pourriez-vous essayer cette version et voir si elle vous donne un message d'erreur plus détaillé?

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

@LinusU @dooboolab
Je viens d'ajouter le secret partagé dans le reçuBody et maintenant il semble que ça marche.
Peut-être que je viens de le manquer quelque part dans la documentation? Ou n'est-ce pas ainsi que cela est censé arriver?

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

(toujours en utilisant la version 2.0.0-alpha3)

@LinusU
Je l'ai testé aussi avec votre version: Même résultat.
En réponse, j'obtiens {"status": 21004, "environment": "Sandbox"}.

Fonctionne en ajoutant le secret partagé comme «mot de passe» dans le reçuBody. En général: est-ce la manière habituelle de toute façon?

@fabianunger Vous avez bien fait les choses. Pour plus d'informations, référez-vous ici. Sera bon de mettre à jour la doc difficile.

Qu'est-ce que le shared secret et où puis-je le trouver?

Qu'est-ce que le shared secret et où puis-je le trouver?

https://www.appypie.com/faqs/how-can-i-get-shared-secret-key-for-in-app-purchase

Validez la réception en mode production en retournant {status: 21007}, quelqu'un peut-il aider mw avec cela.

Merci d'avance

Regardez ici:

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

"21007: Ce reçu provient de l'environnement de test, mais il a été envoyé à l'environnement de production pour vérification. Envoyez-le plutôt à l'environnement de test."

utilisez cette adresse pour la vérification de l'environnement de test: https://sandbox.itunes.apple.com/verifyReceipt

Cette page vous a été utile?
0 / 5 - 0 notes