متد verify
به شما امکان میدهد تا پس از بازگشت کاربر از درگاه پرداخت، وضعیت تراکنش را بررسی و تأیید کنید. با استفاده از این متد، شما میتوانید صحت پرداخت و جزئیات تراکنش را بررسی کنید و در صورت موفقیتآمیز بودن پرداخت، آن را تأیید نمایید.
این متد معمولاً پس از بازگشت کاربر به آدرس callback_url
که در درخواست پرداخت مشخص شده بود، استفاده میشود.
در جدول زیر پارامترهای ارسالی به متد verify
و توضیحات مربوط به آنها آورده شده است:
نام پارامتر | نوع | الزامی | توضیحات |
---|---|---|---|
authority | String | بله | کد authority که پس از درخواست پرداخت از درگاه دریافت میشود و در کوئری استرینگ بازگشت به callback_url وجود دارد. |
amount | Integer | بله | مبلغ پرداختی که باید با مبلغ اصلی تراکنش مطابقت داشته باشد. این مقدار باید از دیتابیس استخراج شود. |
در ادامه، نمونه کدی ارائه شده است که ابتدا کد authority
از کوئری استرینگ دریافت میشود، سپس مبلغ مربوط به این authority
از دیتابیس استخراج شده و برای تأیید به زرینپال ارسال میشود:
from zarinpal import ZarinPal
from utils.Config import Config
authority = "Your Authority"
status = "OK"
def get_amount_from_database(authority):
return 20000
def verify_payment(authority, status):
if status == "OK":
amount = get_amount_from_database(authority)
if amount:
try:
config = Config(
merchant_id= "Your merchant code",
sandbox=True,
)
zarinpal = ZarinPal(config)
response = zarinpal.verifications.verify({
"amount": amount,
"authority": authority,
})
if response["data"]["code"] == 100:
print("Payment Verified:")
print("Reference ID:", response["data"]["ref_id"])
print("Card PAN:", response["data"]["card_pan"])
print("Fee:", response["data"]["fee"])
elif response["data"]["code"] == 101:
print("Payment already verified.")
else:
print("Transaction failed with code:", response["data"]["code"])
except Exception as e:
print("Payment Verification Failed:", e)
else:
print("No Matching Transaction Found For This Authority Code.")
else:
print("Transaction was cancelled or failed.")
if __name__ == "__main__":
verify_payment(authority, status)