예제 #1
0
def handlerequest(request):  #paytm will send POST request herre
    if request.method == 'POST':
        form = request.POST
        response_dict = {}
        for i in form.keys():
            response_dict[i] = form[i]
            if i == 'CHECKSUMHASH':
                checksum = form[i]
        verify = Checksum.verify_checksum(response_dict, MKEY, checksum)
        print(response_dict)

        if verify:
            if response_dict['RESPCODE'] == '01':
                print('order successful')
                idlist = response_dict['ORDERID'].split('-')
                for i in idlist:
                    ord = Orders.objects.get(id=i)
                    ord.payment_status = 'Paid'
                    ord.transaction_id = response_dict['TXNID']
                    ord.save()

            else:
                print('order was not successful because' +
                      response_dict['RESPMSG'])
        return render(request, 'app/payment_status.html',
                      {'response': response_dict})

    else:
        return redirect(menu)
예제 #2
0
def VerifyPaytmResponse(response):
    response_dict = {}
    if response.method == "POST":
        data_dict = {}
        for key in response.POST:
            data_dict[key] = response.POST[key]
        MID = data_dict['MID']
        ORDERID = data_dict['ORDERID']
        verify = Checksum.verify_checksum(data_dict,
                                          settings.PAYTM_MERCHANT_KEY,
                                          data_dict['CHECKSUMHASH'])
        if verify:
            STATUS_URL = settings.PAYTM_TRANSACTION_STATUS_URL
            headers = {
                'Content-Type': 'application/json',
            }
            data = '{"MID":"%s","ORDERID":"%s"}' % (MID, ORDERID)
            check_resp = requests.post(STATUS_URL, data=data,
                                       headers=headers).json()
            if check_resp['STATUS'] == 'TXN_SUCCESS':
                response_dict['verified'] = True
                response_dict['paytm'] = check_resp
                return (response_dict)
            else:
                response_dict['verified'] = False
                response_dict['paytm'] = check_resp
                return (response_dict)
        else:
            response_dict['verified'] = False
            return (response_dict)
    response_dict['verified'] = False
    return response_dict
예제 #3
0
def hendlerequest(request):
    #paytm will send payment reques
    #paytm will send payment reques
    form = request.POST
    response_dict = {}
    for i in form.keys():
        response_dict[i] = form[i]
        if i == 'CHECKSUMHASH':
            checksum = form[i]
    print("res:====", response_dict)
    verify = Checksum.verify_checksum(response_dict, MERCHANT_KEY, checksum)
    if verify:
        if response_dict['RESPCODE'] == '01':
            response_dict['thank'] = True
            print('order successful')
        else:
            Order = order.objects.filter(
                order_id=(int(response_dict['ORDERID']) - 478997))
            print(Order)
            update = OrderUpdate.objects.filter(
                order_id=(int(response_dict['ORDERID']) - 478997))
            Order.delete()
            update.delete()
            print('order unsuccessfull because', response_dict['RESPMSG'])

    else:
        print("order unsuccessful because not verify_checksum",
              response_dict['RESPMSG'])
    return render(request, 'shop/paymentstatus.html',
                  {'response': response_dict})
예제 #4
0
def payment(request):
    destination = request.POST.get('dest')
    uname = request.POST.get('username')
    quantity = int(request.POST.get('qtyTicket'))
    price = int(request.POST.get('priceTicket'))

    if request.method == 'POST':
        payments = Payments()
        payments.DestinationName = destination
        payments.Name = uname
        payments.Quantity = quantity
        payments.Price = quantity * price
        payments.save()

    MERCHANT_KEY = 'bQfzzkKzeCbR7jOl'
    param_dict = {
        'MID': 'amitgo59443067266036',
        'ORDER_ID': randomStringDigits(),  # order id 
        'TXN_AMOUNT': str(price * quantity),  # amount demanded for.
        'CUST_ID': "*****@*****.**",
        'INDUSTRY_TYPE_ID': 'Retail',
        'WEBSITE': 'STAGING',  # for demo purpose only.
        'CHANNEL_ID': 'WEB',
        'CALLBACK_URL':
        'http://127.0.0.1:8000/notification/'  # on this url paytm will send you the status of request
    }
    param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(
        param_dict, MERCHANT_KEY)

    return render(request, 'pay/makepay.html', {'data': param_dict})
