Esempio n. 1
0
    def create(self, request):
        order_id = str(self.request.GET.get('order_id'))
        cust_id = str(self.request.GET.get('cust_id')) # CUST_001
        txn_token = str(self.request.GET.get('txn_token'))
        value = str(self.request.GET.get('value'))
        paytmParams = dict()

        paytmParams["body"] = {
            "txnAmount": {
                "value": value,
                "currency": "INR",
            },
            "userInfo": {
                "custId": cust_id,
            },
        }
        checksum = PaytmChecksum.generateSignature(json.dumps(paytmParams["body"]), MERCHANT_KEY)

        paytmParams["head"] = {
            "txnToken": txn_token,
            "signature": checksum
        }

        post_data = json.dumps(paytmParams)
        url = paytm_stage_url + "updateTransactionDetail?mid={}&orderId={}".format(MERCHANT_ID, order_id)
        response = requests.post(url, data=post_data, headers={"Content-type": "application/json"}).json()

        return Response(response, status=status.HTTP_200_OK)
Esempio n. 2
0
    def create(self, request):
        order_id = str(self.request.GET.get('order_id')) # ORDERID_98765
        cust_id = str(self.request.GET.get('cust_id')) # CUST_001
        value = str(self.request.GET.get('value'))
        paytmParams = dict()

        paytmParams["body"] = {
            "requestType": "Payment",
            "mid": MERCHANT_ID,
            "websiteName": "www.khetibaddi.com",
            "orderId": order_id,
            "callbackUrl": "https://www.khetibaddi.com/callback",
            "txnAmount": {
                "value": value,
                "currency": "INR",
            },
            "userInfo": {
                "custId": cust_id,
            },
        }
        checksum = PaytmChecksum.generateSignature(json.dumps(paytmParams["body"]), MERCHANT_KEY)

        paytmParams["head"] = {
            "signature": checksum
        }

        post_data = json.dumps(paytmParams)
        url = paytm_stage_url + "initiateTransaction?mid={}&orderId={}".format(MERCHANT_ID, order_id)
        response = requests.post(url, data=post_data, headers={"Content-type": "application/json"}).json()

        return Response(response, status=status.HTTP_200_OK)
Esempio n. 3
0
    def create(self, request):
        order_id = str(self.request.GET.get('order_id'))
        txn_id = str(self.request.GET.get('txn_id'))
        ref_id = str(self.request.GET.get('ref_id'))
        refund_amount = str(self.request.GET.get('refund_amount'))

        paytmParams = dict()

        paytmParams["body"] = {
            "mid"         : MERCHANT_ID,
            "txnType"     : "REFUND",
            "orderId"     : order_id,
            "txnId"       : txn_id,
            "refId"       : ref_id,
            "refundAmount" : refund_amount
        }
        checksum = PaytmChecksum.generateSignature(json.dumps(paytmParams["body"]), MERCHANT_KEY)

        paytmParams["head"] = {
            "signature": checksum
        }

        post_data = json.dumps(paytmParams)
        url = "https://securegw-stage.paytm.in/refund/apply"
        response = requests.post(url, data = post_data, headers = {"Content-type": "application/json"}).json()

        return Response(response, status=status.HTTP_200_OK)
Esempio n. 4
0
def checksum():
    #if 'username' not in session:
    #return {"status" : 415, "msg": "user not logged in"}
    data = request.get_json()
    print(data)
    #data['username'] = session['username']
    data["order_id"] = "ORD" + str(datetime.now().timestamp())
    #call insertIntoOrders
    code, msg = insertIntoOrders(data)
    if code != 200:
        d2['msg'] = msg
        return jsonify(d2)
    transaction_data = {
        "MID": config.mid,
        "WEBSITE": "WEBSTAGING",
        "INDUSTRY_TYPE_ID": "Retail",
        "ORDER_ID": data["order_id"],
        "CUST_ID": "007",
        "TXN_AMOUNT": str(data['total_price']),
        "CHANNEL_ID": "WEB",
        "MOBILE_NO": "7777777777",
        "EMAIL": "*****@*****.**",
        "CALLBACK_URL": "https://server.codeium.tech/callback"
    }
    transaction_data["CHECKSUMHASH"] = PaytmChecksum.generateSignature(
        transaction_data, config.mkey)
    return transaction_data
