در دنیای تجارت آنلاین که بهسرعت در حال پیشرفت است، فراهم کردن یک تجربه پرداخت امن و بیدردسر برای مشتریان اهمیت بالایی دارد. چه شما یک کسبوکار کوچک را اداره کنید یا مدیریت یک پلتفرم بزرگتر را بر عهده داشته باشید، یکپارچهسازی درگاه پرداخت مطمئن برای اطمینان از تراکنشهای روان ضروری است. اگر شما یک وبسایت مبتنی بر جاوا اسکریپت طراحی کردهاید و میخواهید درگاه پرداخت زرین پال را به آن متصل کنید، جای درستی آمدهاید. در ادامه به آموزش اتصال درگاه زرین پال به جاوا اسکریپت و Node js می پردازیم.
چرا از زرین پال برای اتصال به درگاه در جاوا اسکریپت استفاده کنیم؟
زرین پال یکی از معتبرترین خدمات درگاه پرداخت در ایران است که به خاطر راهحلهای امن، کارآمد و کاربرپسند خود شناخته شده است. با اتصال درگاه زرین پال به جاوا اسکریپت و Node js خود، میتوانید پرداختهای آنلاین را به راحتی فعال کنید و تجربه کلی کاربران خود را ارتقا دهید. این یکپارچهسازی به شما امکان میدهد پرداختها را به صورت امن بپذیرید و فرآیند پرداخت را سادهتر کنید، که این امر برای افزایش نرخ تبدیل کلیدی است.
این وبلاگ اختصاص به راهنمایی توسعهدهندگان، کارآفرینان و علاقهمندان به فناوری در فرآیند گامبهگام اتصال درگاه زرین پال به جاوا اسکریپت و Node js دارد. ما از تنظیم حساب زرین پال و دریافت کلیدهای API لازم تا پیادهسازی منطق پرداخت امن با استفاده از فریمورکهای جاوا اسکریپت، همه مراحل را پوشش خواهیم داد. چه برنامهنویس حرفهای باشید و چه تازهکار، این وبلاگ میخواهد این فرآیند را برای شما آسان کند.
علاوه بر جنبههای فنی، ما همچنین بینشها و بهترین شیوهها را برای اطمینان از یکپارچهسازی بدون اشکال به اشتراک خواهیم گذاشت. از مدیریت خطاها تا بهینهسازی تجربه کاربری، نکات ما به شما کمک میکنند حداکثر استفاده را از ویژگیهای قدرتمند زرین پال ببرید.
در پایان این راهنما، شما یک یکپارچهسازی کاملاً کاربردی خواهید داشت که به شما امکان میدهد پرداختها را به شکلی امن و کارآمد پردازش کنید. پس بیایید وارد دنیای جاوا اسکریپت و جادوی درگاههای پرداخت شویم!
چرا برای اتصال درگاه زرین پال به جاوا اسکریپت باید روشهای پرداخت را در سرور نگه داریم؟
هنگام مدیریت تراکنشهای پرداخت در وبسایت یا اپلیکیشن، حفظ امنیت اهمیت بالایی دارد. یکی از حیاتیترین اصول این است که اطلاعات حساس مرتبط با پرداخت، مانند کلیدهای API، شناسه تاجر (Merchant ID)، یا جزئیات تراکنش، بهصورت ایمن در سرور ذخیره شوند و در سمت کلاینت نمایش داده نشوند. این موضوع بهویژه برای درگاههای پرداختی مانند زرین پال که شناسه تاجر نقش کلیدی در پردازش پرداختها دارد، بسیار اهمیت دارد.
جلوگیری از دسترسی غیرمجاز در زرین پال Node js
اگر درخواستهای پرداخت مستقیماً از سمت کلاینت انجام شوند، اطلاعات حساسی مانند شناسه تاجر زرین پال ممکن است در معرض دید کاربران قرار گیرد. از آنجا که کدهای سمت کلاینت (مانند جاوا اسکریپت) در مرورگر کاربر اجرا میشوند، بهراحتی از طریق ابزارهای توسعهدهنده یا با بررسی درخواستهای شبکه قابل دسترسی هستند. اگر افراد مخرب به شناسه تاجر شما دسترسی پیدا کنند، ممکن است از آن برای انجام تراکنشهای جعلی، دسترسی به تاریخچه تراکنشهای شما یا به خطر انداختن حساب کاربریتان سوءاستفاده کنند.
حفظ یکپارچگی دادهها در اتصال درگاه زرین پال به جاوا اسکریپت
با نگهداشتن روشهای پرداخت در سرور، میتوانید اعتبار و یکپارچگی درخواستهای پرداخت را کنترل کنید. درخواستهای سمت کلاینت ممکن است توسط کاربران یا هکرها دستکاری شوند، مانند تغییر مقدار پرداخت یا جزئیات تراکنش. در سمت سرور، شما بهطور کامل کنترل فرآیند اعتبارسنجی درخواستها را دارید و اطمینان حاصل میکنید که تنها تراکنشهای قانونی و صحیح پردازش میشوند.
رعایت استانداردهای امنیتی زرین پال Node js
درگاههای پرداختی مانند زرین پال اغلب دارای دستورالعملها و الزامات امنیتی سختگیرانهای برای اطمینان از تراکنشهای امن هستند. ذخیره اطلاعات حساسی مانند شناسه تاجر در سرور، با بهترین شیوههای توصیه شده توسط ارائهدهندگان پرداخت سازگار است. این کار همچنین باعث انطباق با استانداردهایی مانند PCI-DSS میشود که بهمنظور محافظت از اطلاعات حساس پرداخت طراحی شدهاند.
جلوگیری از خسارتهای کسبوکار در زرین پال Node js
نمایش اطلاعات حساس در سمت کلاینت میتواند منجر به خسارات مالی، آسیبهای اعتباری و پیامدهای قانونی شود. برای مثال، اگر کاربر مخرب به شناسه تاجر شما دسترسی پیدا کند و تراکنشهای غیرمجاز انجام دهد، کسبوکار شما ممکن است دچار زیانهای مالی و نقض اعتماد مشتریان شود. با پردازش پرداخت در سرور، محیط امنی ایجاد میکنید که این خطرات را کاهش میدهد.
تجربه کاربری بهتر در اتصال درگاه زرین پال به جاوا اسکریپت
پردازش پرداخت در سمت سرور به شما اجازه میدهد تا خطاها را بهتر مدیریت کرده و پاسخهای دقیقتری ارائه دهید، که منجر به یک تجربه کاربری روانتر و قابلاعتمادتر میشود.
پیادهسازی اتصال زرین پال به جاوا اسکریپت و Node js
بهطور خاص برای زرین پال ، شناسه تاجر باید در سرور باقی بماند تا از حساب کاربری و تراکنشهای شما محافظت کند. هنگام درخواست پرداخت، سرور شما باید بهصورت ایمن با API زرینپال ارتباط برقرار کند، اطلاعات پرداخت را تأیید کرده و اطلاعات لازم را به کلاینت برگرداند.
در نتیجه، نگهداشتن روشهای پرداخت در سرور و عدم ارسال درخواست پرداخت از سمت کلاینت، یکی از اصول بنیادی برای حفاظت از اطلاعات حساس، جلوگیری از دسترسی غیرمجاز و اطمینان از فرآیندهای تراکنش قابلاعتماد است. با رعایت این اصول بهویژه در استفاده از درگاههایی مانند زرین پال، کسبوکار و مشتریان خود را از خطرات و آسیبهای احتمالی محافظت میکنید. پس با استفاده از به درگاه Node js متصل شوید.
ساخت پرداخت در زرین پال Node js
نصب SDK زرین پال: ابتدا مطمئن شوید که zarinpal-node-sdk نصب شده باشد. اگر نصب نشده است، با استفاده از npm یا yarn آن را نصب کنید:
npm install zarinpal-node-sdk
تکه کد زیر نحوه ی ساخت پرداخت با زرین پال است:
import ZarinPal from "zarinpal-node-sdk";
const zarinpal = new ZarinPal({
merchantId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // شناسه تاجر واقعی خود را وارد کنید.
sandbox: true, // برای تست تنظیم شود. در محیط واقعی مقدار false قرار دهید.
});
async function initiatePayment() {
try {
const response = await zarinpal.payments.create({
amount: 10000,
callback_url: 'https://yourwebsite.com/callback', // آدرس فرانت شما برای ریدایرکت پس از پرداخت کاربر
description: 'Payment for order #1234', // توضیحات پرداخت
mobile: '09123456789', // شماره موبایل اختیاری
email: 'customer@example.com', // ایمیل اختیاری
cardPan: ['6219861034529007', '5022291073776543'], // شماره کارت بانکی که کاربر با آن پرداخت می کند اختیاری
referrer_id: 'affiliate123', // کد معرفی اختیاری
});
return zarinpal.payments.getRedirectUrl(response.data?.authority); // بازگشت آدرس زرین پال برای پرداخت
} catch (error: any) {
console.error(error.config);
}
}
نکته: برای دریافت merchantId باید در سایت زرین پال ثبت نام کنید و اگر تنها میخواهید تست کنید، می توانید از xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx استفاده کرده و sandBox را true قرار دهید.
پس از دریافت آدرس درگاه باید آن را برای کلاینت ارسال کنید و ست کلاینت یوزر را به درگاه انتقال دهید. پس از پرداخت یوزر به آدرسی ریدایرکت شما (callback_url) می رود که در آن یک شناسه ی پرداخت وجود دارد.
تایید پرداخت در اتصال درگاه زرین پال به جاوا اسکریپت
برای تایید پرداخت شناسه ی آن را (که در url کاربر پس از ریدایرکت شدن وجود دارد) را باید سمت سرور ارسال کنید.
تکه کد زیر نحوه ی تایید پرداخت با زرین پال است:
import ZarinPal from "zarinpal-node-sdk"
const zarinpal = new ZarinPal({
merchantId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // شناسه تاجر واقعی خود را وارد کنید.
sandbox: true, // برای تست تنظیم شود. در محیط واقعی مقدار false قرار دهید.
});
async function verifyPayment(authority, status) {
if (status === 'OK') {
const amount = await getAmountFromDatabase(authority); // دریافت میزان تراکنش ار دیتابیس
if (amount) {
try {
const response = await zarinpal.verifications.verify({
amount: amount,
authority: authority,
});
if (response.data.code === 100) {
console.log('Payment Verified:');
console.log('Reference ID:', response.data.ref_id);
console.log('Card PAN:', response.data.card_pan);
console.log('Fee:', response.data.fee);
} else if (response.data.code === 101) {
console.log('Payment already verified.');
} else {
console.log('Transaction failed with code:', response.data.code);
}
} catch (error) {
console.error('Payment Verification Failed:', error);
}
} else {
console.log('No Matching Transaction Found For This Authority Code.');
}
} else {
console.log('Transaction was cancelled or failed.');
}
}
استرداد تراکنش در اتصال درگاه زرین پال به جاوا اسکریپت
اگر در تراکنش مشکلی به وجود آمد شما میتوانید بخشی یا تمام مبلغ را برگردانید.
تکه کد زیر نحوه ی استرداد تراکنش با زرین پال است:
import ZarinPal from "zarinpal-node-sdk"
const zarinpal = new ZarinPal({
merchantId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // شناسه تاجر واقعی خود را وارد کنید.
sandbox: true, // برای تست تنظیم شود. در محیط واقعی مقدار false قرار دهید.
});
async function processRefund() {
try {
const refundResponse = await zarinpal.refunds.create({
sessionId: 'session-id-to-refund',
amount: 5000,
description: 'Refund for order #1234',
method: 'CARD',
reason: 'CUSTOMER_REQUEST',
});
console.log('Refund Created:', refundResponse);
const refundDetails = await zarinpal.refunds.retrieve(refundResponse.id);
console.log('Refund Details:', refundDetails);
const refundsList = await zarinpal.refunds.list({
terminalId: 'your-terminal-id',
limit: 10,
offset: 0,
});
console.log('Refunds List:', refundsList);
} catch (error) {
console.error('Error processing refund:', error);
}
}
مشاهده تمام تراکنش ها
تکه کد زیر نحوه دریافت تمامی تراکنش ها است:
import ZarinPal from "zarinpal-node-sdk"
async function getTransactions() {
try {
const transactions = await zarinpal.transactions.list({
terminalId: 'your-terminal-id',
filter: 'PAID',
limit: 10,
offset: 0,
});
console.log('Transactions List:', transactions);
} catch (error) {
console.error('Error fetching transactions:', error);
}
}
بهترین جایگزین های زرین پال برای اتصال درگاه به جاوا اسکریپت و Node js
یارپی و سپا دو ارائهدهندهٔ برجستهٔ درگاه پرداخت در ایران هستند که بهعنوان جایگزینی برای اتصال درگاه زرین پال به جاوا اسکریپت ارائه میشوند. هرکدام از این سرویسها دارای مزایا و معایب خود هستند که آنها را برای نیازهای مختلف مناسب میسازند.
یارپی
یارپی یک ارائهدهنده خدمات پرداخت است که به کسبوکارهایی که به دنبال راهحلهای پرداخت آنلاین ایمن و کارآمد هستند خدمات میدهد. این شرکت خدمات متنوعی از جمله درگاههای پرداخت اینترنتی (IPG)، کیف پول الکترونیکی، و اپلیکیشنهای پرداخت موبایلی را ارائه میدهد. یارپی به دلیل سیستم مسیریابی هوشمند خود شناخته شده است که کاربران را به سریعترین و قابلاعتمادترین درگاههای بانکی متصل میکند و به این ترتیب نرخ موفقیت تراکنشها را افزایش میدهد.
مزایای یارپی:
بدون هزینه اولیه: یارپی خدمات خود را بدون دریافت هزینههای ابتدایی ارائه میدهد که آن را برای استارتاپها و کسبوکارهای کوچک در دسترس میسازد.
امنیت: تراکنشها از طریق شبکه امن شاپرک بانک مرکزی ایران انجام میشود که خطر تقلب را به حداقل میرساند.
راهحلهای قابل تنظیم: یارپی افزونهها و APIهای مختلفی برای پلتفرمهای گوناگون ارائه میدهد که امکان یکپارچهسازی آسان سیستم پرداخت را فراهم میسازد.
مسیریابی هوشمند: این ویژگی نرخ موفقیت تراکنشها را با هدایت پرداختها از طریق موثرترین کانالهای بانکی افزایش میدهد.
محدودیتهای یارپی:
پشتیبانی محدود بینالمللی: یارپی عمدتاً بر تراکنشهای داخلی تمرکز دارد که ممکن است برای کسبوکارهایی که مشتریان بینالمللی دارند مناسب نباشد.
وابستگی به شاپرک: این وابستگی ممکن است گاهی در دورههای پرترافیک باعث تأخیر شود.
شپا
شپا یکی دیگر از ارائهدهندگان درگاه پرداخت است که به دلیل رابط کاربری آسان و تنوع خدمات خود شناخته شده است. این شرکت از هر دو نوع تراکنش داخلی و بینالمللی پشتیبانی میکند که آن را برای کسبوکارها مناسب میسازد.
مزایای شپا:
پشتیبانی از پرداختهای بینالمللی: سپا درگاههایی برای تراکنشهای بینالمللی ارائه میدهد که شامل پشتیبانی از ویزا، مسترکارت و پیپل میشود.
تحلیل تجاری: این پلتفرم گزارشهای مالی و تحلیل دقیق ارائه میدهد که به کسبوکارها در پیگیری عملکردشان کمک میکند.
لینکهای پرداخت قابل تنظیم: سپا به کسبوکارها امکان ایجاد لینکهای پرداخت شخصیسازیشده را میدهد که برای فریلنسرها و کسبوکارهای کوچک مفید است.
دوره آزمایشی رایگان: کاربران جدید میتوانند از دوره ۴۵ روزه رایگان استفاده کنند و بدون تعهد مالی سیستم را تست کنند.
محدودیتهای شپا:
هزینههای بالاتر: هزینههای تراکنش سپا ممکن است در مقایسه با سایر ارائهدهندگان بیشتر باشد که میتواند برای کسبوکارهای حساس به هزینهها ناخوشایند باشد.
پیچیدگی در تنظیم ویژگیهای پیشرفته: در حالی که ویژگیهای ابتدایی آسان هستند، راهاندازی عملکردهای پیشرفته ممکن است به تخصص فنی نیاز داشته باشد.
زرین پال یکی از قدیمیترین و قابلاعتمادترین درگاههای پرداخت در ایران است که به دلیل زیرساخت قوی و پایگاه گسترده مشتریانش شناخته شده است. خدماتی مانند زرینلینک برای پرداختهای شبکههای اجتماعی و زرینکارت برای کاهش هزینههای تراکنش، از جمله ویژگیهای آن است. با این حال، تسلط زرین پال باعث شده تا برخی کسبوکارها به دنبال جایگزینهایی مانند یارپی و شپا باشند.
حال که آموزش کامل اتصال درگاه زرین پال به جاوا اسکریپت و Node js را خواندید، می توانید از دیگر مقالات سایت ایوولرن دیدن کنید.