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
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