Esempio n. 5
0
def trans_status(environ):
    if environ.method == "POST":

        # initialize a dictionary
        paytmParams = dict()
        print(environ.body)
        print(type(environ.body))
        bytess = environ.body
        string = bytess.decode('ASCII')
        lists = string.split('&')
        orderid = lists[9]
        final_orderid1 = orderid.split('=')
        final_orderid2 = final_orderid1[1]

        print(final_orderid2)

        # body parameters
        paytmParams["body"] = {

            # Find your MID in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys
            "mid": "MvhSMh12903239445983",

            # Enter your order id which needs to be check status for
            "orderId": final_orderid2,
        }

        # Generate checksum by parameters we have in body
        # Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys
        checksum = PaytmChecksum.generateSignature(
            json.dumps(paytmParams["body"]), "@neDJV6QZxIuTVBR")

        # head parameters
        paytmParams["head"] = {

            # put generated checksum value here
            "signature": checksum
        }

        # prepare JSON string for request
        post_data = json.dumps(paytmParams)

        # for Staging
        url = "https://securegw-stage.paytm.in/v3/order/status"

        # for Production
        # url = "https://securegw.paytm.in/v3/order/status"

        response = requests.post(url,
                                 data=post_data,
                                 headers={
                                     "Content-type": "application/json"
                                 }).json()
        print(response)
        if response['body']['resultInfo']['resultCode'] == '01':
            orders.objects.filter(id=final_orderid2).update(
                transiction_status="SUCCESS")
            return HttpResponse(
                'Payment Successfull <br/> <a href="http://127.0.0.1/ecart/dashboard.html">Go to Home</a>'
            )
Esempio n. 6
0
def paytm(request):
    if request.method == "POST":
        data = json.loads(request.body)
        print(data)
        print()
        print()
        paytmParams = dict()
        paytmParams["body"] = {
            "requestType": "Payment",
            "mid": PAYTM_MERCHANT_ID,
            "websiteName": "WEBSTAGING",
            "orderId": data['order_id'],
            "callbackUrl": PAYTM_CALLBACK,
            "txnAmount": {
                "value": data['amount'],
                "currency": "INR",
            },
            "userInfo": {
                "custId": data['email'],
            },
        }

        checksum = PaytmChecksum.generateSignature(
            json.dumps(paytmParams["body"]), PAYTM_SECRET_KEY)

        print(checksum)
        orders.objects.create(
            order_id=data['order_id'],
            cust_mail=data['email'],
            checksum=str(checksum),
            cust_id=CustomUser.objects.filter(email=data['email']).values_list(
                'id', flat=True)[0],
            product_id=data['product_id'])
        paytmParams["head"] = {"signature": checksum}

        post_data = json.dumps(paytmParams)

        url = "https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid="+PAYTM_MERCHANT_ID+"&orderId=" + \
            data['order_id']
        response = requests.post(url,
                                 data=post_data,
                                 headers={
                                     "Content-type": "application/json"
                                 }).json()
        print(response)
        print(data['order_id'])
        orders.objects.filter(order_id=data['order_id']).update(
            trans_id=response["body"]["txnToken"])
        return JsonResponse(response, safe=False)
Esempio n. 7
0
def checkout(request):
    if request.method == "POST":
        items_json = request.POST.get('itemsJson', '')
        name = request.POST.get('name', '')
        amount = request.POST.get('amount', '')
        email = request.POST.get('email', '')
        address = request.POST.get('address1', '') + " " + request.POST.get(
            'address2', '')
        city = request.POST.get('city', '')
        state = request.POST.get('state', '')
        zip_code = request.POST.get('zip_code', '')
        phone = request.POST.get('phone', '')
        order = Orders(items_json=items_json,
                       name=name,
                       email=email,
                       address=address,
                       city=city,
                       state=state,
                       zip_code=zip_code,
                       phone=phone,
                       amount=amount)
        order.save()

        thank = True
        id = order.order_id
        # return render(request, 'shop/checkout.html', {'thank':thank, 'id': id})
        # Request paytm to transfer the amount to your account after payment by user
        param_dict = {
            'MID': 'gTDbqQ24016430565205',
            '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/',
        }

        # Generate checksum by parameters we have
        # Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys
        param_dict['CHECKSUMHASH'] = PaytmChecksum.generateSignature(
            param_dict, MERCHANT_KEY)
        return render(request, 'shop/mypaytm.html', {'param_dict': param_dict})

    return render(request, 'shop/checkout.html')
