Ejemplo n.º 1
0
def get_context(context):
    context.no_cache = 1
    context.api_key = get_api_key()

    try:
        doc = dataent.get_doc("Integration Request",
                              dataent.form_dict['token'])
        payment_details = json.loads(doc.data)

        for key in expected_keys:
            context[key] = payment_details[key]

        context['token'] = dataent.form_dict['token']
        context['amount'] = flt(context['amount'])
        context['subscription_id'] = payment_details['subscription_id'] \
         if payment_details.get('subscription_id') else ''

    except Exception as e:
        dataent.redirect_to_message(_('Invalid Token'),
                                    _('Seems token you are using is invalid!'),
                                    http_status_code=400,
                                    indicator_color='red')

        dataent.local.flags.redirect_location = dataent.local.response.location
        raise dataent.Redirect
Ejemplo n.º 2
0
def signup(full_name, email, subdomain, plan="Free"):
    status = _signup(full_name, email, subdomain, plan=plan)

    context = {
        'pathname': 'schools/signup' if distribution == 'schools' else 'signup'
    }

    if status == 'success':
        location = dataent.redirect_to_message(
            _('Thank you for signing up'),
            """<div><p>You will receive an email at <strong>{}</strong>,
			asking you to verify this account request.<br>
			If you are unable to find the email in your inbox, please check your SPAM folder.
			It may take a few minutes before you receive this email.</p>
			<p>Once you click on the verification link, your account will be ready in a few minutes.</p>
			</div>""".format(email),
            context=context)

    elif status == 'retry':
        return {}

    else:
        # something went wrong
        location = dataent.redirect_to_message(
            _('Something went wrong'),
            'Please try again or drop an email to [email protected]',
            context=context)

    return {'location': location}
Ejemplo n.º 3
0
	def get_context(self, context):
		newsletters = get_newsletter_list("Newsletter", None, None, 0)
		if newsletters:
			newsletter_list = [d.name for d in newsletters]
			if self.name not in newsletter_list:
				dataent.redirect_to_message(_('Permission Error'),
					_("You are not permitted to view the newsletter."))
				dataent.local.flags.redirect_location = dataent.local.response.location
				raise dataent.Redirect
			else:
				context.attachments = get_attachments(self.name)
		context.no_cache = 1
		context.show_sidebar = True
Ejemplo n.º 4
0
def get_context(context):
    context.no_cache = 1

    # all these keys exist in form_dict
    if not (set(expected_keys) - set(dataent.form_dict.keys())):
        for key in expected_keys:
            context[key] = dataent.form_dict[key]

    else:
        dataent.redirect_to_message(
            _('Some information is missing'),
            _('Looks like someone sent you to an incomplete URL. Please ask them to look into it.'
              ))
        dataent.local.flags.redirect_location = dataent.local.response.location
        raise dataent.Redirect
Ejemplo n.º 5
0
def create_stripe_subscription(gateway_controller, data):
    stripe_settings = dataent.get_doc("Stripe Settings", gateway_controller)
    stripe_settings.data = dataent._dict(data)

    stripe.api_key = stripe_settings.get_password(fieldname="secret_key",
                                                  raise_exception=False)
    stripe.default_http_client = stripe.http_client.RequestsClient()

    try:
        stripe_settings.integration_request = create_request_log(
            stripe_settings.data, "Host", "Stripe")
        stripe_settings.payment_plans = dataent.get_doc(
            "Payment Request",
            stripe_settings.data.reference_docname).subscription_plans
        return create_subscription_on_stripe(stripe_settings)

    except Exception:
        dataent.log_error(dataent.get_traceback())
        return {
            "redirect_to":
            dataent.redirect_to_message(
                _('Server Error'),
                _("It seems that there is an issue with the server's stripe configuration. In case of failure, the amount will get refunded to your account."
                  )),
            "status":
            401
        }
