@@ -14,7 +14,7 @@ import os, sys, importlib, inspect, json | |||
from .exceptions import * | |||
from .utils.jinja import get_jenv, get_template, render_template, get_email_from_template | |||
__version__ = '9.1.1' | |||
__version__ = '9.1.2' | |||
__title__ = "Frappe Framework" | |||
local = Local() | |||
@@ -83,13 +83,15 @@ class RazorpaySettings(Document): | |||
frappe.throw(_("Please select another payment method. Razorpay does not support transactions in currency '{0}'").format(currency)) | |||
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): | |||
self.data = frappe._dict(data) | |||
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() | |||
except Exception: | |||
@@ -329,7 +329,8 @@ frappe.ui.form.Timeline = Class.extend({ | |||
if(c.subject && c.communication_type==="Communication") { | |||
if(this.frm.doc.subject && !this.frm.doc.subject.includes(c.subject)) { | |||
c.show_subject = true; | |||
} else if(this.frm.meta.title_field && !!this.frm.doc[this.frm.meta.title_field].includes(c.subject)) { | |||
} else if(this.frm.meta.title_field && this.frm.doc[this.frm.meta.title_field] | |||
&& !!this.frm.doc[this.frm.meta.title_field].includes(c.subject)) { | |||
c.show_subject = true; | |||
} else if(!this.frm.doc.name.includes(c.subject)) { | |||
c.show_subject = true; | |||
@@ -6,7 +6,7 @@ $(document).ready(function(){ | |||
"name": "{{ title }}", | |||
"description": "{{ description }}", | |||
"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": { | |||
"name": "{{ payer_name }}", | |||
@@ -24,7 +24,7 @@ $(document).ready(function(){ | |||
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-confirming').removeClass('hidden'); | |||
@@ -36,7 +36,8 @@ razorpay.make_payment_log = function(response, options, doctype, docname){ | |||
"razorpay_payment_id": response.razorpay_payment_id, | |||
"options": options, | |||
"reference_doctype": doctype, | |||
"reference_docname": docname | |||
"reference_docname": docname, | |||
"token": token | |||
}, | |||
callback: function(r){ | |||
if (r.message && r.message.status == 200) { | |||
@@ -17,15 +17,21 @@ def get_context(context): | |||
context.no_cache = 1 | |||
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: | |||
context[key] = frappe.form_dict[key] | |||
context[key] = payment_details[key] | |||
context['token'] = frappe.form_dict['token'] | |||
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 | |||
raise frappe.Redirect | |||
@@ -37,7 +43,7 @@ def get_api_key(): | |||
return api_key | |||
@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 = {} | |||
if isinstance(options, string_types): | |||
@@ -46,7 +52,8 @@ def make_payment(razorpay_payment_id, options, reference_doctype, reference_docn | |||
data.update({ | |||
"razorpay_payment_id": razorpay_payment_id, | |||
"reference_docname": reference_docname, | |||
"reference_doctype": reference_doctype | |||
"reference_doctype": reference_doctype, | |||
"token": token | |||
}) | |||
data = frappe.get_doc("Razorpay Settings").create_request(data) | |||
@@ -19,18 +19,16 @@ | |||
"bold": 0, | |||
"collapsible": 0, | |||
"columns": 0, | |||
"depends_on": "eval:!doc.__islocal", | |||
"description": "Note: For best results, images must be of the same size and width must be greater than height.", | |||
"fieldname": "sb0", | |||
"fieldtype": "Section Break", | |||
"fieldname": "slideshow_name", | |||
"fieldtype": "Data", | |||
"hidden": 0, | |||
"ignore_user_permissions": 0, | |||
"ignore_xss_filter": 0, | |||
"in_filter": 0, | |||
"in_global_search": 0, | |||
"in_list_view": 0, | |||
"in_list_view": 1, | |||
"in_standard_filter": 0, | |||
"label": "", | |||
"label": "Slideshow Name", | |||
"length": 0, | |||
"no_copy": 0, | |||
"permlevel": 0, | |||
@@ -39,7 +37,7 @@ | |||
"read_only": 0, | |||
"remember_last_selected_value": 0, | |||
"report_hide": 0, | |||
"reqd": 0, | |||
"reqd": 1, | |||
"search_index": 0, | |||
"set_only_once": 0, | |||
"unique": 0 | |||
@@ -50,16 +48,18 @@ | |||
"bold": 0, | |||
"collapsible": 0, | |||
"columns": 0, | |||
"fieldname": "slideshow_name", | |||
"fieldtype": "Data", | |||
"depends_on": "eval:!doc.__islocal", | |||
"description": "Note: For best results, images must be of the same size and width must be greater than height.", | |||
"fieldname": "sb0", | |||
"fieldtype": "Section Break", | |||
"hidden": 0, | |||
"ignore_user_permissions": 0, | |||
"ignore_xss_filter": 0, | |||
"in_filter": 0, | |||
"in_global_search": 0, | |||
"in_list_view": 1, | |||
"in_list_view": 0, | |||
"in_standard_filter": 0, | |||
"label": "Slideshow Name", | |||
"label": "", | |||
"length": 0, | |||
"no_copy": 0, | |||
"permlevel": 0, | |||
@@ -68,7 +68,7 @@ | |||
"read_only": 0, | |||
"remember_last_selected_value": 0, | |||
"report_hide": 0, | |||
"reqd": 1, | |||
"reqd": 0, | |||
"search_index": 0, | |||
"set_only_once": 0, | |||
"unique": 0 | |||
@@ -147,7 +147,7 @@ | |||
"issingle": 0, | |||
"istable": 0, | |||
"max_attachments": 10, | |||
"modified": "2017-09-18 11:19:31.627585", | |||
"modified": "2017-10-05 18:56:20.094625", | |||
"modified_by": "Administrator", | |||
"module": "Website", | |||
"name": "Website Slideshow", | |||