예제 #5
0
파일: views.py 프로젝트: taru2001/Webster
def payment(request):
    amount = request.POST.get('amount')
    order=request.POST.get('order')
    user = User.objects.get(username = request.session["username"])
    b = user.coins
    (b)=(b)+ int(amount)
    user.coins=int(b)
    user.save()
    id = order
    param_dict={
                'MID':'WorldP64425807474247',
                'ORDER_ID':str(id),
                'TXN_AMOUNT':str(amount),
                'CUST_ID':'*****@*****.**',
                'INDUSTRY_TYPE_ID':'Retail',
                'WEBSITE':'WEBSTAGING',
                'CHANNEL_ID':'WEB',
	            'CALLBACK_URL':'http://127.0.0.1:8000/paytm/handlerequest/',
        }
    param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(param_dict,MERCHANT_KEY)
    context = {
            'payment_url': settings.PAYTM_PAYMENT_GATEWAY_URL,
            'comany_name': settings.PAYTM_COMPANY_NAME,
            'param_dict': param_dict
        }
    return render(request,'paytm/paytm.html',context)
예제 #6
0
def order_create(request):
    cart = Cart(request)
    data_dict = {}
    if request.method == 'POST':
        data_dict = {}
        for key in request.POST:
            data_dict[key] = request.POST[key]
        OrderFormSet = formset_factory(OrderCreateForm,
                                       extra=data_dict['form-TOTAL_FORMS'])
        formset = OrderFormSet(request.POST)
        # form = OrderCreateForm(request.POST)
        if formset.is_valid():
            # order=Order.objects.create(customer=request.user, hostel=data_dict['hostel'], wing=data_dict['wing'], room_no=data_dict['room_no'], phone_no=data_dict['phone_no'], delivery_time=data_dict['delivery_time'])
            # orders = formset.save(commit=False)
            orders_id = []
            for order in formset:
                order_ID = Checksum.__id_generator__()
                order.instance.order_id = order_ID
                order.instance.customer = request.user
                order.instance.save()

                # order.customer=request.user
                # order.save()
                for item in cart:
                    OrderItem.objects.create(order=order.instance,
                                             product=item['product'],
                                             price=item['price'],
                                             quantity=item['quantity'])
                orders_id.append(order.instance.id)
            cart.clear()
        order = Order.objects.get(order_id=order_ID)
        bill_amount = order.get_total_cost()
        return payment(request, order_ID, bill_amount)
        # return render(request, 'orders/order/created.html', {'orders': orders_id})
    else:
        OrderFormSet = formset_factory(OrderCreateForm, extra=1)
        formset = OrderFormSet()
    return render(request, 'orders/order/create.html', {'formset': formset})


# def create(request):
#     AddressInlineFormSet = inlineformset_factory(Address, Store, form=AddressForm)

#      if request.method == 'POST':
#          storeForm = StoreForm(request.POST)

#          if storeForm.is_valid():
#              new_store = storeForm.save()
#              addressInlineFormSet = AddressInlineFormSet(request.POST, request.FILES, instance=new_store)

#              if addressInlineFormSet.is_valid():
#                 addressInlineFormSet.save()
#                 return HttpResponseRedirect(reverse('some_happy_customer_url'))

#              else:
#                 classificationformset = ClassificationInlineFormSet(request.POST, request.FILES, instance=new_store)
#      else:
#           addressInlineFormSet = AddressInlineFormSet()
#           storeForm = StoreForm()
#      return render(request, 'create.html', locals())
예제 #7
0
def order(request):

    if request.method == "POST":
        name = request.POST.get('name', '')
        amount = request.POST.get('amount', '')
        phone = request.POST.get('phone', '')
        timeval = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")
        strdata = str(name) + str(amount) + str(phone) + str(timeval)

        string = json.dumps(strdata).encode('utf-8')
        order_id = hashlib.sha256(string).hexdigest()
        order = Order(name=name, amount=amount, phone=phone)
        order.save()

        param_dict = {
            'MID': 'kaKgCA19293434392137',
            'ORDER_ID': str(order_id),
            'TXN_AMOUNT': str(amount),
            'CUST_ID': '*****@*****.**',
            'INDUSTRY_TYPE_ID': 'Retail',
            'WEBSITE': 'WEBSTAGING',
            'CHANNEL_ID': 'WEB',
            'CALLBACK_URL': 'http://127.0.0.1:8000/mapnav/handlerequest/',
        }
        param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(
            param_dict, MERCHANT_KEY)
        return render(request, 'mapnav/paytm.html', {'param_dict': param_dict})

    return render(request, 'mapnav/order.html')
