@@ -83,13 +83,15 @@ class RazorpaySettings(Document): | |||||
frappe.throw(_("Please select another payment method. Razorpay does not support transactions in currency '{0}'").format(currency)) | frappe.throw(_("Please select another payment method. Razorpay does not support transactions in currency '{0}'").format(currency)) | ||||
def get_payment_url(self, **kwargs): | def get_payment_url(self, **kwargs): | ||||
return get_url("./integrations/razorpay_checkout?{0}".format(urlencode(kwargs))) | |||||
integration_request = create_request_log(kwargs, "Host", "Razorpay") | |||||
return get_url("./integrations/razorpay_checkout?token={0}".format(integration_request.name)) | |||||
def create_request(self, data): | def create_request(self, data): | ||||
self.data = frappe._dict(data) | self.data = frappe._dict(data) | ||||
try: | try: | ||||
self.integration_request = create_request_log(self.data, "Host", "Razorpay") | |||||
self.integration_request = frappe.get_doc("Integration Request", self.data.token) | |||||
self.integration_request.update_status(self.data, 'Queued') | |||||
return self.authorize_payment() | return self.authorize_payment() | ||||
except Exception: | except Exception: | ||||
@@ -6,7 +6,7 @@ $(document).ready(function(){ | |||||
"name": "{{ title }}", | "name": "{{ title }}", | ||||
"description": "{{ description }}", | "description": "{{ description }}", | ||||
"handler": function (response){ | "handler": function (response){ | ||||
razorpay.make_payment_log(response, options, "{{ reference_doctype }}", "{{ reference_docname }}"); | |||||
razorpay.make_payment_log(response, options, "{{ reference_doctype }}", "{{ reference_docname }}", "{{ token }}"); | |||||
}, | }, | ||||
"prefill": { | "prefill": { | ||||
"name": "{{ payer_name }}", | "name": "{{ payer_name }}", | ||||
@@ -24,7 +24,7 @@ $(document).ready(function(){ | |||||
frappe.provide('razorpay'); | frappe.provide('razorpay'); | ||||
razorpay.make_payment_log = function(response, options, doctype, docname){ | |||||
razorpay.make_payment_log = function(response, options, doctype, docname, token){ | |||||
$('.razorpay-loading').addClass('hidden'); | $('.razorpay-loading').addClass('hidden'); | ||||
$('.razorpay-confirming').removeClass('hidden'); | $('.razorpay-confirming').removeClass('hidden'); | ||||
@@ -36,7 +36,8 @@ razorpay.make_payment_log = function(response, options, doctype, docname){ | |||||
"razorpay_payment_id": response.razorpay_payment_id, | "razorpay_payment_id": response.razorpay_payment_id, | ||||
"options": options, | "options": options, | ||||
"reference_doctype": doctype, | "reference_doctype": doctype, | ||||
"reference_docname": docname | |||||
"reference_docname": docname, | |||||
"token": token | |||||
}, | }, | ||||
callback: function(r){ | callback: function(r){ | ||||
if (r.message && r.message.status == 200) { | if (r.message && r.message.status == 200) { | ||||
@@ -17,15 +17,21 @@ def get_context(context): | |||||
context.no_cache = 1 | context.no_cache = 1 | ||||
context.api_key = get_api_key() | context.api_key = get_api_key() | ||||
# all these keys exist in form_dict | |||||
if not (set(expected_keys) - set(frappe.form_dict.keys())): | |||||
try: | |||||
doc = frappe.get_doc("Integration Request", frappe.form_dict['token']) | |||||
payment_details = json.loads(doc.data) | |||||
for key in expected_keys: | for key in expected_keys: | ||||
context[key] = frappe.form_dict[key] | |||||
context[key] = payment_details[key] | |||||
context['token'] = frappe.form_dict['token'] | |||||
context['amount'] = flt(context['amount']) | context['amount'] = flt(context['amount']) | ||||
else: | |||||
frappe.redirect_to_message(_('Some information is missing'), _('Looks like someone sent you to an incomplete URL. Please ask them to look into it.')) | |||||
except Exception: | |||||
frappe.redirect_to_message(_('Invalid Token'), | |||||
_('Seems token you are using is invalid!'), | |||||
http_status_code=400, indicator_color='red') | |||||
frappe.local.flags.redirect_location = frappe.local.response.location | frappe.local.flags.redirect_location = frappe.local.response.location | ||||
raise frappe.Redirect | raise frappe.Redirect | ||||
@@ -37,7 +43,7 @@ def get_api_key(): | |||||
return api_key | return api_key | ||||
@frappe.whitelist(allow_guest=True) | @frappe.whitelist(allow_guest=True) | ||||
def make_payment(razorpay_payment_id, options, reference_doctype, reference_docname): | |||||
def make_payment(razorpay_payment_id, options, reference_doctype, reference_docname, token): | |||||
data = {} | data = {} | ||||
if isinstance(options, string_types): | if isinstance(options, string_types): | ||||
@@ -46,7 +52,8 @@ def make_payment(razorpay_payment_id, options, reference_doctype, reference_docn | |||||
data.update({ | data.update({ | ||||
"razorpay_payment_id": razorpay_payment_id, | "razorpay_payment_id": razorpay_payment_id, | ||||
"reference_docname": reference_docname, | "reference_docname": reference_docname, | ||||
"reference_doctype": reference_doctype | |||||
"reference_doctype": reference_doctype, | |||||
"token": token | |||||
}) | }) | ||||
data = frappe.get_doc("Razorpay Settings").create_request(data) | data = frappe.get_doc("Razorpay Settings").create_request(data) | ||||