Exemple #1
0
def handlerequest(request):
    # paytm will send you post request here
    if request.method =="POST":
        response_dict = dict()
        response_dict = dict(request.POST.items())
        paytmChecksum = response_dict['CHECKSUMHASH']
        response_dict.pop('CHECKSUMHASH', None)


        verify = Checksum.verifySignature(response_dict, MERCHANT_KEY, paytmChecksum)
        if verify:
            order_status = None

            if response_dict['RESPCODE'] == '01':
                order_id = response_dict['ORDERID']
                user = User.objects.get(username=response_dict['MERC_UNQ_REF'])
                userorder = UserOrder.objects.get(user=user)
                order_status ="SUCCESS"
                userorder.add_to_purchased(order_id,response_dict['TXNAMOUNT'])
                current = json.loads(userorder.orderpurchased)
                order_details = current[str(order_id)]
                return render(request, 'home/paytmstatus.html',{'order_status':order_status,"order_details":order_details})
            else:
                order_status = "FAILED"
                return render(request, 'home/paytmstatus.html',{'order_status':order_status,'message': response_dict['RESPMSG']})

    else:
        raise PermissionDenied
Exemple #2
0
def CheckOut(request):
    if request.method == "POST":
        order_id= Checksum.generateRandomString(6)
        try:
            userorder = UserOrder.objects.get(user=request.user)
            amount = userorder.current_cart_value
            userorder.add_to_processing(order_id)
            user_id = request.user.username
            paytmParams = dict()
            paytmParams["body"] = {
                "requestType": "Payment",
                "mid": mid,
                "websiteName": "WEBSTAGING",
                "orderId": order_id,
                "callbackUrl": "http://192.168.43.203:8000/handlerrequest/",
                "extendedInfo": {
                    "mercUnqRef": user_id,
                },
                "txnAmount": {
                    "value": str(amount),
                    "currency": "INR",
                },
                "userInfo": {
                    "custId": user_id,
                },
            }
            checksum = Checksum.generateSignature(json.dumps(paytmParams["body"]), MERCHANT_KEY)
            paytmParams["head"] = {
                "signature": checksum
            }
            post_data = json.dumps(paytmParams)
            url = "https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid="+mid+"&orderId="+order_id
            response = requests.post(url, data=post_data, headers={"Content-type": "application/json"}).json()
            print(json.dumps(response))
            signature= response["head"]["signature"]
            txn_token = response["body"]['txnToken']
            result_status = response["body"]['resultInfo']['resultStatus']
            verify = Checksum.verifySignature(json.dumps(response['body']), MERCHANT_KEY,signature)
            print(checksum)
            print(verify)

            if True:
                if result_status == "S":
                    return render(request, 'home/paytm.html',{'mid': mid ,'order_id':order_id,'txn_token': txn_token,'amount':amount})

        except UserOrder.DoesNotExist:
            pass
    else:
        raise PermissionDenied