def get_context(context):
	context.no_cache = 1
	context.api_key = get_razorpay_settings().api_key

	context.brand_image = (dataent.db.get_value("Razorpay Settings", None, "brand_image")
		or './assets/epaas/images/erp-icon.svg')

	if dataent.form_dict.payment_request:
		payment_req = dataent.get_doc('Payment Request', dataent.form_dict.payment_request)
		validate_transaction_currency(payment_req.currency)

		if payment_req.status == "Paid":
			dataent.redirect_to_message(_('Already Paid'), _('You have already paid for this order'))
			return

		reference_doc = dataent.get_doc(payment_req.reference_doctype, payment_req.reference_name)

		context.amount = payment_req.grand_total
		context.title = reference_doc.company
		context.description = payment_req.subject
		context.doctype = payment_req.doctype
		context.name = payment_req.name
		context.payer_name = reference_doc.customer_name
		context.payer_email = reference_doc.get('email_to') or dataent.session.user
		context.order_id = payment_req.name
		context.reference_doctype = payment_req.reference_doctype
		context.reference_name = payment_req.reference_name

	# all these keys exist in form_dict
	elif not (set(expected_keys) - set(dataent.form_dict.keys())):
		for key in expected_keys:
			context[key] = dataent.form_dict[key]

		context['amount'] = flt(context['amount'])
		context['reference_doctype'] = context['reference_name'] = None

	else:
		dataent.redirect_to_message(_('Some information is missing'), _('Looks like someone sent you to an incomplete URL. Please ask them to look into it.'))
		dataent.local.flags.redirect_location = dataent.local.response.location
		raise dataent.Redirect
Ejemplo n.º 7
0
def get_context(context):
    context.no_cache = 1

    # all these keys exist in form_dict
    if not (set(expected_keys) - set(dataent.form_dict.keys())):
        for key in expected_keys:
            context[key] = dataent.form_dict[key]

        context['amount'] = flt(context['amount'])

        gateway_controller = get_gateway_controller(context.reference_docname)
        context['header_img'] = dataent.db.get_value("GoCardless Settings",
                                                     gateway_controller,
                                                     "header_img")

    else:
        dataent.redirect_to_message(
            _('Some information is missing'),
            _('Looks like someone sent you to an incomplete URL. Please ask them to look into it.'
              ))
        dataent.local.flags.redirect_location = dataent.local.response.location
        raise dataent.Redirect
Ejemplo n.º 8
0
def signup(last_name,
           email,
           subdomain,
           company_name,
           phone_number,
           plan=None,
           distribution="epaas",
           res=None):
    status = _signup(last_name,
                     email,
                     subdomain,
                     plan=plan,
                     distribution=distribution,
                     reseller=res)

    if status == 'success':
        location = dataent.redirect_to_message(
            _('Verify your Email'),
            """<div><p>You will receive an email at <strong>{}</strong>,
			asking you to verify this account request.<p><br>
			<p>It may take a few minutes before you receive this email.
			If you don't find it, please check your SPAM folder.</p>
			</div>""".format(email),
            indicator_color='blue')

    elif status == 'retry':
        return {}

    else:
        # something went wrong
        location = dataent.redirect_to_message(
            _('Something went wrong'),
            'Please try again or drop an email to [email protected]',
            indicator_color='red')

    return {'location': location}
Ejemplo n.º 9
0
def get_context(context):
    context.no_cache = 1

    # all these keys exist in form_dict
    if not (set(expected_keys) - set(list(dataent.form_dict))):
        for key in expected_keys:
            context[key] = dataent.form_dict[key]

        gateway_controller = get_gateway_controller(context.reference_doctype,
                                                    context.reference_docname)
        context.publishable_key = get_api_key(context.reference_docname,
                                              gateway_controller)
        context.image = get_header_image(context.reference_docname,
                                         gateway_controller)

        context['amount'] = fmt_money(amount=context['amount'],
                                      currency=context['currency'])

        if dataent.db.get_value(context.reference_doctype,
                                context.reference_docname,
                                "is_a_subscription"):
            payment_plan = dataent.db.get_value(context.reference_doctype,
                                                context.reference_docname,
                                                "payment_plan")
            recurrence = dataent.db.get_value("Payment Plan", payment_plan,
                                              "recurrence")

            context['amount'] = context['amount'] + " " + _(recurrence)

    else:
        dataent.redirect_to_message(
            _('Some information is missing'),
            _('Looks like someone sent you to an incomplete URL. Please ask them to look into it.'
              ))
        dataent.local.flags.redirect_location = dataent.local.response.location
        raise dataent.Redirect
