React-native-iap: validateReceiptIos всегда возвращает false

Созданный на 15 авг. 2018  ·  11Комментарии  ·  Источник: dooboolab/react-native-iap

Версия react-native-iap

2.0.0-альфа3
(Я тоже пробовал 1.1.5, та же проблема)

Платформы, на которых вы столкнулись с ошибкой (IOS или Android или оба?)

iOS

Ожидаемое поведение

validateReceiptIos возвращает 0/1 / true для действительных квитанций

Фактическое поведение

validateReceiptIos всегда возвращает false

Протестированная среда (Эмулятор? Настоящее устройство?)

Настоящее устройство, песочница, магазин приложений

Шаги по воспроизведению поведения

Я могу успешно совершать покупки автоматически возобновляемой подписки и получать квитанцию ​​о транзакции. Когда я пытаюсь проверить это на iOS с помощью validateReceiptIos (receiveBody, true, 55), мне всегда возвращается false.

Если я регистрирую JSON.stringify (res), я получаю:
{"status": 21004, "environment": "Sandbox"}

Аналогичная проблема была на № 190

1️⃣ good first issue 📱 iOS 🙏 help wanted

Самый полезный комментарий

@LinusU @dooboolab
Я только что добавил общий секрет в ReceiverBody, и теперь все должно работать.
Может просто где-то в документации пропустил? Или это не так?

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

(все еще используется версия 2.0.0-alpha3)

Все 11 Комментарий

В какую строку вы вставляете журнал? 🤔

Кроме того, какая версия React Native у вас установлена?

@fabianunger Странно. Должен быть исправлен в # 190. Не могли бы вы поделиться некоторыми кодами?

"реагировать": "^ 16.3.2"
"react-native": "^ 0.55.3"

``
validate = async (product) => {
пытаться {
console.log (продукт);

  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 Не могли бы вы попробовать эту версию и посмотреть, дает ли она более подробное сообщение об ошибке?

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

@LinusU @dooboolab
Я только что добавил общий секрет в ReceiverBody, и теперь все должно работать.
Может просто где-то в документации пропустил? Или это не так?

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

(все еще используется версия 2.0.0-alpha3)

@LinusU
Я тестировал это также с вашей версией: тот же результат.
В ответ я получаю {"status": 21004, "environment": "Sandbox"}.

Работает, добавляя общий секрет в качестве «пароля» в ReceiverBody. В общем: все-таки это обычный способ?

@fabianunger Вы все сделали правильно. Для получения дополнительной информации см. Здесь. Будет хорошо обновлять док жестко.

Что такое shared secret и где его найти?

Что такое shared secret и где его найти?

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

Подтвердите получение в производственном режиме, возвращающее {status: 21007}, может ли кто-нибудь помочь мне с этим.

заранее спасибо

Смотри сюда:

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

«21007: Это квитанция из тестовой среды, но она была отправлена ​​в производственную среду для проверки. Вместо этого отправьте ее в тестовую среду».

используйте этот адрес для проверки тестовой среды: https://sandbox.itunes.apple.com/verifyReceipt

Была ли эта страница полезной?
0 / 5 - 0 рейтинги