예제 #8
0
def addcustomer(request):
    form = CheckoutForms(request.POST)
    cart = Cart.objects.all()
    m = len(Checkout.objects.all())
    l = len(cart)
    cart = cart[l - 1]
    if form.is_valid():
        register = Checkout(name=form.cleaned_data['name'],
                            email=form.cleaned_data['email'],
                            phone=form.cleaned_data['phone'],
                            adress=form.cleaned_data['adress'],
                            zipcode=form.cleaned_data['zipcode'],
                            city=form.cleaned_data['city'],
                            state=form.cleaned_data['state'],
                            amount=cart.total,
                            order_id=m)
    register.save()
    id = register.order_id
    param_dict = {
        'MID': 'kIDPCg37721409585673',
        'ORDER_ID': str(id),
        'TXN_AMOUNT': str(register.amount),
        'CUST_ID': register.email,
        'INDUSTRY_TYPE_ID': 'Retail',
        'WEBSITE': 'WEBSTAGING',
        'CHANNEL_ID': 'WEB',
        'CALLBACK_URL': 'http://localhost:8000/accounts/handlerequest/',
    }
    param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(
        param_dict, MERCHANT_KEY)
    return render(request, 'paytm.html', {'param_dict': param_dict})
예제 #9
0
파일: views.py 프로젝트: vnitikesh/paytm
def payment(request):
    # Generating unique order id
    order_id = Checksum.__id_generator__()
    bill_amount = "100"
    data_dict = {
        'ORDER_ID': order_id,
        'TXN_AMOUNT': bill_amount,
    }
    return PaytmPaymentPage(data_dict)
예제 #10
0
def checkout(request,total):
    # dest = Destination.get_all_item()
    

    if request.method=="POST":
    
        firstname = request.POST.get('firstname', '')
        lastname = request.POST.get('lastname', '')
        amount = total
        email = request.POST.get('email', '')
        address = request.POST.get('address', '') + " " + request.POST.get('address2', '')
        # city = request.POST.get('city', '')
        state = request.POST.get('state', '')
        zip_code = request.POST.get('zip', '')
        country = request.POST.get('country', '')

        order = Orders(firstname=firstname,lastname=lastname, email=email, address= address, state=state, zip_code=zip_code, country=country, amount=amount)
        order.save()
        update = OrderUpdate(order_id=order.order_id, update_desc="The order has been placed")
        update.save()

        thank=True
        request.session['oid'] = str(order.order_id)
        request.session.set_expiry(3000)
        id = order.order_id
        # return render(request, 'checkout.html', {'thank':thank, 'id':id})
        #request paytm to transfer the amount to your account after payment by user
        param_dict={

                'MID': 'CokjuX79375453320495',
                'ORDER_ID': str(order.order_id),
                'TXN_AMOUNT': amount,
                'CUST_ID': email,
                'INDUSTRY_TYPE_ID': 'Retail',
                'WEBSITE': 'WEBSTAGING',
                'CHANNEL_ID': 'WEB',
                'CALLBACK_URL':'http://127.0.0.1:8000/handlerequest/',

        }
        param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(param_dict, MERCHANT_KEY)
        return  render(request, 'payment.html', {'param_dict': param_dict})
        
    # return render(request, 'checkout.html')

    user = int(request.session['uid'])
    cart = Carts.objects.filter(user = user)
    items = {}
    if cart:
        for c in cart:
            print("cart:",c)
            product_id = c.product_id
            Items = Item.objects.get(id=product_id)
            items[c]=Items
        print(cart,items)
    context={'item':items,'total':total}

    return render(request, 'checkout.html',context)
