more on stripe

This commit is contained in:
adueck 2022-10-13 19:19:22 +05:00
parent f82173ee07
commit bcf8946740
3 changed files with 37 additions and 28 deletions

View File

@ -42,7 +42,12 @@ const authRouter = (passport: PassportStatic) => {
if (!req.isAuthenticated()) { if (!req.isAuthenticated()) {
return res.redirect("/"); return res.redirect("/");
} }
res.render("user", { user: req.user, error: null, removeProviderOption: canRemoveOneOutsideProvider(req.user) }); res.render("user", {
user: req.user,
error: null,
removeProviderOption: canRemoveOneOutsideProvider(req.user),
upgrade: req.query.upgrade,
});
}); });
router.post("/user", async (req, res, next) => { router.post("/user", async (req, res, next) => {

View File

@ -25,21 +25,19 @@ paymentRouter.post("/create-checkout-session", async (req, res, next) => {
lookup_keys: [req.body.lookup_key], lookup_keys: [req.body.lookup_key],
expand: ['data.product'], expand: ['data.product'],
}); });
console.log(prices);
const session = await stripe.checkout.sessions.create({ const session = await stripe.checkout.sessions.create({
billing_address_collection: 'auto', billing_address_collection: 'auto',
line_items: [ line_items: [
{ {
price: prices.data[0].id, price: prices.data[0].id,
// For metered billing, do not pass quantity // For metered billing, do not pass quantity
quantity: 1, quantity: 1,
}, },
], ],
mode: 'subscription', mode: 'subscription',
// TODO ADD URLS // TODO ADD URLS
success_url: `https://account.lingdocs.com/`, success_url: `https://account.lingdocs.com/user?upgrade=success`,
cancel_url: `https://account.lingdocs.com/`, cancel_url: `https://account.lingdocs.com/user`,
}); });
if (!session.url) { if (!session.url) {
return next("error creating session url"); return next("error creating session url");

View File

@ -52,11 +52,18 @@
</div> </div>
</form> </form>
<h5>Account Level: <%= user.level.charAt(0).toUpperCase() + user.level.slice(1) %></h5> <h5>Account Level: <%= user.level.charAt(0).toUpperCase() + user.level.slice(1) %></h5>
<% if (upgrade === "success") { %>
<p>🎉 Subscription started. Thank you for your purchase! 🎉</p>
<% } %>
<% if (user.level === "basic") { %> <% if (user.level === "basic") { %>
<% if (user.upgradeToStudentRequest === "waiting") { %> <% if (user.upgradeToStudentRequest === "waiting") { %>
<p>Wating for upgrade approval</p> <p>Wating for upgrade approval</p>
<% } else { %> <% } %>
<button class="btn btn-sm btn-secondary" id="upgrade-request-button" onclick="handleRequestUpgrade()">Request Upgrade</button> <% if (user.tester) { %>
<form action="/payment/create-checkout-session" method="POST">
<input type="hidden" name="lookup_key" value="student-yearly" />
<button class="btn btn-sm btn-secondary" id="checkout-and-portal-button" type="submit">Upgrade Account</button>
</form>
<% } %> <% } %>
<% } %> <% } %>
<% if (user.email) { %> <% if (user.email) { %>
@ -173,24 +180,23 @@
console.error(e); console.error(e);
} }
} }
function handleRequestUpgrade() { // function handleRequestUpgrade() {
console.log("got here"); // const btn = document.getElementById("upgrade-request-button");
const btn = document.getElementById("upgrade-request-button"); // btn.innerHTML = "Sending...";
btn.innerHTML = "Sending..."; // fetch("/api/user/upgradeToStudentRequest", {
fetch("/api/user/upgradeToStudentRequest", { // method: "POST",
method: "POST", // }).then((res) => res.json()).then((res) => {
}).then((res) => res.json()).then((res) => { // console.log(res);
console.log(res); // if (res.ok) {
if (res.ok) { // btn.innerHTML = "Upgrade request sent";
btn.innerHTML = "Upgrade request sent"; // } else {
} else { // btn.innerHTML = "Error requesting upgrade";
btn.innerHTML = "Error requesting upgrade"; // }
} // }).catch((e) => {
}).catch((e) => { // console.error(e);
console.error(e); // btn.innerHTML = "Error requesting upgrade";
btn.innerHTML = "Error requesting upgrade"; // });
}); // }
}
function clearPasswordForm() { function clearPasswordForm() {
document.getElementById("oldPassword").value = ""; document.getElementById("oldPassword").value = "";
document.getElementById("password").value = ""; document.getElementById("password").value = "";