az-iranian-bank-gateways
az-iranian-bank-gateways copied to clipboard
AttributeError at /bankgateways/callback/ خطای
با سلام موقع برگشت از درگاه تو حالت دیباگ با این خطا مواجه شدم یک پروژه خالی دیگه هم ران کردم و قدم به قدم با توضیحات ویدیویی جلو رفتم و باز هم این خطا وجود داشت ممنون میشم راهنمایی بفرمایید
AttributeError at /bankgateways/callback/ "NoneType" object has no attribute "callback_url"
#views from azbankgateways.exceptions import AZBankGatewaysException import logging from django.http import HttpResponse, Http404 from django.urls import reverse from azbankgateways import bankfactories, models as bank_models, default_settings as settings
def go_to_gateway_view(request): # خواندن مبلغ از هر جایی که مد نظر است amount = 1000 # تنظیم شماره موبایل کاربر از هر جایی که مد نظر است user_mobile_number = '+989112221234' # اختیاری
factory = bankfactories.BankFactory()
try:
bank = factory.create() # or factory.create(bank_models.BankType.BMI) or set identifier
bank.set_request(request)
bank.set_amount(amount)
# یو آر ال بازگشت به نرم افزار برای ادامه فرآیند
bank.set_client_callback_url('/callback-gateway/')
bank.set_mobile_number(user_mobile_number) # اختیاری
# در صورت تمایل اتصال این رکورد به رکورد فاکتور یا هر چیزی که بعدا بتوانید ارتباط بین محصول یا خدمات را با این
# پرداخت برقرار کنید.
bank_record = bank.ready()
# هدایت کاربر به درگاه بانک
return bank.redirect_gateway()
except AZBankGatewaysException as e:
logging.critical(e)
# TODO: redirect to failed page.
raise e
def callback_gateway_view(request): tracking_code = request.GET.get(settings.TRACKING_CODE_QUERY_PARAM, None) if not tracking_code: logging.debug("این لینک معتبر نیست.") raise Http404
try:
bank_record = bank_models.Bank.objects.get(tracking_code=tracking_code)
except bank_models.Bank.DoesNotExist:
logging.debug("این لینک معتبر نیست.")
raise Http404
# در این قسمت باید از طریق داده هایی که در بانک رکورد وجود دارد، رکورد متناظر یا هر اقدام مقتضی دیگر را انجام دهیم
if bank_record.is_success:
# پرداخت با موفقیت انجام پذیرفته است و بانک تایید کرده است.
# می توانید کاربر را به صفحه نتیجه هدایت کنید یا نتیجه را نمایش دهید.
return HttpResponse("پرداخت با موفقیت انجام شد.")
# پرداخت موفق نبوده است. اگر پول کم شده است ظرف مدت ۴۸ ساعت پول به حساب شما بازخواهد گشت.
return HttpResponse(
"پرداخت با شکست مواجه شده است. اگر پول کم شده است ظرف مدت ۴۸ ساعت پول به حساب شما بازخواهد گشت.")
#settings AZ_IRANIAN_BANK_GATEWAYS = { 'GATEWAYS': {
'IDPAY': {
'MERCHANT_CODE': '9db51849-7cd9-42ab-8b14-b28c585988d1',
'METHOD': 'POST', # GET or POST
'X_SANDBOX': 1, # 0 disable, 1 active
},
},
'IS_SAMPLE_FORM_ENABLE': True, # اختیاری و پیش فرض غیر فعال است
'DEFAULT': 'IDPAY',
'CURRENCY': 'IRR', # اختیاری
'TRACKING_CODE_QUERY_PARAM': 'tc', # اختیاری
'TRACKING_CODE_LENGTH': 16, # اختیاری
'SETTING_VALUE_READER_CLASS': 'azbankgateways.readers.DefaultReader', # اختیاری
'BANK_PRIORITIES': [
], # اختیاری
}
USE_X_FORWARDED_HOST = True SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
#urls from azbankgateways.urls import az_bank_gateways_urls from django.contrib import admin from django.urls import path from payment import views
urlpatterns = [ path('admin/', admin.site.urls), path('bankgateways/', az_bank_gateways_urls()), path('go-to-gateway/', views.go_to_gateway_view), path('callback-gateway/', views.callback_gateway_view)
]
@azhidecode سلام وقت بخیر لطفا در تنظیمات گزینه
AZ_IRANIAN_BANK_GATEWAYS = {
...
'IS_SAMPLE_FORM_ENABLE': True,
...
}
قرار دهید
سپس از این آدرس برای پرداخت امتحان کنید
http://127.0.0.1:8000/bankgateways/sample-payment/
نتیجه رو هم به اشتراک بگذارید لطفا
ممنون از جوابتون ولی مشکل حل نشدش تنظیماتی که عرض کردید از قبل روی همون ست شده بود تا درگاه بصورت دیباگ میره ولی برای کالبک مشکل داره :(( بازم تشکر
@azhidecode ممکن هست نسخه جدید رو پول بگیرید و ببینید مشکل رفع شده یا نه؟ بنظر میاد مورد رفع شده. ورژن 1.6.14
سلام خسته نباشید منم تو همین قسمت کالبک مشکل دارم و ارور میگیرم
Reverse for '/callback-gateway/' not found. '/callback-gateway/' is not a valid view function or pattern name. هر کاری میکنم میگه ادرس درست نیست با هر روشی امتحان کردم حتی اون ریورس رو هم حظف کردم ولی باز خطا میده و میگه ادرس اشتباهه ولی ادرس درسته
طبق این ایشو #62 و اینکه از ورزن ۱.۶.۱۴ به بعد گزارش نشده، احتمالا این مشکل مرتفع شده، در صورتی که هنوز معتقد هستید این مشکل پا برجاست میتونید این ایشو رو مجدد از همینجا باز کنید.
سلام بر اقای زاهدی عزیز ورژن az bank.... من 1.9 هستش در تنظیمات هم 'IS_SAFE_GET_GATEWAY_PAYMENT': True, و در urls هم ادرسهای زیر هست:
from azbankgateways.urls import az_bank_gateways_urls from peyment_app.views import go_to_gateway_view , callback_gateway_view ....
path('bankgateways/', az_bank_gateways_urls()),
path('logout/', include('home_app.urls')),
path('go-to-gateway/',go_to_gateway_view),
path('callback_gateway/', callback_gateway_view),
در views.py bank.set_client_callback_url(reverse('/callback_gatewa/'))
هم برای زیبال و هم برای ای دی پی چک کردم باز هم همین ایراد دو میده
خطا در call back
@3257525958 سلام و ادب. حالت تست رو فعال کنید. حالت سیف رو غیر فعال کنید. 'IS_SAMPLE_FORM_ENABLE': True, 'IS_SAFE_GET_GATEWAY_PAYMENT': False,
به این آدرس برید: http://127.0.0.1:8000/bankgateways/sample-payment/ حالت دیباگ زیبال و یا آی دی پی رو فعال کنید. برای حالت دیباگ مود زیبال خاطرم هست که باید مرچنت کد رو زیبال میزاشتید یا همچین چیزی. اگه با پشتیبانی تماس گرفتید حتما اینجا هم شیر کنید که حالت دیباگ رو چطوری میشه فعال کرد و یا با یک مرج ریکوئست باهامون شیرش کنید. نتیجه رو اینجا شیر کنید.
@3257525958
سلام وقت بخیر بهتر بود متن خطا رو قرار میدادید تا بهتر متوجه مشکل بشیم ولی با توجه به توضیحاتی که دادید فکر میکنم خطایی که دریافت میکنید چیزی شبیه به زیر است
NoReverseMatch at /main/ Reverse for 'callback/' not found. 'callback/' is not a valid view function or pattern name.
که دلیل به وجود اومدن این خطا استفاده نادرست از reverse است. درتوضیحات ارایه شده توسط خود شما گفته شده که set_client_callback_url بصورت زیر تنظیم شده
bank.set_client_callback_url(reverse('/callback_gatewa/'))
این اشتباه است و نحوه صحیح بصورت زیر است
bank.set_client_callback_url(reverse('callback_gatewa'))
سلام جناب زاهدی ... اینادرس به درستی عمل میکنه http://127.0.0.1:8000/bankgateways/sample-payment/ ولی هنوز همون ایراد داده میشه و
Reverse for '/callback-gateway/' not found. '/callback-gateway/' is not a valid view function or pattern name. نمیدونم چیکار کنم هر چه هم گشتم چیزی پیدا نکردم
من دقیقا همونطور که توی فیلم شما گفتید انجام دادم چرا درست کار نمیکنه؟
همون ایرادی که روستمون گفت رو میده من به جای bank.set_client_callback_url(reverse('/callback_gatewa/'))
یک مزتبه هم bank.set_client_callback_url(reverse('callback_gatewa')) رو قرار دادم ولی فرقی نکرد
بجای bank.set_client_callback_url(reverse('/callback_gatewa/')) هم bank.set_client_callback_url(reverse('callback_gatewa')) گداشتم باز فرقی نکرد
@3257525958 به نظر همونطور که MrMRM1 اشاره کرد موردتون از کال بک هست و باید اسم کال بکی که تنظیم کردید رو درست قرار بدید.