예제 #11
0
def confirm(request):
    username = functions.get_username(request)
    if username is not None:
        user = User.objects.get(username=username)
        email = user.email
        product = []
        cart = Cart.objects.filter(username=username)
        cart_count = functions.cart_count(username)
        for item in cart:
            prod = Product.objects.get(id=item.product_id)
            product.append(prod)
            total = 0
            for i in product:
                price = i.price
                total = total + price
        prod_id = " "
        prod_id = str(prod_id)
        for item in cart:
            prod = Product.objects.get(id=item.product_id)
            produ = str(prod.id)
            prod_id = prod_id + produ
            prod_id = prod_id + ","
        user_id = str(user.id)
        today = date.today()
        year = str(today.year)
        month = str(today.month)
        day = str(today.day)
        t = time.localtime()
        current_time = time.strftime("%H%M%S", t)
        pay_id = day + month + year + current_time + "_" + user_id
        # for payement table
        pay = Payement()
        pay.id = pay_id
        pay.user_id = user.id
        pay.products = prod_id
        pay.amount = total
        pay.save()
        payeeee=Payement.objects.get(id=pay_id)
        print(payeeee)
        param_dict = {
            "MID": "",
            "ORDER_ID": str(pay_id),
            "TXN_AMOUNT": str(total),
            "CUST_ID": email,
            "INDUSTRY_TYPE_ID": "Retail",
            "WEBSITE": "WEBSTAGING",
            "CHANNEL_ID": "WEB",
            "CALLBACK_URL": "http://127.0.0.1:8000/handlerequest/",
        }
        param_dict["CHECKSUMHASH"] = Checksum.generate_checksum(
            param_dict, MERCHANT_KEY
        )
        return render(request, "paytm.html", {"param_dict": param_dict})
    return render(request, "shop/checkout.html")
예제 #12
0
def PaytmPaymentPage(paytmParams):
    paytmParams['MID'] = MERCHANT_ID
    paytmParams['WEBSITE'] = PAYTM_WEBSITE
    paytmParams['INDUSTRY_TYPE_ID'] = PAYTM_INDUSTRY_TYPE_ID
    paytmParams['CHANNEL_ID'] = PAYTM_CHANNEL_ID
    paytmParams['MOBILE_NO'] = PAYTM_MOBILE
    paytmParams['EMAIL'] = PAYTM_EMAIL
    paytmParams['CALLBACK_URL'] = CALLBACK_URL
    paytmParams['CHECKSUMHASH'] = Checksum.generate_checksum(
        paytmParams, MERCHANT_KEY)
    return GeneratePaymentPage(paytmParams)
예제 #13
0
def payment(request):
    # provide your unique order id
    # if you don't have your unique order id then
    order_id = Checksum.__id_generator__()
    bill_amount = "100"
    cust_id = "*****@*****.**"
    data_dict = {
        'ORDER_ID': order_id,
        'TXN_AMOUNT': bill_amount,
        'CUST_ID': cust_id
    }
    return PaytmPaymentPage(data_dict)
예제 #14
0
def checkout(request):
    if request.method == "POST":
        items_json = request.POST.get('itemsjson')
        amount = int(request.POST.get('amount'))
        name = request.POST.get('iname')
        email = request.POST.get('email')
        phone = request.POST.get('phone')
        address = request.POST.get('address1', '') + " " + request.POST.get(
            'address1', '')
        city = request.POST.get('city')
        state = request.POST.get('state')
        zip_code = request.POST.get('zip_code')
        order = Orders(items_json=items_json,
                       amount=amount,
                       name=name,
                       email=email,
                       phone=phone,
                       address=address,
                       city=city,
                       state=state,
                       zip_code=zip_code,
                       date=datetime.now())
        order.save()
        update = OrderUpdate(order_id=order.order_id,
                             update_desc="The order has been placed")
        update.save()
        pay_type = request.POST.get('pay_type')
        thankyou = True
        id = order.order_id
        if pay_type:
            return render(request, 'shop/checkout.html', {
                'thank': thankyou,
                'id': id
            })
        else:
            #Request paytm to transfer the amount to your account after payment by user
            param_dict = {
                'MID': 'WorldP64425807474247',
                'ORDER_ID': str(order.order_id),
                'TXN_AMOUNT': str(amount),
                'CUST_ID': email,
                'INDUSTRY_TYPE_ID': 'Retail',
                'WEBSITE': 'WEBSTAGING',
                'CHANNEL_ID': 'WEB',
                'CALLBACK_URL': 'http://127.0.0.1:8000/shop/handlerequest/',
            }
            param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(
                param_dict, MERCHANT_KEY)
            return render(request, 'shop/paytm.html',
                          {'param_dict': param_dict})

    return render(request, 'shop/checkout.html')
