برنامه نویسی

با استفاده از Node.js/Express و Stripe ویژگی پرداخت را در برنامه خود اضافه کنید

در این مقاله، نحوه افزودن ویژگی پرداخت را با استفاده از Express، فریم ورک اپلیکیشن وب Node.js و Stripe Charges API برای ایجاد درگاه پرداخت به برنامه خود می آموزیم.

Stripe چیست؟

Stripe یک پلت فرم پرداخت کامل است که روشی مناسب برای توسعه‌دهندگان برای پذیرش پرداخت‌های آنلاین و در برنامه‌های تلفن همراه ارائه می‌دهد. برای کسب اطلاعات بیشتر در مورد Stripe، به وب سایت آنها در اینجا مراجعه کنید.

مفروضات

  • در حالی که ما همه چیز را از ابتدا و با جزئیات پوشش خواهیم داد، فرض می کنیم که شما درک اولیه ای از ابزارهای زیر دارید:

  • علاوه بر این، ما استفاده خواهیم کرد CommonJS ماژول هایی برای واردات و صادرات کد.

اگر با فناوری های فوق آشنایی ندارید، توصیه می کنم منابع زیر را بررسی کنید:

پیش نیازها

برای دنبال کردن این مقاله، باید موارد زیر را روی دستگاه خود نصب کنید:

  • Node.js
  • یک ویرایشگر متن به انتخاب شما. من VS Code را توصیه می کنم
  • Postman: یک ابزار یا اپلیکیشن تست API بسیار ساده و شهودی است. ما از آن برای آزمایش نقاط پایانی/مسیرهای API خود استفاده خواهیم کرد.

  • یک حساب راه راه. اگر ندارید، می توانید به صورت رایگان در https://dashboard.stripe.com/register ایجاد کنید. در بخش بعدی نحوه ایجاد اکانت نواری را به تفصیل توضیح خواهیم داد.

فهرست مطالب

  1. حساب Stripe را تنظیم کنید
  2. برنامه Node.js/Express ما را راه اندازی کنید
  3. با استفاده از Stripe Charges API دروازه پرداخت ایجاد کنید
  4. نقطه پایان پرداخت ما را با استفاده از Postman آزمایش کنید
  5. نتیجه

شروع شدن

یک حساب Stripe ایجاد کنید

  1. به https://dashboard.stripe.com/register بروید و یک حساب راه راه ایجاد کنید. از شما خواسته می شود آدرس ایمیل و رمز عبور خود را برای ایجاد یک حساب کاربری وارد کنید.

  2. پس از ایجاد موفقیت آمیز حساب کاربری، به داشبورد هدایت خواهید شد. کپی از کلید قابل انتشار و کلید مخفی از توسعه دهندگان بخش داشبورد برنامه ما برای دسترسی به Stripe Payments API به این کلیدها نیاز دارد. در زیر یک اسکرین شات از داشبورد مشاهده می شود.

داشبورد راه راه

راه اندازی برنامه Node.js/Express ما

  1. یک دایرکتوری جدید برای برنامه ما ایجاد کنید و با استفاده از خط فرمان به آن بروید.
mkdir stripe-payment
cd stripe-payment
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. یک برنامه Node.js جدید را با استفاده از دستور زیر راه اندازی کنید. این یک ایجاد خواهد کرد package.json فایل در دایرکتوری پروژه ما
npm init -y
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما package.json فایل باید به شکل زیر باشد:

{
  "name": "stripe-payment",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": { // we will add more scripts later
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. وابستگی های زیر را در فهرست پروژه ما نصب کنید.
npm install express cors body-parser dotenv nodemon stripe --save
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

درک وابستگی ها

  • Express یک چارچوب برنامه وب Node.js است که مجموعه ای قوی از ویژگی ها را برای برنامه های وب و موبایل ارائه می دهد.

  • از cors برای فعال کردن ارتباط برنامه ما با Stripe API با اجازه دادن به درخواست های متقاطع خواسته می شود.

  • تجزیه‌کننده بدن برای تجزیه بدنه‌های درخواست JSON ورودی در یک میان‌افزار قبل از کنترل‌کننده‌های ما مورد نیاز است.

  • dotenv برای بارگیری متغیرهای محیطی از a مورد نیاز خواهد بود .env فایل به process.env. ما استفاده می کنیم .env برای ذخیره اطلاعات حساس خارج از پایگاه کد ما.

  • nodemon باید برای هرگونه تغییر در کد منبع ما نظارت کند و سرور ما را به طور خودکار راه اندازی مجدد کند.

  • stripe کتابخانه Node.js برای Stripe API است.

  1. ایجاد یک .env فایل در ریشه دایرکتوری پروژه ما (جایی که package.json قرار دارد) و متغیرهای محیطی زیر را اضافه کنید. مقادیر را با کلیدهای خود جایگزین کنید.
PORT = 3000 // Or any other port of your choice
STRIPE_PUBLISHABLE_KEY= your_publishable_key
STRIPE_SECRET_KEY= your_secret_key
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. ایجاد کنید index.js در ریشه دایرکتوری پروژه ما فایل کنید و یک سرور اکسپرس اولیه ایجاد کنید.
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');

// SETUP DOTENV
require('dotenv').config();

// IMPORT STRIPE
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);

