متد verify
به شما امکان میدهد تا پس از بازگشت کاربر از درگاه پرداخت، وضعیت تراکنش را بررسی و تأیید کنید. با استفاده از این متد، شما میتوانید صحت پرداخت و جزئیات تراکنش را بررسی کنید و در صورت موفقیتآمیز بودن پرداخت، آن را تأیید نمایید.
این متد معمولاً پس از بازگشت کاربر به آدرس callback_url
که در درخواست پرداخت مشخص شده بود، استفاده میشود.
در جدول زیر پارامترهای ارسالی به متد verify
و توضیحات مربوط به آنها آورده شده است:
نام پارامتر | نوع | الزامی | توضیحات |
---|---|---|---|
authority | String | بله | کد authority که پس از درخواست پرداخت از درگاه دریافت میشود و در کوئری استرینگ بازگشت به callback_url وجود دارد. |
amount | Integer | بله | مبلغ پرداختی که باید با مبلغ اصلی تراکنش مطابقت داشته باشد. این مقدار باید از دیتابیس استخراج شود. |
در ادامه، نمونه کدی ارائه شده است که ابتدا کد authority
از کوئری استرینگ دریافت میشود، سپس مبلغ مربوط به این authority
از دیتابیس استخراج شده و برای تأیید به زرینپال ارسال میشود:
import { ZarinPal } from 'zarinpal-node-sdk';
const zarinpal = new ZarinPal({
merchantId: 'your-merchant-id',
sandbox: true,
});
async function verifyPayment(authority, status) {
if (status === 'OK') {
const amount = await getAmountFromDatabase(authority); // Implement this function
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.');
}
}
// Example usage:
const authority = 'A000000000000000000000000000000000';
const status = 'OK';
verifyPayment(authority, status);