예제 #15
0
def checkout(request):
    
    logger.info("Checking Out.....")
    active_user = request.user 
    
    address , created = Address.objects.get_or_create(user = active_user)        
    addressform = AddressForm(request.POST,instance=address)
    logger.error(addressform.errors)
    if addressform.is_valid():
        # address = addressform.save(commit=False)
        address.name = str(request.POST['firstname']) + " " + str(request.POST['lastname'])  
        address.save()
    
    else:
        address.delete()
        logger.debug("Form is not valid...")
        return redirect('homepage')
    
    order = Order.objects.create(user = active_user, amount = str(request.cart.total()) )    
    order.billing_address = str(address)
    order.save()

    paytmParams = {
        "MID" : MERCHANT_ID,
        "WEBSITE" : "WEBSTAGING",
        "INDUSTRY_TYPE_ID" : "Retail",
        "CHANNEL_ID" : "WEB",
        "ORDER_ID" : str(order.order_id),
        "CUST_ID" : active_user.email,
        "EMAIL" : active_user.email,
        "TXN_AMOUNT" : "{0:.2f}".format(float(order.amount)),
        "CALLBACK_URL" : "http://localhost:8000/orderdone/",
    }
    if active_user.mobile_number :
        paytmParams['MOBILE_NO'] = str( active_user.mobile_number )

    checksum = Checksum.generate_checksum(paytmParams, MERCHANT_KEY)
    paytmParams["CHECKSUMHASH"] = checksum 
    logger.debug("Payment request Sent (cart cleared) ...... ")

    # Booking Order
    for cartitem in request.cart.cartitem.all():
        orderitem = OrderItem.objects.create(
            order = order,
            item = cartitem.item,
            quantity = cartitem.quantity,
        )

    # empty the cart
    del request.session['cart_id']
    request.cart.delete()
    return render(request , 'pizza/paytm.html', {'paytmParams':paytmParams})
예제 #16
0
def payment(request):
    payment_holder = PaymentHolder.objects.get(payment_id=24)
    order_id = Checksum.__id_generator__()
    payment_holder.paytm_order_id = order_id
    payment_holder.save()
    bill_amount = str(payment_holder.amount_owed)
    cust_id = payment_holder.user.contact
    data_dict = {
        'ORDER_ID': order_id,
        'TXN_AMOUNT': bill_amount,
        'CUST_ID': cust_id,
    }
    return PaytmPaymentPage(data_dict)
예제 #17
0
def response(request):
    if request.method == "POST":
        MERCHANT_KEY = settings.PAYTM_MERCHANT_KEY
        data_dict = {}
        for key in request.POST:
            data_dict[key] = request.POST[key]
        verify = Checksum.verify_checksum(data_dict, MERCHANT_KEY, data_dict['CHECKSUMHASH'])
        if verify:
            PaytmHistory.objects.create(user=request.user, **data_dict)
            return render(request,"response.html",{"paytm":data_dict})
        else:
            return HttpResponse("checksum verify failed")
    return HttpResponse(status=200)
예제 #18
0
 def perform_create(self, serializer):
     order_id = Checksum.__id_generator__()
     bill_amount = serializer["payment_amount"]
     cust = Customer.objects.get(pk=1)
     cust_id = cust.customer_id
     data_dict = {
         'ORDER_ID': order_id,
         'TXN_AMOUNT': bill_amount,
         'CUST_ID': cust_id
     }
     print(data_dict)
     print(PaytmPaymentPage(data_dict))
     return PaytmPaymentPage(data_dict)
