Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

48 linhas
1.6 KiB

  1. # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
  2. # License: MIT. See LICENSE
  3. import frappe
  4. from frappe import _
  5. from frappe.utils import flt
  6. import json
  7. from frappe.integrations.doctype.braintree_settings.braintree_settings import get_client_token, get_gateway_controller
  8. no_cache = 1
  9. expected_keys = ('amount', 'title', 'description', 'reference_doctype', 'reference_docname',
  10. 'payer_name', 'payer_email', 'order_id', 'currency')
  11. def get_context(context):
  12. context.no_cache = 1
  13. # all these keys exist in form_dict
  14. if not (set(expected_keys) - set(list(frappe.form_dict))):
  15. for key in expected_keys:
  16. context[key] = frappe.form_dict[key]
  17. context.client_token = get_client_token(context.reference_docname)
  18. context['amount'] = flt(context['amount'])
  19. gateway_controller = get_gateway_controller(context.reference_docname)
  20. context['header_img'] = frappe.db.get_value("Braintree Settings", gateway_controller, "header_img")
  21. else:
  22. frappe.redirect_to_message(_('Some information is missing'),
  23. _('Looks like someone sent you to an incomplete URL. Please ask them to look into it.'))
  24. frappe.local.flags.redirect_location = frappe.local.response.location
  25. raise frappe.Redirect
  26. @frappe.whitelist(allow_guest=True)
  27. def make_payment(payload_nonce, data, reference_doctype, reference_docname):
  28. data = json.loads(data)
  29. data.update({
  30. "payload_nonce": payload_nonce
  31. })
  32. gateway_controller = get_gateway_controller(reference_docname)
  33. data = frappe.get_doc("Braintree Settings", gateway_controller).create_payment_request(data)
  34. frappe.db.commit()
  35. return data