Проверьте, была ли произведена ежемесячная оплата в Stripe - PullRequest
0 голосов
/ 14 мая 2018

Я создаю веб-приложение, в котором есть место, куда может попасть только премиум-пользователь. Как я могу проверить, если пользователь заплатил и премиум? Прямо сейчас я делаю это так:

var time = req.params.time;
console.log(time);
if (time === '1') {
    var amount = 1499;
    var days = 30;
}
else if (time === '3') {
    amount = 999 * 3;
    days = 90;
}
else res.render('payment/error', {title: 'Error', user: req.user});
//^^^^ error/security handling ^^^^//

console.log(req.user.username);
stripe.charges.create({
    amount: amount,
    currency: "cad",
    source: req.body.stripeToken,
    description: "Charge for DigitLead website evaluation tool",
    receipt_email: req.user.username,
}).then(ch => {
    console.log(ch);
    Account.findById(req.user._id).then(u => {
        var date = new Date().getTime();
        console.log(date);
        u.lastPaid = date;
        date += (days * 24 * 60 * 60 * 1000);
        console.log(date);
        u.premiumEnds = date;
        console.log(u);
        u.save();
        res.render('payment/summary', {
            title: 'Payment Summary',
            user: req.user,
            date: u.premiumEnds,
        })
    });
}).catch(e => console.log(e));

Но мне это не нравится, потому что, если мне нужно будет внести дополнительные изменения в платежную систему в будущем, мне понадобится целая вечность, чтобы сделать это так. Могу ли я сделать это с помощью Stripe API или я должен использовать свой собственный код? Я также благодарен за другие предложения.

Это моя модель. Я знаю, мне нужно это изменить

var mongoose = require('mongoose');

var plm = require('passport-local-mongoose');

var accountSchema = new mongoose.Schema({
    accType: String,
    websites: [],
    keys: [],
    creditCardNo: Number,
    alexaCalls: Number,
    stripeId: String,
    lastPaid: Date,
    premiumEnds: Date,
});

accountSchema.plugin(plm);

module.exports = mongoose.model('Account', accountSchema);
...