내 웹 사이트에 온라인 결제 포털을 설정 중입니다. 나는 코드 아래 사용404 suds 요청에서 오류를 찾을 수 없습니다. - python - django
ZARINPAL_WEBSERVICE ='https://www.zarinpal.com/pg/services/WebGate/wsdl' # Required
MERCHANT_ID = 'blah-blah-blah' # Required
amount = 0
@method_decorator(login_required, name='dispatch')
class Upgrade(View):
def get(self, request):
current_plan = UserPlan.objects.filter(user=request.user).first()
all_plans = Plans.objects.all()
old_plans = None
if current_plan:
new_plans = all_plans.filter(no__gt=current_plan.no)
old_plans = all_plans.filter(no__lte=current_plan.no)
else:
new_plans = all_plans
return render(request, 'business/upgrade.html', {'current_plan': current_plan,
'new_plans': new_plans,
'old_plans': old_plans})
def post(self, request):
current_plan = UserPlan.objects.filter(user=request.user).first()
form = UpgradeForm(request.POST)
if form.is_valid():
new_plan = form.cleaned_data.get('requested_plan')
requested_plan = Plans.objects.filter(no=new_plan).first()
global amount
if current_plan:
amount = requested_plan.price - current_plan.price
else:
amount = requested_plan.price
# redirect to ZarinPal page and send data to it
description = u'TEST DESCRIPTION' # Required
email = form.cleaned_data.get('email') # Optional
mobile = form.cleaned_data.get('phone') # Optional
CallbackURL = 'http://127.0.0.1:8000/business/verify/'
client = Client(ZARINPAL_WEBSERVICE)
result = client.service.PaymentRequest(MERCHANT_ID, amount, description, email, mobile, CallbackURL)
if result.Status == 100:
return redirect('https://www.zarinpal.com/pg/StartPay/' + result.Authority)
else:
return HttpResponse('Error')
else:
messages.error(request, form.errors)
print(form.errors)
return redirect('upgrade_plan')
@login_required
def verify(request):
client = Client(ZARINPAL_WEBSERVICE)
if request.GET.get('Status') == 'OK':
result = client.service.PaymentVerification(MMERCHANT_ID,
request.GET['Authority'],
amount)
if result.Status == 100:
# in this step, it must create or update UserPlan row in DB.
# also, it should be create a row in Sells table and save transaction defatils.
return HttpResponse('Transaction was successfull. RefID: ' + str(result.RefID))
elif result.Status == 101:
return HttpResponse('Transaction submitted : ' + str(result.Status))
else:
return HttpResponse('Transaction failed. Status: ' + str(result.Status))
else:
return HttpResponse('Transaction failed or canceled by user')
를하지만 나에게 지불 게이트를 표시하기 전에, 그것은 오류 발생 :
Exception at /business/upgrade/
(404, 'Not Found')
Request Method: POST
Request URL: http://localhost:8000/business/upgrade/ Django Version: 1.11.4 Exception Type: Exception Exception Value:
(404, 'Not Found')
및 오류 코드의 라인입니다 :
result = client.service.PaymentRequest(MERCHANT_ID, amount, description, email, mobile, CallbackURL)
뭐가 문제 야? 어떻게 해결할 수 있을까요? 감사
* UPDATE *
아래의 조각 내 urls.py 파일입니다
from django.conf.urls import url
from . import views
urlpatterns = [
# for explicit urls
url(r'^upgrade/$', views.Upgrade.as_view(), name='upgrade_plan'),
url(r'^verify/$', views.verify, name='verify'),
]
실제보기 및 URL을 표시하십시오. –
@DanielRoseman 의견을 주셔서 감사합니다. 나는 문제의 코드를 업데이트하고 전체 views.py 파일을 추가했습니다. – msln