مدیریت ماژول پرداخت در NestJS

ادغام یک ماژول پرداخت در برنامه NestJS شما می تواند تراکنش های یکپارچه را برای کاربران شما فعال کند. در این راهنما، شما را از طریق یکپارچه سازی راهنمایی می کنیم راه راه به برنامه NestJS شما.
1. برنامه NestJS خود را راه اندازی کنید
با راه اندازی پروژه NestJS خود شروع کنید. اگر قبلاً این کار را انجام نداده اید، آن را نصب کنید NestJS CLI و یک برنامه جدید ایجاد کنید:
npm i -g @nestjs/cli
nest new my-app
به دایرکتوری پروژه جدید ایجاد شده بروید:
cd my-app
2. Stripe و Necessary Packages را نصب کنید
برای ادغام Stripe، باید بسته Stripe و سایر وابستگی های ضروری را نصب کنیم:
npm install stripe @nestjs/config
- راه راه: بسته رسمی Stripe برای Node.js.
- @nestjs/config: برای مدیریت پیکربندی در NestJS.
3. کلیدهای Stripe API را پیکربندی کنید
هنگامی که وابستگی های لازم را دارید، باید کلیدهای API خود را پیکربندی کنید. برای دریافت خود به داشبورد Stripe بروید تست کنید و زندگی می کنند کلیدهای API
a ایجاد کنید .env
برای ذخیره کلیدهای Stripe خود در ریشه پروژه خود فایل کنید:
STRIPE_SECRET_KEY=your_stripe_secret_key_here
STRIPE_WEBHOOK_SECRET=your_stripe_webhook_secret_here
4. Webhooks در Stripe
وب هوک چیست؟
الف وب هوک در Stripe راهی برای Stripe است تا برنامه شما را در مورد رویدادهایی که در حساب Stripe شما رخ می دهد مطلع کند. این مکانیزمی است که به شما امکان میدهد بهروزرسانیهای بلادرنگ از Stripe درباره رویدادهای خاص مانند پرداختهای موفق، تمدید اشتراک، اختلافات و غیره دریافت کنید.
وب هوک برای چه مواردی استفاده می شود؟
-
اعلان های زمان واقعی: یک وب هوک به Stripe این امکان را می دهد که در صورت وقوع رویدادهای خاصی مانند پرداخت موفق یا وضعیت پرداخت به روز، برنامه شما را مطلع کند.
-
رسیدگی به موفقیت یا شکست پرداخت: به عنوان مثال، هنگامی که پرداخت کامل می شود، Stripe رویدادی را به نقطه پایانی وب هوک شما ارسال می کند تا به شما اطلاع دهد. این به شما کمک میکند رابط کاربری را بهروزرسانی کنید یا اقدامات مناسب (مانند ارسال ایمیل تأیید یا بهروزرسانی وضعیت سفارش) انجام دهید.
-
امنیت: Webhook ها اطمینان حاصل می کنند که شما در مورد تغییرات در سمت Stripe مطلع می شوید، بنابراین می توانید به طور ایمن اقدامات حساس مربوط به پرداخت را در باطن خود انجام دهید.
-
پردازش ناهمزمان: پردازش برخی از اقدامات، مانند مجوز پرداخت، ممکن است به زمان نیاز داشته باشد. Webhooks اطمینان حاصل می کند که پس از نهایی شدن وضعیت پرداخت، حتی اگر کاربر قبلاً سایت را ترک کرده باشد یا پرداخت را از طریق روش دیگری (مانند کیف پول تلفن همراه) انجام داده باشد، به شما اطلاع داده می شود.
چرا وب هوک ها مهم هستند؟
- به روز رسانی در زمان واقعی: آنها به سیستم شما اجازه می دهند تا بلافاصله به رویدادها واکنش نشان دهد، حتی اگر کاربر به طور فعال با برنامه شما تعامل نداشته باشد.
- دقت: Webhook ها اطمینان حاصل می کنند که سیستم شما همیشه با Stripe همگام است، به خصوص زمانی که وضعیت پرداخت ها یا اشتراک تغییر می کند.
- مقیاس پذیری: میتوانید برای اطلاعرسانی به سیستم خود در مورد رویدادهای کلیدی، به Stripe اعتماد کنید و نیاز به نظرسنجی مکرر از Stripe برای بهروزرسانیها را از بین ببرید.
به طور خلاصه، وب هوک ها برای مدیریت پرداخت ها و اقدامات مرتبط به شیوه ای مقیاس پذیر، بلادرنگ و ایمن در ادغام Stripe شما ضروری هستند.
5. سرویس Stripe را راه اندازی کنید
اکنون، بیایید یک سرویس برای رسیدگی به درخواست های پرداخت Stripe، از جمله تأیید وب هوک ایجاد کنیم.
یک سرویس Stripe ایجاد کنید
nest generate service stripe
در stripe.service.ts
، سرویس Stripe را پیکربندی کنید و منطق مدیریت وب هوک را پیاده سازی کنید:
import { Injectable, Logger } from '@nestjs/common';
import Stripe from 'stripe';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class StripeService {
private stripe: Stripe;
private readonly logger = new Logger(StripeService.name);
constructor(private configService: ConfigService) {
const secretKey = this.configService.get('STRIPE_SECRET_KEY');
this.stripe = new Stripe(secretKey, {
apiVersion: '2022-08-01',
});
}
async createPaymentIntent(amount: number) {
return this.stripe.paymentIntents.create({
amount,
currency: 'usd',
});
}
async handleWebhook(payload: any, sig: string) {
const webhookSecret = this.configService.get('STRIPE_WEBHOOK_SECRET');
try {
const event = this.stripe.webhooks.constructEvent(payload, sig, webhookSecret);
switch (event.type) {
case 'payment_intent.succeeded':
this.logger.log('Payment Intent was successful!', event.data.object);
break;
case 'payment_intent.failed':
this.logger.log('Payment Intent failed!', event.data.object);
break;
// Handle other events
default:
this.logger.warn(`Unhandled event type: ${event.type}`);
}
} catch (err) {
this.logger.error('Error verifying webhook signature', err);
throw new Error('Webhook verification failed');
}
}
}
توضیح:
- راه اندازی راه راه: Stripe را با استفاده از کلید مخفی از پیکربندی محیط مقداردهی اولیه می کنیم.
-
ایجاد قصد پرداخت:
createPaymentIntent
تابع یک هدف پرداخت جدید ایجاد می کند که می توانیم برای پردازش پرداخت استفاده کنیم. -
مدیریت وب هوک:
handleWebhook
تابع به رویدادهای Stripe مانند گوش می دهدpayment_intent.succeeded
یاpayment_intent.failed
و بر این اساس با آنها برخورد می کند. صحت رویداد با استفاده از راز webhook تأیید می شود.
6. یک کنترل کننده پرداخت ایجاد کنید
برای رسیدگی به درخواستهای پرداخت، یک کنترلکننده ایجاد کنید:
nest generate controller stripe
در stripe.controller.ts
، یک نقطه پایانی برای شروع پرداخت و دیگری برای دریافت وب هوک از Stripe ایجاد کنید:
import { Controller, Post, Body, Headers } from '@nestjs/common';
import { StripeService } from './stripe.service';
@Controller('payments')
export class StripeController {
constructor(private readonly stripeService: StripeService) {}
@Post('create-payment-intent')
async createPaymentIntent(@Body() body: { amount: number }) {
return this.stripeService.createPaymentIntent(body.amount);
}
@Post('webhook')
async handleWebhook(@Body() payload: any, @Headers() headers: any) {
const sig = headers['stripe-signature'];
return this.stripeService.handleWebhook(payload, sig);
}
}
7. تست ماژول پرداخت
برای آزمایش عملکرد پرداخت، سرور NestJS را اجرا کنید:
npm run start
اکنون می توانید درخواست POST را به /payments/create-payment-intent
نقطه پایانی با بدنه JSON حاوی مقدار (به سنت):
{
"amount": 5000
}
این یک قصد پرداخت 50 دلاری ایجاد می کند. می توانید از ابزارهایی مانند پستچی یا CURL برای تست API
8. یکپارچه سازی Frontend
هنگامی که backend راه اندازی شد، می توانید از Stripe استفاده کنید Stripe.js و عناصر برای رسیدگی به فرم های پرداخت پیشخوان برای جزئیات بیشتر در مورد ادغام Stripe در سمت مشتری، به مستندات رسمی Stripe مراجعه کنید.
نتیجه گیری
در این آموزش، سیستم پرداخت Stripe را با موفقیت در یک برنامه NestJS ادغام کردیم. این راهاندازی یک نقطه شروع است و میتوانید آن را بیشتر بر اساس نیازهای کسبوکار خود سفارشی کنید. با این راهاندازی، اکنون راهی ساده و ایمن برای پرداختها در برنامههای NestJS خود دارید.
کد نویسی مبارک!