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)
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)
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)
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
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>' )
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)
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')
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")
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})
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)
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')
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
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})
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)
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 })
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))