예제 #19
0
def homepage(request):
    form = TicketForm()
    amount = 0
    if request.method == "POST":
        form = TicketForm(request.POST)
        if form.is_valid():
            ticket = form.save(commit=False)
            ticket.user = request.user

            active_user = User.objects.get(email=request.user.email)

            amount = int(
                request.POST['no_of_tickets']) * 100  # for now price is fixed
            ticket.save()

            cust_id = 'apneaap' + str(time()) + str(ticket.ticket_id)

            print(" ticket  id : ", ticket.ticket_id)
            print("customer id :", cust_id)
            print("mobile number : ", active_user.mobile_number)
            print(" Email : ", active_user.email)

            paytmParams = {
                "MID": MERCHANT_ID,
                "WEBSITE": "WEBSTAGING",
                "INDUSTRY_TYPE_ID": "Retail",
                "CHANNEL_ID": "WEB",
                "ORDER_ID": str(ticket.ticket_id),
                "CUST_ID": cust_id,
                "EMAIL": request.user.email,
                "TXN_AMOUNT": "{0:.2f}".format(amount),
                "CALLBACK_URL": "http://localhost:8000/qrcode/",
            }
            if active_user.mobile_number:
                paytmParams["MOBILE_NO"] = str(active_user.mobile_number)

            checksum = Checksum.generate_checksum(paytmParams, MERCHANT_KEY)
            print("Checksum Generated ....... " + checksum + '\n')

            paytmParams["CHECKSUMHASH"] = checksum

            pprint(dict(paytmParams))

            return render(request, 'booking/paytm.html',
                          {'param_dict': paytmParams})

    return render(request, 'booking/homepage.html', {
        'form': form,
        'amount': amount
    })
예제 #20
0
def payment(request):
    MERCHANT_KEY = settings.PAYTM_MERCHANT_KEY
    MERCHANT_ID = settings.PAYTM_MERCHANT_ID
    CALLBACK_URL = settings.HOST_URL+ settings.PAYTM_CALLBACK_URL
    # Generating unique temporary ids
    order_id = Checksum.__id_generator__()

    bill_amount = 10
    if bill_amount:
        data_dict = {
                    'MID':MERCHANT_ID,
                    'ORDER_ID':str(order_id),
                    'TXN_AMOUNT': str(bill_amount),
                    'CUST_ID':'*****@*****.**',
                    'INDUSTRY_TYPE_ID':'Retail',
                    'WEBSITE': 'WEBSTAGING',
                    'CHANNEL_ID':'WEB',
                    'CALLBACK_URL': CALLBACK_URL,
                    }
        param_dict = data_dict
        param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(data_dict, MERCHANT_KEY)
        return render(request,"payment.html",{'paytmdict':param_dict})
    return HttpResponse("Bill Amount Could not find. ?bill_amount=10")
예제 #21
0
def get_paytm_payment_transactions_details(paytm_order_id):
    paytmParams = dict()
    paytmParams["MID"] = MERCHANT_ID
    paytmParams["ORDERID"] = paytm_order_id
    checksum = Checksum.generate_checksum(paytmParams, MERCHANT_KEY)
    paytmParams["CHECKSUMHASH"] = checksum
    post_data = json.dumps(paytmParams)
    response = requests.post(URL,
                             data=post_data,
                             headers={
                                 "Content-type": "application/json"
                             }).json()

    return response
