Skip to content

Commit

Permalink
feat: Add initiate transaction logic - paytm
Browse files Browse the repository at this point in the history
quick fix
  • Loading branch information
mrsaicharan1 committed Aug 10, 2019
1 parent 3addebe commit 327055a
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 1 deletion.
20 changes: 20 additions & 0 deletions app/api/helpers/payment.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import json

import paypalrestsdk
import checksum
import requests
import stripe
import omise
Expand Down Expand Up @@ -274,3 +275,22 @@ def charge_payment(order_identifier, token):
},
)
return charge


class PaytmPaymentsManager(object):
"""
Class to manage PayTM payments
"""

@staticmethod
def generate_checksum(paytm_params):
return Checksum.generate_checksum_by_str(json.dumps(paytm_params["body"]), "MID")









49 changes: 48 additions & 1 deletion app/api/orders.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import logging
import json
import pytz
from datetime import datetime
import requests


import omise
from flask import request, jsonify, Blueprint, url_for, redirect
Expand All @@ -22,7 +25,7 @@
send_notif_ticket_cancel
from app.api.helpers.order import delete_related_attendees_for_order, set_expiry_for_order, \
create_pdf_tickets_for_holder, create_onsite_attendees_for_order
from app.api.helpers.payment import AliPayPaymentsManager, OmisePaymentsManager
from app.api.helpers.payment import AliPayPaymentsManager, OmisePaymentsManager, PaytmPaymentsManager
from app.api.helpers.payment import PayPalPaymentsManager
from app.api.helpers.permission_manager import has_access
from app.api.helpers.permissions import jwt_required
Expand Down Expand Up @@ -602,3 +605,47 @@ def omise_checkout(order_identifier):
logging.info(f"Successful charge: {charge.id}. Order ID: {order_identifier}")

return redirect(make_frontend_url('orders/{}/view'.format(order_identifier)))


@order_misc_routes.route('/orders/<string:order_identifier>/paytm/initiate-transaction')
def initiate_transaction(order_identifier):
order = safe_query(db, Order, 'identifier', order_identifier, 'identifier')
paytmParams = {}
# body parameters
paytm_params["body"] = {
"requestType": "Payment",
"mid": "YOUR_MID_HERE",
"websiteName": "YOUR_WEBSITE_NAME",
"orderId": order.id,
"callbackUrl": url_for('',
order_identifier=order.identifier, _external=True),
"txnAmount": {
"value": order.amount,
"currency": order.event.currency,
},
"userInfo": {
"custId": order.user.id,
},
}
checksum = PayTMPaymentsManager.generate_checksum(paytm_params)
# head parameters
paytmParams["head"] = {
"signature" : checksum
}

post_data = json.dumps(paytm_params)

# staging
url = "https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid={}&orderId={}".\
format("MID", order.id)

# production

# url = "https://securegw.paytm.in/theia/api/v1/initiateTransaction?mid={}&orderId={}"

response = jsonify(requests.post(url, data = post_data, headers = {"Content-type": "application/json"}))

return response



0 comments on commit 327055a

Please sign in to comment.