Esempio n. 8
0
def callback():
    callback_response = request.form.to_dict()
    if callback_response == None:
        print("--------------------------------------------------------")
        return "None is return"
    print("///////////////////////////////////////////////////////////")
    print(callback_response)
    checksum_verification_status = PaytmChecksum.verifySignature(
        callback_response, config.mkey, callback_response.get("CHECKSUMHASH"))
    transaction_verify_payload = {
        "MID": callback_response.get("MID"),
        "ORDERID": callback_response.get("ORDERID"),
        "CHECKSUMHASH": callback_response.get("CHECKSUMHASH")
    }
    url = BASE_URL + '/order/status'
    verification_response = requests.post(url=url,
                                          json=transaction_verify_payload)
    return redirect("https://codeium.tech")
Esempio n. 9
0
def handlerequest(request):
    # paytm will send you post request here
    form = request.POST
    response_dict = {}
    for i in form.keys():
        response_dict[i] = form[i]
        if i == 'CHECKSUMHASH':
            checksum = form[i]

    verify = PaytmChecksum.generateSignature(response_dict, MERCHANT_KEY)
    if verify:
        if response_dict['RESPCODE'] == '01':
            print('order successful')
        else:
            print('order was not successful because' +
                  response_dict['RESPMSG'])
    return render(request, 'shop/paymentstatus.html',
                  {'response': response_dict})
Esempio n. 10
0
def GenerateChecksum(oid):

        
    paytmParams["body"] = {
       "requestType": "Payment",
       "mid": "eVExLv25221231925149",
       "websiteName": "DEFAULT",
       "orderId": oid,
       #"callbackUrl": "https://merchant.com/callback",

       "userInfo": {
           "custId": "0154214"

    },
    }
    checksum = PaytmChecksum.generateSignature(json.dumps(paytmParams["body"]), "E%mbk4m&7y6QOXvE")

    return str(checksum)
