Мы живем в мире, настолько погруженном в цифровые технологии, где веб-API может создать бизнес на миллион долларов, и в этой статье я покажу вам, как монетизировать strong> ваш API с библиотекой под названием Stripe Mongoose Api, используя NodeJS и Express.

Настройте свой проект

требования

  • MongoDB установлен на вашем компьютере или в сетевом кластере MongoDB.
  • Аккаунт Stripe

Во-первых, нам нужно установить все зависимости:

npm install stripe-mongoose-api stripe mongoose express ejs

Теперь мы можем приступить к созданию нашего собственного проекта, я буду вести вас шаг за шагом:

  1. Создайте app.js и userModel.js
  2. Создайте модель в userModel.js
  3. Добавить соединение с мангустом
  4. Экспресс-настройка
  5. Базовая маршрутизация
  6. Добавление функций Stripe Mongoose API

Исходный код вы найдете здесь.

1. Создайте user.js и userModel.js

Создайте папку, используя:

mkdir <folderName>

Создайте новые файлы в папке: app.js и userModel.js (вы можете назвать этот файл как хотите, но это соглашение именовать файлы так).

2. Создайте модель в userModel.js

Мы создадим очень простую схему без полей схемы, чтобы упростить нашу работу, но вы можете просто добавить любое поле, которое хотите.

const mongoose = require('mongoose');
const apiSystem = require('stripe-mongoose-api');

const userSchema = new mongoose.Schema({})

userSchema.plugin(apiSystem, <options>);

module.exports = mongoose.model('User', userSchema)

В поле ‹option› необходимо указать объект, который содержит:

{
  stripeSecret: 'your stripe secret key',
  webhookSign: 'your stripe webhook sign key',
  priceId: 'the price id of your product'
}

Это параметры обязательные, но вы можете просто проверить документацию и выбрать, какие другие параметры добавить.

3. Добавьте соединение с мангустом

Перейдем к app.js, добавим в файл этот код:

const mongoose = require('mongoose');
const MONGO_URI = 'Your MongoDB uri'
mongoose.connect(MONGO_URI, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
});
const db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error:"));
db.once("open", () => {
    console.log("Database connected");
});

const User = require('./userModel');

И теперь, если вы попытаетесь запустить файл и все прошло хорошо, вы увидите в консоли: «База данных подключена».

4. Экспресс-настройка

Требовать и запускать экспресс:

const express = require('express');
const app = express();

app.use(express.json({verify: (req, res, buffer) => (req['rawBody'] = buffer)}));

express.json является обязательным промежуточным программным обеспечением для этого проекта, поскольку без этого Stripe Mongoose API не может понимать запросы веб-перехватчиков.
Добавить Виды:

const path = require('path');
const ejs = require('ejs');
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));

Создайте папку представлений и назовите ее представлениями, используя:

mkdir views

Добавьте этот файл .ejs в папку:

<a href="/checkout" style="font-size: 25px; font-weight: 700;">Checkout and subscribe user</a>
<form style="margin-top: 10px;" action="/api">
  <label for="apiKey">Test api</label>
  <input id="apiKey" type="text" name="apiKey"> 
</form>
<form action="/usage">
  <label for="customer">Get customer invoice</label>
  <input id="customer" type="text" name="customer"> 
</form>
<form action="/changeapikey">
  <label for="change">Change the api key</label>
  <input id="change" type="text" name="id"> 
</form>

Это простая HTML-страница, которая предоставит вам все функции, предоставляемые Stripe Mongoose Api.

5. Базовая маршрутизация

Маршрутизаторы необходимы для работы API, поскольку они смогут получать и обрабатывать запросы, сделанные пользователями.

// Just rendering the home page
app.get('/', (req, res) => {
  res.render('home');
})

// This route will redirect the user to the stripe checkout
// page, if you don't pass a user as first param, the
// method will create a new one for you
app.get('/checkout', async (req, res) => {
  User.subscribeUser({}, res)
})
// This route listen to all requests sent by stripe, it
// listens for completed checkout and for cancelled
// subscriptions
app.post('/webhook', async (req, res) => {
  const  user  =  await User.findOne({})
  User.webhook(req, res)
})
// This route will listen to all requests sent by the users,
// it checks if the apiKey provided is valid and if yes, will
// create a usage record and then send the data in the second
// argument
app.get('/api', (req, res) => {
  User.api(res, {italy: 'hi from italy'}, req.query.apiKey)
})
// This route will send back the customer records
app.get('/usage', async (req, res) =>{
  const  user  =  await User.findById(req.query.customer);
  user.customerRecords(res)
})
// This route create a new api key for the user and
// destroy the old one
app.get('/changeapikey', async(req, res) => {
  const  user  =  await User.findById(req.query.id);
  const  key  =  await User.changeApiKey(user);
  res.send(key)
})
const  PORT  =  process.env.PORT  ||  3000;
app.listen(PORT, () => {
  console.log(`Serving on port ${PORT}`);
})

И теперь вы готовы запустить node app.js и увидеть, что ваше приложение работает правильно.

Теперь вы знаете, как просто создать API и монетизировать его с помощью Stripe Mongoose Api.

Выводы

Stripe Mongoose Api — один из моих личных проектов. Stripe Mongoose Api будет получать постоянные обновления, поэтому проверяйте репозиторий GitHub в случае появления нового контента.