React-native-iap: validateReceiptIos siempre devuelve falso

Creado en 15 ago. 2018  ·  11Comentarios  ·  Fuente: dooboolab/react-native-iap

Versión de react-native-iap

2.0.0-alpha3
(También probé 1.1.5, el mismo problema)

Plataformas a las que se enfrentó el error (¿IOS o Android o ambos?)

iOS

Comportamiento esperado

validateReceiptIos devuelve 0/1 / verdadero para recibos válidos

Comportamiento real

validateReceiptIos siempre devuelve falso

Entorno probado (¿Emulador? ¿Dispositivo real?)

Dispositivo real, tienda de aplicaciones sandbox

Pasos para reproducir el comportamiento

Puedo realizar compras de suscripción renovables automáticamente con éxito y recibir un recibo de transacción. Cuando trato de validar esto en iOS usando validateReceiptIos (receiveBody, true, 55) siempre me devuelven falso.

Si registro JSON.stringify (res) obtengo:
{"status": 21004, "environment": "Sandbox"}

Hubo un problema similar en el n . ° 190

1️⃣ good first issue 📱 iOS 🙏 help wanted

Comentario más útil

@LinusU @dooboolab
Acabo de agregar el secreto compartido en el cuerpo del recibo y ahora parece que funciona.
¿Quizás simplemente me lo perdí en algún lugar de los documentos? ¿O no es así como se supone que debe suceder?

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

(todavía usando la versión 2.0.0-alpha3)

Todos 11 comentarios

¿En qué línea está insertando el registro? 🤔

Además, ¿qué versión de React Native estás ejecutando?

@fabianunger Extraño. Debería arreglarse en # 190. ¿Podría compartir algunos códigos?

"reaccionar": "^ 16.3.2"
"react-native": "^ 0.55.3"

''
validar = async (producto) => {
tratar {
console.log (producto);

  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 ¿Podrías probar esta versión y ver si te da un mensaje de error más detallado?

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

@LinusU @dooboolab
Acabo de agregar el secreto compartido en el cuerpo del recibo y ahora parece que funciona.
¿Quizás simplemente me lo perdí en algún lugar de los documentos? ¿O no es así como se supone que debe suceder?

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

(todavía usando la versión 2.0.0-alpha3)

@LinusU
Lo probé también con tu versión: Mismo resultado.
Como respuesta, obtengo {"status": 21004, "environment": "Sandbox"}.

Funciona agregando el secreto compartido como la "contraseña" dentro del cuerpo del recibo. En general: ¿Es esta la forma habitual de todos modos?

@fabianunger Lo has hecho bien. Para obtener más información ref aquí. Será bueno actualizar el documento.

¿Qué es el shared secret y dónde puedo encontrarlo?

¿Qué es el shared secret y dónde puedo encontrarlo?

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

Validar Reciept en modo de producción devolviendo {status: 21007}, ¿alguien puede ayudar a mw con esto?

Gracias por adelantado

Mira aquí:

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

"21007: Este recibo es del entorno de prueba, pero se envió al entorno de producción para su verificación. En su lugar, envíelo al entorno de prueba".

use esta dirección para la verificación del entorno de prueba: https://sandbox.itunes.apple.com/verifyReceipt

¿Fue útil esta página
0 / 5 - 0 calificaciones