Esempio n. 11
0
def checkout(request):
    if request.method == "POST":
        items_json = request.POST.get('itemsJson', '')
        name = request.POST.get('name', '')
        amount = request.POST.get('amount', '')
        email = request.POST.get('email', '')
        address = request.POST.get('address1', '') + " " + request.POST.get(
            'address2', '')
        city = request.POST.get('city', '')
        state = request.POST.get('state', '')
        zip_code = request.POST.get('zip_code', '')
        phone = request.POST.get('phone', '')
        order = Orders(items_json=items_json,
                       name=name,
                       email=email,
                       address=address,
                       city=city,
                       state=state,
                       zip_code=zip_code,
                       phone=phone,
                       amount=amount)
        order.save()
        update = OrderUpdate(order_id=order.order_id,
                             update_desc="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 the amount to your account after payment by user
        param_dict = {
            'MID': 'SrTRRm96963317448628',
            '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'] = PaytmChecksum.generateSignature(
            param_dict, MERCHANT_KEY)
        return render(request, 'shop/paytm.html', {'param_dict': param_dict})

    return render(request, 'shop/checkout.html')
Esempio n. 12
0
def initiate_transaction(order_id):
    order = Order.objects.get(id=order_id)
    paytmParams = dict()

    paytmParams['body'] = {
        'requestType': 'Payment',
        'websiteName': 'WEBSTAGING',
        'mid': PAYTM_MERCHANT_ID,
        'orderId': order.id,
        'callbackUrl':
        'http://127.0.0.1:8000' + str(reverse_lazy('processing')),
        'txnAmount': {
            'value': float(order.total),
            'currency': 'INR',
        },
        'userInfo': {
            'custId': order.user.id if order.user else str(uuid.uuid4()),
        },
    }

    # Generate checksum by parameters we have in body
    checksum = PaytmChecksum.generateSignature(json.dumps(paytmParams['body']),
                                               PAYTM_MERCHANT_KEY)

    paytmParams['head'] = {'signature': checksum}

    post_data = json.dumps(paytmParams)

    # for Staging
    url = f"https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid={PAYTM_MERCHANT_ID}&orderId={order.id}"

    # for Production
    # url = "https://securegw.paytm.in/theia/api/v1/initiateTransaction?mid=YOUR_MID_HERE&orderId=ORDERID_98765"

    response = requests.post(url,
                             data=post_data,
                             headers={
                                 'Content-type': 'application/json'
                             }).json()
    return response  # Todo: Handle failures
Esempio n. 13
0
def process_transaction(request):
    if request.method == "POST":
        paytmParams = dict()
        # print(request.body)#b'ORDERID=XkfFW&MID=PAYTM_MERCHANT_ID&TXNAMOUNT=1.00&CURRENCY=INR&STATUS=TXN_FAILURE&RESPCODE=501&RESPMSG=Your+payment+has+been+declined+by+your+bank.+Please+contact+your+bank+for+any+queries.+If+money+has+been+deducted+from+your+account%2C+your+bank+will+inform+us+within+48+hrs+and+we+will+refund+the+same&BANKTXNID=&CHECKSUMHASH=VubIZfHEjo8mf%2B9Q%2FeXTRS2thrRbZm07mO4M55vVoGPt6W9tH3JhFJdrKiK3iqWS5495gjn%2B%2BNKlky5iwYihcGt7OX%2Bv%2BfDkf2PUGW%2F2FoI%3D'
        # print(type(request.body))#<class 'bytes'>
        data = request.body
        string = data.decode('ASCII')
        print(string)
        result = string.split('&')
        orderid = result[0].split('=')[1]
        # print(orderid)
        # # body parameters
        paytmParams["body"] = {"mid": PAYTM_MERCHANT_ID, "orderId": orderid}
        checksum = PaytmChecksum.generateSignature(
            json.dumps(paytmParams["body"]), PAYTM_SECRET_KEY)
        paytmParams["head"] = {"signature": checksum}
        post_data = json.dumps(paytmParams)

        # for Staging
        url = "https://securegw-stage.paytm.in/v3/order/status"

        # for Production
        # url = "https://securegw.paytm.in/v3/order/status"

        response = requests.post(url,
                                 data=post_data,
                                 headers={
                                     "Content-type": "application/json"
                                 }).json()
        print(response)
        status = False
        if response['body']['resultInfo']['resultCode'] == '01':
            orders.objects.filter(order_id=orderid).update(status="SUCCESS")
            status = True
            return render(request, "payment_status.html", {"status": status})
        else:
            orders.objects.filter(order_id=orderid).update(status="FAILED")
            return render(request, "payment_status.html", {"status": status})
Esempio n. 14
0
def ordersave(request):
    if request.method == "POST":
        data = json.loads(request.body)
        name = data['name']
        email = data['email']

        address = data['address']
        pincode = data['pincode']
        phoneno = data['phoneno']
        productid = data['productid']
        orders.objects.create(name=name,
                              email=email,
                              address=address,
                              pincode=pincode,
                              productid_id=productid,
                              phone_no=phoneno)
        price = Product.objects.filter(
            id=productid).values('price').latest('dateadded')
        orderid = orders.objects.filter(
            email=email).values('id').latest('date')
        orderid_id = orderid['id']
        orderid_id = str(orderid_id)
        amount = price['price']
        amount = str(amount)
        email = str(email)

        paytmParams = dict()

        paytmParams["body"] = {
            "requestType": "Payment",
            "mid": "MvhSMh12903239445983",
            "websiteName": "WEBSTAGING",
            "orderId": orderid_id,
            "callbackUrl": "http://127.0.0.1:8000/orders/callback/",
            "txnAmount": {
                "value": amount,
                "currency": "INR",
            },
            "userInfo": {
                "custId": email,
            },
        }

        # Generate checksum by parameters we have in body
        # Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys
        checksum = PaytmChecksum.generateSignature(
            json.dumps(paytmParams["body"]), "@neDJV6QZxIuTVBR")

        paytmParams["head"] = {"signature": checksum}

        post_data = json.dumps(paytmParams)

        # for Staging
        url = "https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid=MvhSMh12903239445983&orderId=" + orderid_id

        # for Production
        # url = "https://securegw.paytm.in/theia/api/v1/initiateTransaction?mid=YOUR_MID_HERE&orderId=ORDERID_98765"
        response = requests.post(url,
                                 data=post_data,
                                 headers={
                                     "Content-type": "application/json"
                                 }).json()
        orders.objects.filter(id=orderid_id).update(
            checksumhash=response['head']['signature'],
            transtxn=response['body']['txnToken'])
        return_dict = dict()

        return_dict["orderid"] = orderid_id
        return JsonResponse(return_dict, safe=False)
Esempio n. 15
0
def processorderguest(request, slug):
    if request.method == 'POST':
        product = get_object_or_404(Product, slug=slug)
        total = product.price * int(request.POST.get('quantity'))
        int(request.POST.get('c_postal_zip'))
        order_id = generate_order_id()
        order = OrderId(order_id=order_id,
                        amount=total,
                        order_status='Initiated',
                        payment_status='Initiated')
        order.save()
        product = get_object_or_404(Product, slug=slug)
        neworder = Order(order_id=order,
                         title=product.title,
                         quantity=request.POST.get('quantity'),
                         size=request.POST.get('size'),
                         color=request.POST.get('color'))
        neworder.save()
        request.session['email'] = request.POST.get('c_email_address')
        request.session['order_id'] = order_id
        ship = ShippingDetail(order_id=order,
                              first_name=request.POST.get('c_fname'),
                              last_name=request.POST.get('c_lname'),
                              zipcode=request.POST.get('c_postal_zip'),
                              state=request.POST.get('c_state_country'),
                              address='{} / {}'.format(
                                  request.POST.get('c_address'),
                                  request.POST.get('c_doorno')),
                              email=request.POST.get('c_email_address'),
                              phone_number=request.POST.get('c_phone'),
                              note=request.POST.get('c_order_notes'))
        ship.save()
        if request.POST.get('paymentmode') == 'online':
            paytmParams = dict()

            paytmParams["body"] = {
                "requestType": "Payment",
                "mid": "nzZtLZ85936435132832",
                "websiteName": "WEBSTAGING",
                "orderId": str(order_id),
                "callbackUrl":
                "https://www.teesfactory.cf/order/verify-payment",
                "txnAmount": {
                    "value": str(total),
                    "currency": "INR",
                },
                "userInfo": {
                    "custId": request.POST.get('c_fname'),
                },
            }

            # Generate checksum by parameters we have in body
            # Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys
            checksum = PaytmChecksum.generateSignature(
                json.dumps(paytmParams["body"]), "Q0T5qByoUdSgB9@_")

            paytmParams["head"] = {"signature": checksum}

            post_data = json.dumps(paytmParams)

            # for Staging
            url = "https://securegw.paytm.in/theia/api/v1/initiateTransaction?mid={}&orderId={}".format(
                'nzZtLZ85936435132832', order_id)

            # for Production
            # url = "https://securegw.paytm.in/theia/api/v1/initiateTransaction?mid=YOUR_MID_HERE&orderId=ORDERID_98765"
            response = requests.post(url,
                                     data=post_data,
                                     headers={
                                         "Content-type": "application/json"
                                     }).json()
            print(response)
            return render(request, 'orders/processpayment.html', {
                'order_id': order_id,
                'token': response['body']['txnToken']
            })
            # except ValueError:
            #     messages.error(request, 'Invalid Pincode', extra_tags='danger')
            #     return redirect('checkout')
        elif request.POST.get('paymentmode') == 'cod':
            responsecode = '01'
            reponsemessage = 'Your order successfully placed'
            updateorder = get_object_or_404(OrderId, order_id=order_id)
            updateorder.order_status = 'ordered'
            updateorder.payment_status = 'COD order'
            updateorder.save()
            sendit(request.POST.get('c_email_address'), order_id)
            return render(
                request, 'orders/paymentstatus.html', {
                    'reponsemessage': reponsemessage,
                    'responsecode': responsecode,
                    'orderid': order_id
                })
Esempio n. 16
0
import requests
import json

from paytmchecksum import PaytmChecksum

# Generate Checksum via Hash/Array
# initialize an Hash/Array
paytmParams = {}

paytmParams["MID"] = "YOUR_MID_HERE"
paytmParams["ORDERID"] = "YOUR_ORDER_ID_HERE"

# Generate checksum by parameters we have
# Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys
paytmChecksum = PaytmChecksum.generateSignature(paytmParams, "YOUR_MERCHANT_KEY")
verifyChecksum = PaytmChecksum.verifySignature(paytmParams, "YOUR_MERCHANT_KEY",paytmChecksum)

print("generateSignature Returns:" + str(paytmChecksum))
print("verifySignature Returns:" + str(verifyChecksum))

# Generate Checksum via String
# initialize JSON String
body = "{\"mid\":\"YOUR_MID_HERE\",\"orderId\":\"YOUR_ORDER_ID_HERE\"}"

# Generate checksum by parameters we have
# Find your Merchant Key in your Paytm Dashboard at https://dashboard.paytm.com/next/apikeys
paytmChecksum = PaytmChecksum.generateSignature(body, "YOUR_MERCHANT_KEY")
verifyChecksum = PaytmChecksum.verifySignature(body, "YOUR_MERCHANT_KEY", paytmChecksum)

print("generateSignature Returns:" + str(paytmChecksum))