예제 #22
0
def my_order(request):
    cart = Cart.objects.filter(customer=request.user)
    canteen = Cart.objects.filter(
        customer=request.user).values('canteen').distinct()
    print(canteen)
    datetime = request.POST.get('date_time')
    total = 0
    orderid = ''
    for i in canteen:
        price = Cart.objects.filter(customer=request.user,
                                    canteen=i['canteen']).aggregate(
                                        Sum('price'))

        cant = User.objects.get(id=i['canteen'])
        ord = Orders.objects.create(total_price=price['price__sum'],
                                    ordered_by=request.user,
                                    time=datetime,
                                    ordered_to=cant)
        total += int(price['price__sum'])
        if len(orderid) == 0:
            orderid += str(ord.id)
        else:
            orderid = orderid + '-' + str(ord.id)
        print(orderid)

        cart = Cart.objects.filter(customer=request.user, canteen=i['canteen'])
        for i in cart:
            Myorder.objects.create(canteen_id=cant,
                                   menu=i.food,
                                   quant=i.quantity,
                                   order_id=ord)
            i.delete()

    param_dict = {
        'MID': MID,  #merchant id
        'ORDER_ID': orderid,
        'TXN_AMOUNT': str(total),
        'CUST_ID': str(request.user.id),
        'INDUSTRY_TYPE_ID': 'Retail',
        'WEBSITE': 'WEBSTAGING',  #for testing
        'CHANNEL_ID': 'WEB',
        'MOBILE_NO': str(request.user.phone),
        'EMAIL': str(request.user.email),
        'CALLBACK_URL': 'http://127.0.0.1:8000/handlerequest/'
    }

    param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(param_dict, MKEY)

    return render(request, 'app/checkout.html', {'param_dict': param_dict})
예제 #23
0
    def verify_order(self, request):
        self.request = request
        self.paytm_dict = request.POST
        checksumhash, self.paytm_params = self.get_checksumhash()
        is_checksum_valid = Checksum.verify_checksum(self.paytm_params,
                                                     self.PAYTM_MERCHANT_KEY,
                                                     checksumhash)
        self.order = self.get_order()
        self.update_order()

        if not is_checksum_valid:
            self.order.status = self.order.Status.FRAUD
            self.order.save()

        return is_checksum_valid
예제 #24
0
def payment(request):
    MERCHANT_KEY = settings.PAYTM_MERCHANT_KEY
    MERCHANT_ID = settings.PAYTM_MERCHANT_ID
    get_lang = "/" + get_language() if get_language() else ''
    CALLBACK_URL = settings.HOST_URL + get_lang + settings.PAYTM_CALLBACK_URL
    # Generating unique temporary ids
    order_id = Checksum.__id_generator__()

    bill_amount = 100
    if bill_amount:
        data_dict = {
                    'MID':MERCHANT_ID,
                    'ORDER_ID':str('1'),
                    'TXN_AMOUNT': str(bill_amount),
                    'CUST_ID':'*****@*****.**',
                    'INDUSTRY_TYPE_ID':'Retail',
                    'WEBSITE': settings.PAYTM_WEBSITE,
                    'CHANNEL_ID':'WEB',
                    #'CALLBACK_URL':CALLBACK_URL,
                }
        param_dict = data_dict
        param_dict['CHECKSUMHASH'] = Checksum.generate_checksum(data_dict, MERCHANT_KEY)
        return render(request,"payment.html",{'paytmdict':param_dict})
    return HttpResponse("Bill Amount Could not find. ?bill_amount=10")
예제 #25
0
def generate(order):
    dic = {
        "mid": "WqmatC77859343122059",
        "order_id": str(order.order_id),
        "customer_id": str(order.user.user_id),
        "txn_amount": str(order.price),
        "channel_id": "WEB",
        "website": "WEBSTAGING",
        "mobile_no": str(order.user.phone_no),
        "industry_type_id": "Retail",
        "callback_url": "http://127.0.0.1:8000/payments/verify"
    }
    checksum = Checksum.generate_checksum(dic, "2aqz4AwRzEM#8Wl@")
    dic["checksum"] = checksum
    return dic
예제 #26
0
def handlepaymentmode(request):
    if (request.method == "POST"):
        goods_name = request.POST.get("goods_name")
        goods_amount = request.POST.get("goods_amount")
        goods_count = request.POST.get("goods_count")
        price = request.POST.get("price")
        first_name = request.POST.get("first_name")
        last_name = request.POST.get("last_name")
        phone_number = request.POST.get("phone_number")
        email = request.POST.get("email")
        state = request.POST.get("state")
        city = request.POST.get("city")
        code = request.POST.get("code")
        local = request.POST.get("local")
        w = []
        rd = random.randint(1, 4000)
        if rd not in w:
            w.append(rd)
        orderId = w[len(w) - 1]
        customeroredered = orderfromwebsite(
            goods_name=goods_name,
            goods_amount=goods_amount,
            goods_count=goods_count,
            orderId="LXI" + str(orderId),
            price=price,
            first_name=first_name,
            last_name=last_name,
            phone_number=phone_number,
            email=email,
            state=state,
            city=city,
            code=code,
            local=local,
        )
        customeroredered.save()
        data_dict = {
            'MID': 'hoIoYf23662428021793',
            'ORDER_ID': "LXI" + str(orderId),
            'TXN_AMOUNT': str(price),
            'CUST_ID': email,
            'INDUSTRY_TYPE_ID': 'Retail',
            'WEBSITE': 'WEBSTAGING',
            'CHANNEL_ID': 'WEB',
            'CALLBACK_URL': 'http://127.0.0.1:8000/paytmsentposturl'
        }
        data_dict['CHECKSUMHASH'] = Checksum.generate_checksum(
            data_dict, MERCHANT_KEY)
        return render(request, "paytmhit.html", {'params': data_dict})
