美文网首页
农银e管家收银台PC版收款语音播报插件开发实录(一)

农银e管家收银台PC版收款语音播报插件开发实录(一)

作者: 悠鸣海 | 来源:发表于2019-04-16 00:11 被阅读0次

    〇、项目背景

    农银e管家收银台网页版收银模块未提供语音播报功能,本项目实践旨在于开发一个辅助软件来提供二维码收款语音播报功能。

    扫码盒子收款时访问https://e.abchina.com/site/CashCollect/DirectCashCollect获取收款结果,收款结果响应内容格式为JSON,内容如下:

    {
        "Code": 0,
        "Message": "成功",
        "Proposal": "",
        "Value":
        {
            "OrderNo": "190101234567890",
            "ErrorMessage": null,
            "IsWaiting": false
        },
        "SecAlg": null
    }
    

    一、技术选型

    (一)Chrome浏览器插件

    第一次考虑使用谷歌浏览器“扩展功能”(插件)的形式去辅助农银e管家相关的功能模块,插件可同时用于360极速浏览器、FireFox等浏览器,目的在于为可以安装专属的该类型浏览器,在桌面创建自动打开农银e管家的快捷方式方便客户使用。

    根据谷歌浏览器插件开发的原则,插件能够获取网页的DOM内容,可以获取指定URL请求响应头的内容,但不能获取响应(Response) 的内容。因此放弃了Chrome浏览器插件作为技术选型。

    (二)HTTP/HTTPS Proxy

    开源平台上有Anyproxy、Whistler、Mitmproxy等网络代理服务器,可以对使用代理访问网络的浏览器进行监控、

    根据调研选取Alibaba的Anyproxy作为基础进行二次开发。相关开发环境如下:

    PC:Windows7 x64

    Node.js :v8.15.1-x64

    Anyproxy:v3.10.6

    最新版的node(v10.15.3)和Anyproxy(v4.1.0)配合经常崩掉,不要问我为什么,退而求其次选择了历史稳定版本。

    三、开发实战

    (一)初始化node项目

    新建项目文件夹后,在命令行打开,执行以下命令

    npm init
    #填写相关信息
    npm i anyproxy@3.10.6 --save
    

    (二)新建项目入口文件

    根据填写的项目信息新建入口文件,一般为index.js

    (三)index.js示例

    const AnyProxy = require('anyproxy');
    const options = {
        port: 8001,
        rule: require('./myRuleModule.js'),
        disableWebInterface: false,
        webPort: 8002,
        throttle: 10000,
        forceProxyHttps: false,
        wsIntercept: false, // 不开启websocket代理
        silent: false,
        interceptHttps: true
    };
    
    if(!AnyProxy.isRootCAFileExists()){
        console.log("RootCA File not Exists");
        AnyProxy.generateRootCA(function(error, keyPath, crtPath){
            console.log(error);
        });
    } else {
        console.log("RootCA File Exists");
    };
    
    const proxyServer = new AnyProxy.proxyServer(options);
    

    (四)myRuleModule.js示例

    
    
    module.exports = {
        replaceServerResDataAsync: function (req, res, serverResData, callback) {
            if(req.url.indexOf("https://e.abchina.com/site/CashCollect/DirectCashCollect")){
                console.log("+++++++++++++++++Start+++++++++++++++");
                console.log(serverResData.toString());
                console.log("++++++++++++++++++End++++++++++++++++");
            }
            callback(serverResData);
        }
    }
    

    (五)设置浏览器代理并访问农银e管家收银台进行收款

    1.运行自主研发辅助软件

    node index
    

    运行后会自动在“用户文件夹\.anyproxy_cert”下保存HTTPS监控所用的证书,双击该证书并添加至受信任根证书下,否则辅助软件将不能对HTTPS类型的请求进行监控。

    2.安装chrome代理插件:SwitchyOmega

    设置代理为127.0.0.1:8001,应用设置并运行代理插件

    3.访问127.0.0.1:8002进入Anyproxy的GUI查看监听

    4.访问农银e管家收银台进行收款

    收款成功后cmd控制台将能看到以下输出

    received request to : e.abchina.com/site/CashCollect/DirectCashCollect
    ==>will forward to real server by proxy
    +++++++++++++++++Start+++++++++++++++
    {"Code":0,"Message":"成功","Proposal":"","Value":{"OrderNo":"190101234567890"
    sWaiting":false},"SecAlg":null}
    ++++++++++++++++++End++++++++++++++++
    

    三、下一步研究计划

    1.对语音播报模块进行研究;

    2.对利用订单号查找金额进行实验;

    3.添加mysql数据库模块,研发交易记录功能和收银员交班功能。

    相关文章

      网友评论

          本文标题:农银e管家收银台PC版收款语音播报插件开发实录(一)

          本文链接:https://www.haomeiwen.com/subject/rlimwqtx.html