react-native-iap
react-native-iap copied to clipboard
validateReceiptIos() not working
Description
I am trying to validate an iOS receipt on the device. I am following along what is written in the documentation here: https://react-native-iap.dooboolab.com/docs/guides/receipts. This should be pretty straigh forward. What I am actually getting as a response is a {"status": 21002}
. When I validate the receipt with another library (https://github.com/sibelius/iap-receipt-validator) I am able to validate the receipt. I wonder why it is not working with react-native-iap.
Expected Behavior
A validated receipt from Apple.
Screenshots
Environment:
- react-native-iap: 11.0.0-rc.7
- react-native: 0.71.7
- Platforms (iOS, Android, emulator, simulator, device): iOS Simulator
To Reproduce This does not work
import {validateReceiptIos} from 'react-native-iap';
const isTestEnvironment = __DEV__;
try {
const decodedReceipt = await validateReceiptIos(
JSON.stringify({
'receipt-data': '...',
password: APP_STORE_CONNECT_SHARED_SECRET,
}),
isTestEnvironment,
);
console.log(decodedReceipt);
} catch (error) {
console.warn('Cannot validate receipt.', error);
}
{"status": 21002}
This on the contrary works
import iapReceiptValidator from 'iap-receipt-validator';
const receipt = '...';
const isProduction = __DEV__;
const validatedReceipt = iapReceiptValidator(
APP_STORE_CONNECT_SHARED_SECRET,
!isProduction,
);
try {
const validationData = await validatedReceipt(receipt);
console.log(validationData);
} catch (err) {
console.warn(
'Receipt could not be validated. ',
err.valid,
err.error,
err.message,
);
return false;
}
{"environment": "Sandbox", "latest_receipt": "...", "latest_receipt_info": [{"expires_date": "2023-05-09 16:28:44 Etc/GMT", "expires_date_ms": "1683649724000", "expires_date_pst": "2023-05-09 09:28:44 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year", "purchase_date": "2023-05-09 15:28:44 Etc/GMT", "purchase_date_ms": "1683646124000", "purchase_date_pst": "2023-05-09 08:28:44 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000327606606", "web_order_line_item_id": "2000000026963068"}, {"expires_date": "2023-05-09 15:23:55 Etc/GMT", "expires_date_ms": "1683645835000", "expires_date_pst": "2023-05-09 08:23:55 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription", "purchase_date": "2023-05-09 15:18:55 Etc/GMT", "purchase_date_ms": "1683645535000", "purchase_date_pst": "2023-05-09 08:18:55 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000327599893", "web_order_line_item_id": "2000000026962711"}, {"expires_date": "2023-05-09 15:18:55 Etc/GMT", "expires_date_ms": "1683645535000", "expires_date_pst": "2023-05-09 08:18:55 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription", "purchase_date": "2023-05-09 15:13:55 Etc/GMT", "purchase_date_ms": "1683645235000", "purchase_date_pst": "2023-05-09 08:13:55 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000327597406", "web_order_line_item_id": "2000000026962309"}, {"expires_date": "2023-05-09 15:13:55 Etc/GMT", "expires_date_ms": "1683645235000", "expires_date_pst": "2023-05-09 08:13:55 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription", "purchase_date": "2023-05-09 15:08:55 Etc/GMT", "purchase_date_ms": "1683644935000", "purchase_date_pst": "2023-05-09 08:08:55 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000327594191", "web_order_line_item_id": "2000000026961982"}, {"expires_date": "2023-05-09 15:08:55 Etc/GMT", "expires_date_ms": "1683644935000", "expires_date_pst": "2023-05-09 08:08:55 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription", "purchase_date": "2023-05-09 15:03:55 Etc/GMT", "purchase_date_ms": "1683644635000", "purchase_date_pst": "2023-05-09 08:03:55 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000327591636", "web_order_line_item_id": "2000000026961691"}, {"expires_date": "2023-05-09 15:03:55 Etc/GMT", "expires_date_ms": "1683644635000", "expires_date_pst": "2023-05-09 08:03:55 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription", "purchase_date": "2023-05-09 14:58:55 Etc/GMT", "purchase_date_ms": "1683644335000", "purchase_date_pst": "2023-05-09 07:58:55 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000327588504", "web_order_line_item_id": "2000000026901091"}, {"expires_date": "2023-05-08 23:21:52 Etc/GMT", "expires_date_ms": "1683588112000", "expires_date_pst": "2023-05-08 16:21:52 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year", "purchase_date": "2023-05-08 22:21:52 Etc/GMT", "purchase_date_ms": "1683584512000", "purchase_date_pst": "2023-05-08 15:21:52 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000327041726", "web_order_line_item_id": "2000000026898594"}, {"expires_date": "2023-05-08 22:21:52 Etc/GMT", "expires_date_ms": "1683584512000", "expires_date_pst": "2023-05-08 15:21:52 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year", "purchase_date": "2023-05-08 21:21:52 Etc/GMT", "purchase_date_ms": "1683580912000", "purchase_date_pst": "2023-05-08 14:21:52 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000327027287", "web_order_line_item_id": "2000000026895847"}, {"expires_date": "2023-05-08 21:21:52 Etc/GMT", "expires_date_ms": "1683580912000", "expires_date_pst": "2023-05-08 14:21:52 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year", "purchase_date": "2023-05-08 20:21:52 Etc/GMT", "purchase_date_ms": "1683577312000", "purchase_date_pst": "2023-05-08 13:21:52 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000327015553", "web_order_line_item_id": "2000000026893062"}, {"expires_date": "2023-05-08 20:21:52 Etc/GMT", "expires_date_ms": "1683577312000", "expires_date_pst": "2023-05-08 13:21:52 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year", "purchase_date": "2023-05-08 19:21:52 Etc/GMT", "purchase_date_ms": "1683573712000", "purchase_date_pst": "2023-05-08 12:21:52 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000326996817", "web_order_line_item_id": "2000000026890001"}, {"expires_date": "2023-05-08 19:21:52 Etc/GMT", "expires_date_ms": "1683573712000", "expires_date_pst": "2023-05-08 12:21:52 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year", "purchase_date": "2023-05-08 18:21:52 Etc/GMT", "purchase_date_ms": "1683570112000", "purchase_date_pst": "2023-05-08 11:21:52 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000326977106", "web_order_line_item_id": "2000000026886660"}, {"expires_date": "2023-05-08 18:21:52 Etc/GMT", "expires_date_ms": "1683570112000", "expires_date_pst": "2023-05-08 11:21:52 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year", "purchase_date": "2023-05-08 17:21:52 Etc/GMT", "purchase_date_ms": "1683566512000", "purchase_date_pst": "2023-05-08 10:21:52 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000326955651", "web_order_line_item_id": "2000000026883509"}, {"expires_date": "2023-05-08 17:21:50 Etc/GMT", "expires_date_ms": "1683566510000", "expires_date_pst": "2023-05-08 10:21:50 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year", "purchase_date": "2023-05-08 16:21:50 Etc/GMT", "purchase_date_ms": "1683562910000", "purchase_date_pst": "2023-05-08 09:21:50 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000326935049", "web_order_line_item_id": "2000000026879901"}, {"expires_date": "2023-05-08 16:21:50 Etc/GMT", "expires_date_ms": "1683562910000", "expires_date_pst": "2023-05-08 09:21:50 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year", "purchase_date": "2023-05-08 15:21:50 Etc/GMT", "purchase_date_ms": "1683559310000", "purchase_date_pst": "2023-05-08 08:21:50 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000326904521", "web_order_line_item_id": "2000000026875671"}, {"expires_date": "2023-05-08 15:21:50 Etc/GMT", "expires_date_ms": "1683559310000", "expires_date_pst": "2023-05-08 08:21:50 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year", "purchase_date": "2023-05-08 14:21:50 Etc/GMT", "purchase_date_ms": "1683555710000", "purchase_date_pst": "2023-05-08 07:21:50 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000326868285", "web_order_line_item_id": "2000000026871295"}, {"expires_date": "2023-05-08 14:21:50 Etc/GMT", "expires_date_ms": "1683555710000", "expires_date_pst": "2023-05-08 07:21:50 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year", "purchase_date": "2023-05-08 13:21:50 Etc/GMT", "purchase_date_ms": "1683552110000", "purchase_date_pst": "2023-05-08 06:21:50 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000326821876", "web_order_line_item_id": "2000000026870847"}, {"expires_date": "2023-05-08 13:21:30 Etc/GMT", "expires_date_ms": "1683552090000", "expires_date_pst": "2023-05-08 06:21:30 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription", "purchase_date": "2023-05-08 13:16:30 Etc/GMT", "purchase_date_ms": "1683551790000", "purchase_date_pst": "2023-05-08 06:16:30 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000326818184", "web_order_line_item_id": "2000000026870536"}, {"expires_date": "2023-05-08 13:16:30 Etc/GMT", "expires_date_ms": "1683551790000", "expires_date_pst": "2023-05-08 06:16:30 America/Los_Angeles", "in_app_ownership_type": "PURCHASED", "is_in_intro_offer_period": "false", "is_trial_period": "false", "original_purchase_date": "2023-05-08 13:11:37 Etc/GMT", "original_purchase_date_ms": "1683551497000", "original_purchase_date_pst": "2023-05-08 06:11:37 America/Los_Angeles", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription", "purchase_date": "2023-05-08 13:11:30 Etc/GMT", "purchase_date_ms": "1683551490000", "purchase_date_pst": "2023-05-08 06:11:30 America/Los_Angeles", "quantity": "1", "subscription_group_identifier": "21308251", "transaction_id": "2000000326813861", "web_order_line_item_id": "2000000026870535"}], "pending_renewal_info": [{"auto_renew_product_id": "mapbox_mapview_subscription_year", "auto_renew_status": "1", "original_transaction_id": "2000000326813861", "product_id": "mapbox_mapview_subscription_year"}], "receipt": {"adam_id": 0, "app_item_id": 0, "application_version": "1", "bundle_id": "org.reactjs.native.example.Hexplore", "download_id": 0, "in_app": [[Object], [Object]], "original_application_version": "1.0", "original_purchase_date": "2013-08-01 07:00:00 Etc/GMT", "original_purchase_date_ms": "1375340400000", "original_purchase_date_pst": "2013-08-01 00:00:00 America/Los_Angeles", "receipt_creation_date": "2023-05-08 13:18:55 Etc/GMT", "receipt_creation_date_ms": "1683551935000", "receipt_creation_date_pst": "2023-05-08 06:18:55 America/Los_Angeles", "receipt_type": "ProductionSandbox", "request_date": "2023-05-09 15:49:34 Etc/GMT", "request_date_ms": "1683647374575", "request_date_pst": "2023-05-09 08:49:34 America/Los_Angeles", "version_external_identifier": 0}, "status": 0}
I was also facing the issue earlier but it was solved by making some changes to the way I was passing the parameter to the validateReceiptIos. before I was passing it as "RNIap.validateReceiptIos(receiptBody, true)". but now I have made the changes and called it like this "RNIap.validateReceiptIos({receiptBody: receiptBody, isTest: true})" and It started working properly .
i think one of the reasons this issue is rising is because the docs are not giving the right suggestions. i solved with this useEffect
useEffect(() => {
const subscription = purchaseUpdatedListener((purchase) => {
// console.log('>>> APP JS useEffect purchaseUpdatedListener', purchase.transactionReceipt);
const verify = async purchase => {
const verifyPurchase = await validateReceiptIos({
receiptBody: { 'receipt-data': purchase.transactionReceipt },
isTest: true
});
}
verify(purchase);
});
return () => {
subscription.remove();
};
}, []);