예제 #27
0
def handlerequest(request):
    form = request.POST
    response_dict = {}
    for i in form.keys():
        response_dict[i] = form[i]
        if i == 'CHECKSUMHASH':
            checksum = form[i]

    verify = Checksum.verify_checksum(response_dict, MERCHANT_KEY, checksum)
    if verify:
        if response_dict['RESPCODE'] == '01':
            print('order successful')
        else:
            print('order was not successful because' +
                  response_dict['RESPMSG'])
    return render(request, 'shopping.html', {'response': response_dict})
예제 #28
0
def checkout(request):
    if request.method == "POST":
        name = request.POST.get('name', '')
        amount = request.POST.get('amount', '')
        item_list = request.POST.get('items_list', '')
        address = request.POST.get('address1', '') + " " + request.POST.get(
            'address2', '')
        email = request.POST.get('email', '')
        phone = request.POST.get('phone', '')
        city = request.POST.get('city', '')
        state = request.POST.get('state', '')
        zip_code = request.POST.get('zip_code', '')
        order = Order(name=name,
                      email=email,
                      phone=phone,
                      city=city,
                      state=state,
                      amount=amount,
                      Items_list=item_list,
                      zipcode=zip_code,
                      address=address)
        order.save()
        update = OrderUpdate(order_id=order.order_id,
                             update_disc="The order has been placed")
        update.save()
        thank = True
        id = order.order_id
        #return render(request,'shop/checkout.html',{'thank':thank,'id': id})
        # Request paytm to transfer amount to my account after payment is done by user
        param_dict = {
            'MID': 'Paytm Merchant Account Id',
            'ORDER_ID': str(order.order_id),
            'TXN_AMOUNT': str(amount),
            'CUST_ID': email,
            'INDUSTRY_TYPE_ID': 'Retail',
            'WEBSITE': 'WEBSTAGING',
            'CHANNEL_ID': 'WEB',
        }

        param_dict['CHECKSUMHASH'] = Checksum.generate_checksum_by_str(
            param_dict, MERCHANT_KEY, salt=None)

        return render(request, 'shop/paytm.html', {
            'param_dict': param_dict,
            'thank': True
        })
    return render(request, 'shop/checkout.html')
예제 #29
0
def handlerequest(request):
    # Paytem will send you post request
    form = request.POST
    response_dict = {}
    for i in form.keys():
        response_dict[i] = form[i]
        if i == 'CHECKSUMHASH':
            checksum = form[i]

    verify = Checksum.verify_checksum(response_dict, MERCHANT_KEY, checksum)
    if verify:
        if response_dict['RESPCODE'] == '01':
            print('order successful')
        else:
            print('Order was not successful beacuse ' +
                  response_dict['RESPMSG'])
    return render(request, 'paymentstatus.html', {'response': response_dict})
예제 #30
0
def VerifyPaytmResponse(response):
    response_dict = {}
    if response.method == "POST":
        data_dict = {}
        for key in response.POST:
            data_dict[key] = response.POST[key]
        verify = Checksum.verify_checksum(data_dict, MERCHANT_KEY,
                                          data_dict['CHECKSUMHASH'])
        if verify:
            response_dict['verified'] = True
            response_dict['paytm'] = data_dict
            return response_dict
        else:
            response_dict['verified'] = False
            return response_dict
    response_dict['verified'] = False
    return response_dict