با استفاده از 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 ایجاد کنید. در بخش بعدی نحوه ایجاد اکانت نواری را به تفصیل توضیح خواهیم داد.
فهرست مطالب
- حساب Stripe را تنظیم کنید
- برنامه Node.js/Express ما را راه اندازی کنید
- با استفاده از Stripe Charges API دروازه پرداخت ایجاد کنید
- نقطه پایان پرداخت ما را با استفاده از Postman آزمایش کنید
- نتیجه
شروع شدن
یک حساب Stripe ایجاد کنید
-
به https://dashboard.stripe.com/register بروید و یک حساب راه راه ایجاد کنید. از شما خواسته می شود آدرس ایمیل و رمز عبور خود را برای ایجاد یک حساب کاربری وارد کنید.
-
پس از ایجاد موفقیت آمیز حساب کاربری، به داشبورد هدایت خواهید شد. کپی از کلید قابل انتشار و کلید مخفی از توسعه دهندگان بخش داشبورد برنامه ما برای دسترسی به Stripe Payments API به این کلیدها نیاز دارد. در زیر یک اسکرین شات از داشبورد مشاهده می شود.
راه اندازی برنامه Node.js/Express ما
- یک دایرکتوری جدید برای برنامه ما ایجاد کنید و با استفاده از خط فرمان به آن بروید.
mkdir stripe-payment
cd stripe-payment
- یک برنامه 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"
}
- وابستگی های زیر را در فهرست پروژه ما نصب کنید.
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 است.
- ایجاد یک
.env
فایل در ریشه دایرکتوری پروژه ما (جایی کهpackage.json
قرار دارد) و متغیرهای محیطی زیر را اضافه کنید. مقادیر را با کلیدهای خود جایگزین کنید.
PORT = 3000 // Or any other port of your choice
STRIPE_PUBLISHABLE_KEY= your_publishable_key
STRIPE_SECRET_KEY= your_secret_key
- ایجاد کنید
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}`);
});
- خود را به روز کنید
package.json
فایل برای اضافه کردن اسکریپت شروع.
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "nodemon index.js" // add this line
},
- برای راه اندازی سرور ما دستور زیر را اجرا کنید.
npm run dev
- مرورگر خود را باز کنید و به 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
}
- ایجاد یک
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;
});
- ایجاد یک
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
}
}
ما باید یک پاسخ با پیام موفقیت و شی شارژ دریافت کنیم.
یک ایمیل رسید به آدرس ایمیل مشتری ارسال می شود. رسید شامل نام محصول، قیمت و آدرس حمل و نقل مشتری است.
پرداخت در داشبورد Stripe منعکس می شود.
نتیجه
در این آموزش، یاد گرفتیم که چگونه می توانید با استفاده از Stripe Charges API یک ویژگی جمع آوری پرداخت را به برنامه خود اضافه کنید. ما یک سرور Node.js ایجاد کردیم و از Stripe Charges API برای ایجاد یک دروازه پرداخت استفاده کردیم. ما همچنین یاد گرفتیم که چگونه درگاه پرداخت خود را با استفاده از Postman آزمایش کنیم.
البته این یک پیادهسازی ساده است، اما میتوانید آن را گسترش دهید تا سیستم پرداخت قویتری ایجاد کنید که از مواردی مانند رسیدگی به خطا و اجتناب از هزینههای تکراری در صورتی که کاربر بهطور تصادفی تلاش میکند دو بار پشت سر هم هزینه را پردازش کند، مراقبت میکند.
می توانید کد منبع این آموزش را در این مخزن GitHub پیدا کنید
با تشکر از شما برای خواندن! امیدوارم این آموزش برای شما مفید بوده باشد. اگر سوال یا نظری دارید، لطفاً در لینکدین با من تماس بگیرید. من دوست دارم با شما ارتباط برقرار کنم. هفته آینده میبینمت!!