am working with in app purchase in react-native.am using expo-in-app-purchase.in order to validate receipt with app store am getting something like this:
result [
{
.........................
purchase_date: '2021-05-03 11:34:17 Etc/GMT',
purchase_date_ms: '1620041657000',
purchase_date_pst: '2021-05-03 04:34:17 America/Los_Angeles',
original_purchase_date: '2021-05-03 11:33:20 Etc/GMT',
original_purchase_date_ms: '1620041600000',
original_purchase_date_pst: '2021-05-03 04:33:20 America/Los_Angeles',
expires_date: '2021-05-03 11:39:17 Etc/GMT',
expires_date_ms: '1620041957000',
expires_date_pst: '2021-05-03 04:39:17 America/Los_Angeles',
...............................................
}
]
pending_renewal_info:[{
expiration_intent: '1',
auto_renew_product_id: '******************',
is_in_billing_retry_period: '0',
product_id: '****************************',
original_transaction_id: '1000000785803993',
auto_renew_status: '0'
}]
then am trying to check the expiry of subscription Like this:
const expirationDate = result.data.latest_receipt_info[0].expires_date_ms,
expiry=Date.now() > expirationDate;//it is always true.
The expiry getting always true, because the date which apple give is 5 hours before my date.ie, if i purchase something in 2021-05-04 10:00:00 this date, in apple receipt the expiry date is showing something like this 2021-05-04 5:00:00.ie 5 hours behind.then how do i check my receipt expiry?
This should work
const expirationDate = parseInt(result.data.latest_receipt_info[0].expires_date_ms);
// Need to parse it to Int as it is in string format originally
const expirationDateObject = new Date(expirationDate);
const current = Date.now();
const currentDateObj = new Date(current);
const isExpired = currentDateObj.getTime() > expirationDateObject.getTime()
console.log(isExpired);