在结帐时通过电子邮件发送发票,并在注册时验证用户的电子邮件
在结帐时,将发票通过电子邮件发送给用户。
为此,用户注册时需要验证用户的电子邮件。
我想在结帐功能中添加电子邮件,以便在结帐成功后发送发票。
index.js(检出)
app.post('/b/checkout', authAndRedirectSignIn, async (req, res) => {
if (!req.session.cart) {
res.setHeader('Cache-Control', 'private');
return res.send('Shopping Cart is Empty!')
}
// data format to store in firebase
// collection: orders
// {uid, timestamp, cart}
// cart = [{product, qty} ....] // contents in shoppingcart
const data = {
uid: req.decodedIdToken.uid,
//timestamp: firebase.firestore.Timestamp.fromDate(new Date()),
cart: req.session.cart
}
try {
await adminUtil.checkOut(data)
req.session.cart = null;
res.setHeader('Cache-Control', 'private');
return res.render('shoppingcart.ejs',
{message: 'Checked Out Successfully!', cart: new ShoppingCart(), user: req.decodedIdToken, cartCount: 0})
} catch (e) {
const cart = ShoppingCart.deserialize(req.session.cart)
res.setHeader('Cache-Control', 'private');
return res.render('shoppingcart.ejs',
{message: 'Checked Out Failed. Try Again Later!', cart, user: req.decodedIdToken, cartCount: cart.contents.length}
)
}
})
index.js(注册)
app.get('/b/signup', (req, res) => {
res.render('signup.ejs', {page: 'signup', user: null, error: false, cartCount: 0})
})
signup.ejs
<form class="form-signin" action="/admin/signup" method="post">
<% if (error) { %>
<p style="color: red;"><%= error %></p>
<% } %>
<h3>Create an account</h3>
<input type="email" class="form-control" name="email" placeholder ="Email address">
<input type="password" class="form-control" name="password" placeholder = "Password">
<input type="text" class="form-control" name="displayName" placeholder ="Display Name">
<input type="tel" class="form-control" name="phoneNumber" placeholder ="+1-222-333-4444">
<input type="text" class="form-control" name="photoURL" placeholder ="Profile Image URL">
<button type="submit" class="btn btn-primary">Create</button>
</form>
shoppingcart.ejs结帐
<table class="table table-striped">
<thead>
<tr>
<th scope="col">Image</th>
<th scope="col">Name</th>
<th scope="col">Price</th>
<th scope="col">Qty</th>
<th scope="col">Sub-Total</th>
<th scope="col">Summary</th>
</tr>
</thead>
<tbody>
<% for (let i = 0; i < cart.contents.length; i++) { %>
<tr>
<th scope="row"><img width=50 height=50 src="<%= cart.contents[i].product.image_url%>"></th>
<td><%= cart.contents[i].product.name %></td>
<td><%= cart.contents[i].product.price.toFixed(2) %></td>
<td><%= cart.contents[i].qty %></td>
<td><%= (cart.contents[i].qty * cart.contents[i].product.price).toFixed(2) %></td>
<td><%= cart.contents[i].product.summary %></td>
</tr>
<% } %>
</tbody>
</table>
<h2>TOTAL: <%= cart.getTotal().toFixed(2) %></h2>
<% if (cart.contents.length > 0) { %>
<div>
<form action="/b/checkout" method="post">
<button type="submit" class="btn btn-primary">Check Out</button>
</form>
</div>
<% } %>