mirror of
https://github.com/sergeyyarkov/digital-store.git
synced 2026-10-11 10:19:15 +03:00
buyer add
This commit is contained in:
parent
35e81d95b3
commit
2de28b8b9a
@ -1,2 +1,3 @@
|
|||||||
# Digital Store
|
# Digital Store
|
||||||
#### Control-panel auth: digital-store@support.ru:admin
|
#### Control-panel auth: digital-store@support.ru:admin
|
||||||
|
#### Demo: https://polar-peak-95205.herokuapp.com/
|
||||||
@ -1,4 +1,4 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
url: 'local',
|
url: 'mongodb+srv://ds_user1:zBD4b6kQbKAK2ar@cluster0-vtuzl.mongodb.net/test?retryWrites=true',
|
||||||
name: 'digital_store'
|
name: 'digital_store'
|
||||||
}
|
}
|
||||||
36
config/routes/invoice.js
Normal file
36
config/routes/invoice.js
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
module.exports = function(server, db, qiwiApi) {
|
||||||
|
server.get('/success', (req, res) => {
|
||||||
|
const query = req.query;
|
||||||
|
// qiwi
|
||||||
|
if (query.bill_id && query.item_id && query.payment === 'qiwi') {
|
||||||
|
qiwiApi.getBillInfo(query.bill_id).then(async (data) => {
|
||||||
|
const bill_id = query.bill_id,
|
||||||
|
status = data.status.value,
|
||||||
|
email = data.customer.email,
|
||||||
|
method = 'qiwi',
|
||||||
|
date = data.status.changedDateTime,
|
||||||
|
amount = data.amount.value;
|
||||||
|
|
||||||
|
if (status === 'PAID') {
|
||||||
|
const findBill = await db.collection('buyers').findOne({bill_id: query.bill_id});
|
||||||
|
if (findBill == null) {
|
||||||
|
// создаем покупателя
|
||||||
|
db.collection('buyers').insertOne({bill_id, email, method, date, amount});
|
||||||
|
res.send('Выдаем данные!');
|
||||||
|
} else {
|
||||||
|
res.send('Ошибка');
|
||||||
|
}
|
||||||
|
} else if (status === 'WAITING') {
|
||||||
|
res.send('Инвоис ждет оплаты');
|
||||||
|
} else if (status === 'EXPIRED') {
|
||||||
|
res.send('Время жизни счета истекло. Счет не оплачен');
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
res.send('произошла ошибка!');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
res.send('bad request');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
@ -1,8 +1,4 @@
|
|||||||
const QiwiBillPaymentsAPI = require('@qiwi/bill-payments-node-js-sdk');
|
module.exports = function(server, db, qiwiApi) {
|
||||||
|
|
||||||
const SECRET_KEY = '';
|
|
||||||
const qiwiApi = new QiwiBillPaymentsAPI(SECRET_KEY);
|
|
||||||
module.exports = function(server, db) {
|
|
||||||
server.put('/payment', (req, res) => {
|
server.put('/payment', (req, res) => {
|
||||||
const billId = qiwiApi.generateId();
|
const billId = qiwiApi.generateId();
|
||||||
const fields = {
|
const fields = {
|
||||||
@ -12,7 +8,7 @@ module.exports = function(server, db) {
|
|||||||
expirationDateTime: qiwiApi.getLifetimeByDay(),
|
expirationDateTime: qiwiApi.getLifetimeByDay(),
|
||||||
customFields: {themeCode: 'Sergei-YaS7mIY0CQe'},
|
customFields: {themeCode: 'Sergei-YaS7mIY0CQe'},
|
||||||
email: req.body.email,
|
email: req.body.email,
|
||||||
successUrl: `http://test.ru/`
|
successUrl: `https://polar-peak-95205.herokuapp.com/success?bill_id=${billId}&item_id=${req.body.items[0].id}&payment=qiwi`
|
||||||
}
|
}
|
||||||
qiwiApi.createBill(billId, fields).then((data) => {
|
qiwiApi.createBill(billId, fields).then((data) => {
|
||||||
res.send(data);
|
res.send(data);
|
||||||
|
|||||||
@ -14,6 +14,10 @@ const session = require('express-session');
|
|||||||
const MongoStore = require('connect-mongo')(session);
|
const MongoStore = require('connect-mongo')(session);
|
||||||
const methodOverride = require('method-override');
|
const methodOverride = require('method-override');
|
||||||
const multer = require('multer');
|
const multer = require('multer');
|
||||||
|
const QiwiBillPaymentsAPI = require('@qiwi/bill-payments-node-js-sdk');
|
||||||
|
|
||||||
|
const SECRET_KEY = '/';
|
||||||
|
const qiwiApi = new QiwiBillPaymentsAPI(SECRET_KEY);
|
||||||
|
|
||||||
MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: true})
|
MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: true})
|
||||||
.then((client) => {
|
.then((client) => {
|
||||||
@ -32,12 +36,7 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
|
|||||||
server.use(express.urlencoded({ extended: false }));
|
server.use(express.urlencoded({ extended: false }));
|
||||||
server.use(express.json());
|
server.use(express.json());
|
||||||
server.use(flash());
|
server.use(flash());
|
||||||
server.use(session({secret: process.env.SESSION_SECRET,resave: false,saveUninitialized: false, store:
|
server.use(session({secret: process.env.SESSION_SECRET,resave: false,saveUninitialized: false}));
|
||||||
new MongoStore({
|
|
||||||
url: db_config.url,
|
|
||||||
touchAfter: 24 * 3600 // time period in seconds
|
|
||||||
})
|
|
||||||
}));
|
|
||||||
server.use(passport.initialize());
|
server.use(passport.initialize());
|
||||||
server.use(passport.session());
|
server.use(passport.session());
|
||||||
server.use(methodOverride('_method'));
|
server.use(methodOverride('_method'));
|
||||||
@ -49,9 +48,10 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
|
|||||||
require('./routes/admin')(server, db); // маршрут с формой авторизации админа
|
require('./routes/admin')(server, db); // маршрут с формой авторизации админа
|
||||||
require('./routes/control-panel')(server, db); // маршруты с панелью управления
|
require('./routes/control-panel')(server, db); // маршруты с панелью управления
|
||||||
require('./routes/api')(server, db); // отдача данных клиенту
|
require('./routes/api')(server, db); // отдача данных клиенту
|
||||||
|
require('./routes/invoice')(server, db, qiwiApi);
|
||||||
|
|
||||||
// Payments
|
// Payments
|
||||||
require('./routes/payments/qiwi.payment')(server, db);
|
require('./routes/payments/qiwi.payment')(server, db, qiwiApi);
|
||||||
|
|
||||||
// 404 Redirect
|
// 404 Redirect
|
||||||
server.use((req, res) => res.status(404).render('main/404'));
|
server.use((req, res) => res.status(404).render('main/404'));
|
||||||
|
|||||||
@ -51,17 +51,16 @@ export class PaginationComponent extends Component {
|
|||||||
|
|
||||||
// выполняем запрос на сервер и выводим на данные
|
// выполняем запрос на сервер и выводим на данные
|
||||||
async moveTo(page, insertTo, request) {
|
async moveTo(page, insertTo, request) {
|
||||||
|
this.loader.show();
|
||||||
|
insertTo.innerHTML = '';
|
||||||
const response = await request(page);
|
const response = await request(page);
|
||||||
|
|
||||||
if (response != '') {
|
if (response != '') {
|
||||||
this.$el.setAttribute('data-page', page);
|
this.$el.setAttribute('data-page', page);
|
||||||
insertTo.innerHTML = '';
|
|
||||||
this.loader.show();
|
|
||||||
insertTo.insertAdjacentHTML('afterbegin', response);
|
insertTo.insertAdjacentHTML('afterbegin', response);
|
||||||
this.loader.hide();
|
|
||||||
} else {
|
} else {
|
||||||
insertTo.innerHTML = 'Данных нету.';
|
insertTo.innerHTML = 'Данных нету.';
|
||||||
}
|
}
|
||||||
|
this.loader.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
moveNext(page, li, insertTo, request) {
|
moveNext(page, li, insertTo, request) {
|
||||||
|
|||||||
@ -27,4 +27,4 @@ const itemDelete = new ItemDeleteModal('deleteItemModal', 'edit', 'deleteItemClo
|
|||||||
const categoryEdit = new CategoryEditModal('editCategoryModal', 'editCategory_select', 'editCategoryClose');
|
const categoryEdit = new CategoryEditModal('editCategoryModal', 'editCategory_select', 'editCategoryClose');
|
||||||
|
|
||||||
const materialize = new MaterializeConfig();
|
const materialize = new MaterializeConfig();
|
||||||
console.log('Control-Panel v1.0.0');
|
console.log('Control-Panel v1.0.01');
|
||||||
@ -1,4 +1,4 @@
|
|||||||
const axios = require('axios');
|
import axios from "axios";
|
||||||
|
|
||||||
class ApiService {
|
class ApiService {
|
||||||
constructor(baseUrl) {
|
constructor(baseUrl) {
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
const axios = require('axios');
|
import axios from "axios";
|
||||||
|
|
||||||
class ApiService {
|
class ApiService {
|
||||||
constructor(baseUrl) {
|
constructor(baseUrl) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user