// CREATE EXPRESS APP
const app = express();

// MIDDLEWARE
app.use(cors());
app.use(bodyParser.json({ limit: '50mb', extended: true }));

/**
 * ROUTES
 */

// HOME ROUTE
app.get('/', (req, res) => {
    res.send('We are about to build the illest Stripe Payment API...');
});

// CREATE SERVER
const port = process.env.PORT || 5000;

app.listen(port, () => {
    console.log(`Server is running on port ${port}`);
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. خود را به روز کنید package.json فایل برای اضافه کردن اسکریپت شروع.
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "nodemon index.js" // add this line
  },
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. برای راه اندازی سرور ما دستور زیر را اجرا کنید.
npm run dev
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. مرورگر خود را باز کنید و به http://localhost:3000 بروید. باید صفحه زیر را ببینید:

سرور اکسپرس در حال اجرا است

اکنون که سرور ما با موفقیت اجرا می شود، بیایید با استفاده از Stripe Charges API یک دروازه پرداخت ایجاد کنیم.

با استفاده از Stripe Charges API دروازه پرداخت ایجاد کنید

برای ایجاد درگاه های پرداخت آزمایشی، Stripe شماره کارت های آزمایشی را ارائه می دهد که می توانیم از آنها برای شبیه سازی فرآیند پرداخت استفاده کنیم. شماره کارت آزمون را می توانید اینجا بیابید.

در این دمو از جزئیات کارت زیر استفاده خواهیم کرد:

card: {
    "number": "4242424242424242", // This is a VISA card number
    "exp_month": 2, // Choose any valid month of the year
    "exp_year": 2025, // Choose any year in the future
    "cvc": "314", // Any 3 digit number
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. ایجاد یک checkout route در ما index.js فایل بالای app.listen() روش.
// CHECKOUT ROUTE
app.post('/api/checkout', async (req, res) => {
  // RECEIVE PRODUCT AND CARD DETAILS FROM CLIENT
  const { product, card } = req.body;
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. ایجاد یک try/catch بلوک در داخل checkout route و کد زیر را اضافه کنید
try {
    // CREATE STRIPE PAYMENT TOKEN
    const stripeToken = await stripe.tokens.create({
      card,
    });
    // CREATE STRIPE CUSTOMER
    const stripeCustomer = await stripe.customers.create({
      email: 'test@nishimwe.dev',
      source: stripeToken.id, //
      address: {
        line1: 'KK 137 ST',
        postal_code: '10001',
        city: 'Kigali',
      },
      shipping: {
        name: 'Nishimwe',
        address: {
          line1: 'KK 137 ST',
          postal_code: '10001',
          city: 'Kigali',
        },
      },
      name: 'NISHIMWE',
    });

    // CREATE STRIPE CHARGE
    const stripeCharge = await stripe.charges.create({
      amount: product.price * 100, // To convert to cents
      currency: 'usd',
      customer: stripeCustomer.id,
      description: `Purchased the ${product.name} for ${product.price}`,
    });

    // SEND RESPONSE
    res.status(200).json({
      message: 'Payment was successful',
      charge: stripeCharge,
    });
}
// CATCH ERRORS
catch (error) {
    return res.status(500).json({
      error: error.message,
    });
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

درک کد

  • ما یک نشانه پرداخت Stripe با استفاده از stripe.tokens.create() روش. این روش اطلاعات پرداخت را به عنوان آرگومان می گیرد و یک شی نشانه را برمی گرداند. اطلاعات پرداخت ممکن است حاوی جزئیات کارت باشد و ما آن را از مشتری دریافت می کنیم.

    توکن‌های پرداخت خطی با امکان مدیریت و انتقال اطلاعات حساس پرداخت به شکل توکن‌شده، یک لایه امنیتی اضافی ایجاد می‌کنند. این امر خطر افشای یا سوء استفاده از جزئیات حساس کارت را در برنامه شما کاهش می دهد. در اینجا درباره نشانه های Stripe بیشتر بدانید.

  • ما یک مشتری Stripe با استفاده از stripe.customers.create() روش. را source ویژگی شناسه رمز پرداخت Stripe است که در قطعه کد قبلی ایجاد شده است.

    اشیاء مشتری راه راه فرآیند رسیدگی به پرداخت ها را ساده می کند، سناریوهای صورتحساب تکراری را فعال می کند و به شما امکان می دهد با ذخیره و مدیریت داده های خاص مشتری، تجربه بهتری برای مشتری ارائه دهید. در اینجا درباره مشتریان Stripe اطلاعات بیشتری کسب کنید.

  • ما یک شارژ Stripe با استفاده از stripe.charges.create() روش. هزینه‌های نواری برای پردازش پرداخت‌های یک‌باره یا شروع جمع‌آوری وجوه برای محصولات یا خدمات استفاده می‌شود.

    هنگامی که هزینه ای با استفاده از Stripe API ایجاد می شود، Stripe پردازش پرداخت را انجام می دهد، از جمله جمع آوری ایمن وجوه از روش پرداخت مشتری و انتقال آنها به حساب Stripe شما. در اینجا درباره هزینه های Stripe بیشتر بدانید.

    • متوجه خواهید شد که مقدار در 100 ضرب می شود. دلیل این امر این است که Stripe پرداخت ها را با کوچکترین واحد ارز پردازش می کند. به عنوان مثال، اگر پرداختی را به دلار انجام می‌دهید، مبلغ باید در 100 ضرب شود تا آن را به سنت تبدیل کنید.
  • در نهایت یک پاسخ با پیام موفقیت و شی شارژ برای مشتری ارسال می کنیم. اگر خطایی رخ دهد، ما catch آن را ارسال کنید و یک پاسخ با پیام خطا ارسال کنید.

تست درگاه پرداخت

برای آزمایش برنامه خود، Postman را باز می کنیم و جزئیات زیر را وارد می کنیم:

{
    "product": {
        "name": "Brand New Jordan Air Force 1", // Product name >> String
        "price": 237.78 // Product price >> Intenger
    },
    "card": {
    "number": "4242424242424242", // This is a VISA card number
    "exp_month": 2, // Choose any valid month of the year
    "exp_year": 2025, // Choose any year in the future
    "cvc": "314" // Any 3 digit number
}
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ما باید یک پاسخ با پیام موفقیت و شی شارژ دریافت کنیم.

پاسخ API پرداخت خطی

یک ایمیل رسید به آدرس ایمیل مشتری ارسال می شود. رسید شامل نام محصول، قیمت و آدرس حمل و نقل مشتری است.

رسید پرداخت خطی

پرداخت در داشبورد Stripe منعکس می شود.

داشبورد راه راه

نتیجه

در این آموزش، یاد گرفتیم که چگونه می توانید با استفاده از Stripe Charges API یک ویژگی جمع آوری پرداخت را به برنامه خود اضافه کنید. ما یک سرور Node.js ایجاد کردیم و از Stripe Charges API برای ایجاد یک دروازه پرداخت استفاده کردیم. ما همچنین یاد گرفتیم که چگونه درگاه پرداخت خود را با استفاده از Postman آزمایش کنیم.

البته این یک پیاده‌سازی ساده است، اما می‌توانید آن را گسترش دهید تا سیستم پرداخت قوی‌تری ایجاد کنید که از مواردی مانند رسیدگی به خطا و اجتناب از هزینه‌های تکراری در صورتی که کاربر به‌طور تصادفی تلاش می‌کند دو بار پشت سر هم هزینه را پردازش کند، مراقبت می‌کند.

می توانید کد منبع این آموزش را در این مخزن GitHub پیدا کنید

با تشکر از شما برای خواندن! امیدوارم این آموزش برای شما مفید بوده باشد. اگر سوال یا نظری دارید، لطفاً در لینکدین با من تماس بگیرید. من دوست دارم با شما ارتباط برقرار کنم. هفته آینده میبینمت!!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا