Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发布/获取请求w/JavaScript&;Python文件与HTML站点一起使用_Javascript_Python_Html_Post_Get - Fatal编程技术网

发布/获取请求w/JavaScript&;Python文件与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

我有一个HTML站点,除了一个带有点击事件的按钮之外什么都没有,它将调用JavaScript函数,唯一的目的是生成一个弹出窗口。所说的弹出窗口应该包含在单独的python文件上发出的GET请求的响应,该文件有一些代码可以与支付网关api进行对话问题是,JavaScript弹出窗口显示为空白,因为我不知道如何集成所有3个单独的文件。我查阅了大量资料,但运气不佳。我必须提到的是,如果不添加额外的库会更好,因为这是为了将来的Odoo(ERP)实现,而且该平台不接受导入除少数几个(据我所知)之外的python库。当你通过终端、邮递员、失眠症等运行代码时,与API的连接就起作用了。我只需要一些帮助,弄清楚如何通过web浏览器将所有内容组合起来

非常感谢您的帮助。这是HTML页面:

<!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