#javascript #node.js #express #datetime #razorpay
Вопрос:
Я создал API, который создает Razorpay
ссылку на подписку, однако я получаю следующую ошибку — Subscription's start time is past the current time. Cannot do an auth transaction now
при попытке проверить оплату с помощью Razorpay
ссылки на подписку.
Примечание — A start_at
и expire_by
должно быть меткой времени в формате Unix. дата начала — это текущая дата и время дата окончания-1 день с текущей даты и времени
Пример кода-
let day = new Date();
day.setSeconds(day.getSeconds() 30)
let today = moment(day);
let nextDay = new Date(day);
nextDay.setDate(day.getDate() 1);
let tommorow = moment(nextDay);
let start_date = today.tz('Asia/Kolkata')
let start_at = moment(start_date).format("X");
let expire_date = tommorow.tz('Asia/Kolkata');
let expire_by = moment(expire_date).format("X");
let body = {
plan_id:PLANID,
total_count:1200,
quantity:1,
start_at:start_at,
expire_by:expire_by
}
заранее спасибо
Комментарии:
1. Я не знаю, почему вы используете для этого библиотеку. Даты ECMAScript используют мс UTC в качестве значения времени и ту же эпоху, что и UNIX, поэтому «время UNIX» на данный момент просто
Date.now() / 1000
. Добавление 30 секунд-это просто добавление 30, добавление дня UTC-это просто добавление 8.64e4 секунды (поскольку дни UTC всегда длятся 24 часа). Возможно, API хочет, чтобы время UNIX измерялось миллисекундами, а не секундами?2. Проверка документов API подписки кажется, что секунды-это необходимая единица измерения. Похоже, вы можете опустить значение start_at, чтобы немедленно запустить подписку.
3. @RobG Спасибо за обновление, Теперь я пытаюсь рассчитать дату истечения срока действия —> let expire_by = Math.round((Дата.сейчас() / 1000) 8.64e4); однако я получаю следующую ошибку end_time должно быть между 946684800 и 4765046400. Не могли бы вы, пожалуйста, проверить, правильный ли это способ конвертации, спасибо.
4. На данный момент (6 августа 2021 года)
Math.round(Date.now() / 1000) 8.64e4
возвращает что-то вроде 1628334311, что находится между 946684800 (1 января 2000 года) и 4765046400 (31 декабря 2120 года), поэтому ошибка в другом месте.5. Да, я понял, что Razorpay поддерживает оплату подписки до 2099 года, затем я уменьшил общее количество , это сработало. @RobG Большое спасибо