发布/获取请求w/JavaScript&;Python文件与HTML站点一起使用
我有一个HTML站点,除了一个带有点击事件的按钮之外什么都没有,它将调用JavaScript函数,唯一的目的是生成一个弹出窗口。所说的弹出窗口应该包含在单独的python文件上发出的GET请求的响应,该文件有一些代码可以与支付网关api进行对话问题是,JavaScript弹出窗口显示为空白,因为我不知道如何集成所有3个单独的文件。我查阅了大量资料,但运气不佳。我必须提到的是,如果不添加额外的库会更好,因为这是为了将来的Odoo(ERP)实现,而且该平台不接受导入除少数几个(据我所知)之外的python库。当你通过终端、邮递员、失眠症等运行代码时,与API的连接就起作用了。我只需要一些帮助,弄清楚如何通过web浏览器将所有内容组合起来 非常感谢您的帮助。这是HTML页面:发布/获取请求w/JavaScript&;Python文件与HTML站点一起使用,javascript,python,html,post,get,Javascript,Python,Html,Post,Get,我有一个HTML站点,除了一个带有点击事件的按钮之外什么都没有,它将调用JavaScript函数,唯一的目的是生成一个弹出窗口。所说的弹出窗口应该包含在单独的python文件上发出的GET请求的响应,该文件有一些代码可以与支付网关api进行对话问题是,JavaScript弹出窗口显示为空白,因为我不知道如何集成所有3个单独的文件。我查阅了大量资料,但运气不佳。我必须提到的是,如果不添加额外的库会更好,因为这是为了将来的Odoo(ERP)实现,而且该平台不接受导入除少数几个(据我所知)之外的pyt
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Serfinsa</title>
</head>
<body>
<!-- Boton de Pago -->
<btPagar onclick="popupwindow()">
<a href="https://test.serfinsacheckout.com:8080/" id="btPagar" style="float: left;">
<img src="https://test.serfinsacheckout.com:8080/img/btnpagar.png">
</a>
</btPagar>
</body>
<script src="serfinsa.js"></script>
<script src="https://test.serfinsacheckout.com:8080/Scripts/Serfinsa.Pay.js"></script>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
integrity="sha256-pasqAKBDmFT4eHoN2ndd6lN370kFiGUFyTiUHWhU7k8="
crossorigin="anonymous">
</script>
</html>
这是Python POST/GET请求:
import warnings
import contextlib
import requests
from urllib3.exceptions import InsecureRequestWarning
old_merge_environment_settings = requests.Session.merge_environment_settings
@contextlib.contextmanager
def no_ssl_verification():
opened_adapters = set()
def merge_environment_settings(self, url, proxies, stream, verify, cert):
# Verification happens only once per connection so we need to close
# all the opened adapters once we're done. Otherwise, the effects of
# verify=False persist beyond the end of this context manager.
opened_adapters.add(self.get_adapter(url))
settings = old_merge_environment_settings(self, url, proxies, stream, verify, cert)
settings['verify'] = False
return settings
requests.Session.merge_environment_settings = merge_environment_settings
try:
with warnings.catch_warnings():
warnings.simplefilter('ignore', InsecureRequestWarning)
yield
finally:
requests.Session.merge_environment_settings = old_merge_environment_settings
for adapter in opened_adapters:
try:
adapter.close()
except:
pass
idcliente = '97bd8cf4-e894-4cb5-b8cc-3fc31f79c81a'
valor = 35.00
id_transaccioncomercio = 1001
get_url = 'https://test.serfinsacheckout.com:8080/Pay/GateWay?token=' + idcliente + '&idTransaccion=2565'
post_url = 'https://test.serfinsacheckout.com:8080/api/PayApi/TokeyTran'
payload = {
'TokeyComercio': idcliente,
'Monto': valor,
'IdTransaccionCliente': id_transaccioncomercio
}
with no_ssl_verification():
r = requests.get(get_url)
# print("Status Code: {} [OK]".format(r.status_code))
print(r.content)
with no_ssl_verification():
r = requests.post(post_url, data = payload)
print(r.json())
Session = requests.Session()
Session.verify = True
在imo中,您最好需要一个框架,看看django/flask,我知道django非常适合它。然而,一旦我将代码移动到Odoo中,这将不受支持……根据我的经验,必须有另一种方法,没有库/框架,我看不到这样做的方法。另外,在这种情况下是否需要使用python?您可以使用javascript在python中实现精确的API网关。有人建议在我的脚本中创建一个python服务器。我想尝试一下并没有什么坏处……是的,当然,从同一个JavaScript文件中执行它会更容易……问题是我不知道如何在JavaScript中重新编写所有无SSL代码,并且由于某种原因,POST请求无法在JavaScript上通过……你知道如何重新编写吗?恐怕,我不知道。但我相信,如果你进行研究,你会找到解决办法。一旦你得到了一些工作代码,你可以在这里发布更多的帮助/说明。
import warnings
import contextlib
import requests
from urllib3.exceptions import InsecureRequestWarning
old_merge_environment_settings = requests.Session.merge_environment_settings
@contextlib.contextmanager
def no_ssl_verification():
opened_adapters = set()
def merge_environment_settings(self, url, proxies, stream, verify, cert):
# Verification happens only once per connection so we need to close
# all the opened adapters once we're done. Otherwise, the effects of
# verify=False persist beyond the end of this context manager.
opened_adapters.add(self.get_adapter(url))
settings = old_merge_environment_settings(self, url, proxies, stream, verify, cert)
settings['verify'] = False
return settings
requests.Session.merge_environment_settings = merge_environment_settings
try:
with warnings.catch_warnings():
warnings.simplefilter('ignore', InsecureRequestWarning)
yield
finally:
requests.Session.merge_environment_settings = old_merge_environment_settings
for adapter in opened_adapters:
try:
adapter.close()
except:
pass
idcliente = '97bd8cf4-e894-4cb5-b8cc-3fc31f79c81a'
valor = 35.00
id_transaccioncomercio = 1001
get_url = 'https://test.serfinsacheckout.com:8080/Pay/GateWay?token=' + idcliente + '&idTransaccion=2565'
post_url = 'https://test.serfinsacheckout.com:8080/api/PayApi/TokeyTran'
payload = {
'TokeyComercio': idcliente,
'Monto': valor,
'IdTransaccionCliente': id_transaccioncomercio
}
with no_ssl_verification():
r = requests.get(get_url)
# print("Status Code: {} [OK]".format(r.status_code))
print(r.content)
with no_ssl_verification():
r = requests.post(post_url, data = payload)
print(r.json())
Session = requests.Session()
Session.verify = True