付款成功后,我收到匿名用户错误

问题描述 投票:0回答:1

如何解决此错误,由于这个原因,我无法将用户更新为付款后的付款方式。由于这个原因,我也无法更新购买的订单。进行此更改后,我通过在views.py中删除current_user尝试了此问题,我无法将用户更新为付费用户。我是一个初学者,所以对此我不太了解。请帮助我解决此错误并更新数据库中的付费用户。

views.py

@login_required
def initiate_payment(request):
  transaction = Transaction.objects.create(made_by=request.user, amount=1)
  transaction.save()
  merchant_key = settings.PAYTM_SECRET_KEY
  params = (
      ('MID', settings.PAYTM_MERCHANT_ID),
      ('ORDER_ID', str(transaction.order_id)),
      ('CUST_ID', str(transaction.made_by.email)),
      ('TXN_AMOUNT', str(transaction.amount)),
      ('CHANNEL_ID', settings.PAYTM_CHANNEL_ID),
      ('WEBSITE', settings.PAYTM_WEBSITE),
      #('EMAIL', request.user.email),
      # ('MOBILE_N0', '9911223388'),
      ('INDUSTRY_TYPE_ID', settings.PAYTM_INDUSTRY_TYPE_ID),
      ('CALLBACK_URL', 'https://www.presimax.online/callback/'),
      # ('PAYMENT_MODE_ONLY', 'NO'),
  )

  paytm_params = dict(params)
  checksum = generate_checksum(paytm_params, merchant_key)

  transaction.checksum = checksum
  transaction.save()

  paytm_params['CHECKSUMHASH'] = checksum
  print('SENT: ', checksum)
  return render(request, 'redirect.html', context=paytm_params)
@csrf_exempt
def callback(request):
    if request.method == 'POST':
        received_data = dict(request.POST)
        paytm_params = {}
        paytm_checksum = received_data['CHECKSUMHASH'][0]
        for key, value in received_data.items():
            if key == 'CHECKSUMHASH':
                paytm_checksum = value[0]
            else:
                paytm_params[key] = str(value[0])
        # Verify checksum
        is_valid_checksum = verify_checksum(paytm_params, settings.PAYTM_SECRET_KEY, str(paytm_checksum))
        if is_valid_checksum:
            received_data['message'] = "Checksum Matched"
            current_user = request.user.userprofile
            current_user.paidmem = True
            current_user.save() 
        else:
            received_data['message'] = "Checksum Mismatched"
            return render(request, 'callback.html', context=received_data)
        return HttpResponse('Now You are a Club member visit club to fill required details.....')
class club(View):
    template_name = "club.html"
    def get(self,*args,**kwargs):
        if self.request.user.userprofile.Isclubmem:
            club_member = Clubmember.objects.filter(user=self.request.user.userprofile)
            context = {
                'club_member': club_member
            }
            return render(self.request,self.template_name,context=context)
        else:
            return redirect('core:pay')
        return render(self.request,self.template_name)
    def post(self, *args ,**kwargs):
        if not self.request.user.userprofile.Isclubmem:
            if self.request.method == 'POST':
                self.request.user.userprofile.userphoto = self.request.FILES.get('image')
                self.request.user.userprofile.phone_number = self.request.POST.get('userphonenumber')
                self.request.user.userprofile.Isclubmem = True
                k = refgenrator('any')
                while len(Clubmember.objects.filter(refer = k))>1:
                    k = refgenrator('any')
                club_member = Clubmember.objects.create(
                    user = self.request.user.userprofile,
                    refer = k,
                )
                ref = self.request.POST.get('referalcode')
                try:
                    referer = Clubmember.objects.filter(refer=ref).first()
                    referer.childern += 1
                    referer.level = int(referer.childern/3)+1
                    referer.downliner+= ' ' + self.request.user.username
                    referer.usermoney = referer.childern*100 - referer.usermoney
                    referer.save()
                except:
                    pass
                club_member.totalearnings = club_member.usermoney + club_member.downlineincome + club_member.travelfund + club_member.teamincome   
                club_member.save()
                self.request.user.userprofile.save()
                return redirect('core:home')
        elif not self.request.user.userprofile.paidmem:
            return redirect('core:pay')

models.py

class UserProfile(models.Model):
    user = models.OneToOneField(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    stripe_customer_id = models.CharField(max_length=50, blank=True, null=True)
    Isclubmem = models.BooleanField(default=False)
    paidmem = models.BooleanField(default=False)
    one_click_purchasing = models.BooleanField(default=False)
    userphoto = models.ImageField(upload_to='images/',default='', null=True)
    phone_number = models.IntegerField(default=False,  null=True)
    def __str__(self):
        return self.user.username
python django web-deployment
1个回答
0
投票
@login_required
def initiate_payment(request):
    # Only procceed further if not anonymus user
    if request.user.is_authenticated:
      transaction = Transaction.objects.create(made_by=request.user, amount=1)
      transaction.save()
      merchant_key = settings.PAYTM_SECRET_KEY
      params = (
          ('MID', settings.PAYTM_MERCHANT_ID),
          ('ORDER_ID', str(transaction.order_id)),
          ('CUST_ID', str(transaction.made_by.email)),
          ('TXN_AMOUNT', str(transaction.amount)),
          ('CHANNEL_ID', settings.PAYTM_CHANNEL_ID),
          ('WEBSITE', settings.PAYTM_WEBSITE),
          #('EMAIL', request.user.email),
          # ('MOBILE_N0', '9911223388'),
          ('INDUSTRY_TYPE_ID', settings.PAYTM_INDUSTRY_TYPE_ID),
          ('CALLBACK_URL', 'https://www.presimax.online/callback/'),
          # ('PAYMENT_MODE_ONLY', 'NO'),
      )

      paytm_params = dict(params)
      checksum = generate_checksum(paytm_params, merchant_key)

      transaction.checksum = checksum
      transaction.save()

      paytm_params['CHECKSUMHASH'] = checksum
      print('SENT: ', checksum)
      return render(request, 'redirect.html', context=paytm_params)
© www.soinside.com 2019 - 2024. All rights reserved.