Ejemplo n.º 10
0
	def create_request(self, data):
		import stripe
		self.data = dataent._dict(data)
		stripe.api_key = self.get_password(fieldname="secret_key", raise_exception=False)
		stripe.default_http_client = stripe.http_client.RequestsClient()

		try:
			self.integration_request = create_request_log(self.data, "Host", "Stripe")
			return self.create_charge_on_stripe()

		except Exception:
			dataent.log_error(dataent.get_traceback())
			return{
				"redirect_to": dataent.redirect_to_message(_('Server Error'), _("It seems that there is an issue with the server's stripe configuration. In case of failure, the amount will get refunded to your account.")),
				"status": 401
			}
Ejemplo n.º 11
0
    def create_payment_request(self, data):
        self.data = dataent._dict(data)

        try:
            self.integration_request = create_request_log(
                self.data, "Host", "Braintree")
            return self.create_charge_on_braintree()

        except Exception:
            dataent.log_error(dataent.get_traceback())
            return {
                "redirect_to":
                dataent.redirect_to_message(
                    _('Server Error'),
                    _("There seems to be an issue with the server's braintree configuration. Don't worry, in case of failure, the amount will get refunded to your account."
                      )),
                "status":
                401
            }
def make_payment(razorpay_payment_id, options, reference_doctype, reference_docname):
	try:
		razorpay_payment = dataent.get_doc({
			"doctype": "Razorpay Payment",
			"razorpay_payment_id": razorpay_payment_id,
			"data": options,
			"reference_doctype": reference_doctype,
			"reference_docname": reference_docname
		})

		razorpay_payment.insert(ignore_permissions=True)

		if dataent.db.get_value("Razorpay Payment", razorpay_payment.name, "status") == "Authorized":
			return {
				"redirect_to": razorpay_payment.flags.redirect_to or "razorpay-payment-success",
				"status": 200
			}

	except AuthenticationError, e:
		make_log_entry(e.message, options)
		return{
			"redirect_to": dataent.redirect_to_message(_('Server Error'), _("Seems issue with server's razorpay config. Don't worry, in case of failure amount will get refunded to your account.")),
			"status": 401
		}
		})

		razorpay_payment.insert(ignore_permissions=True)

		if dataent.db.get_value("Razorpay Payment", razorpay_payment.name, "status") == "Authorized":
			return {
				"redirect_to": razorpay_payment.flags.redirect_to or "razorpay-payment-success",
				"status": 200
			}

	except AuthenticationError, e:
		make_log_entry(e.message, options)
		return{
			"redirect_to": dataent.redirect_to_message(_('Server Error'), _("Seems issue with server's razorpay config. Don't worry, in case of failure amount will get refunded to your account.")),
			"status": 401
		}

	except InvalidRequest, e:
		make_log_entry(e.message, options)
		return {
			"redirect_to": dataent.redirect_to_message(_('Server Error'), _("Seems issue with server's razorpay config. Don't worry, in case of failure amount will get refunded to your account.")),
			"status": 400
		}

	except GatewayError, e:
		make_log_entry(e.message, options)
		return {
			"redirect_to": dataent.redirect_to_message(_('Server Error'), _("Seems issue with server's razorpay config. Don't worry, in case of failure amount will get refunded to your account.")),
			"status": 500
		}