js里一个函数外部调用方式悬赏500


按钮的事件是toPay,在上面的js文件中,我现在想外部调用,找不到入口,想麻烦他看下怎么调用这个toPay事件。找到这个函数入口应该就搞定了。

img

你这怕是钓鱼的哦,钓鱼网址,获取支付信息。

js是不是沾错了,打不开
id对应的方法不一定在当前页面的js里面,在resources里面找下,肯定是有的

img

看你的toPay方法应该是支付,如果你只是单纯的要找到方法上面的小伙伴已经找出来了。支付本质需要一些必要东西,token,后端返回的支付相关数据(用于支付api调用验证)等。你想简单的直接调用js中写的支付按钮所绑定的事件方法,一般来说是有问题的(支付是一个流程,除非你调用是支付时,它必须的资料或者数据都OK了)。它这个方法本质也是利用用户身份(token等),向后端发起订单,生成订单,根据订单向后端获支付(支付宝,微信等第三方支付SD文档都有)所需验证数据,再调起第三方api进行支付。所以如果你调用这个方法没有必须的流程或者数据的话,你还是老老实实的把它的支付逻辑拷贝出来,捋清楚,自己封装一个公用或者私用方法。

一般得找移动提供的充值api吧?

哈喽,看看移动开发平台提供的接口
https://it.open.10086.cn/#/production/detail/order08

这个是不行的,微信和支付宝都有很严格的安全机制的,如果能这么容易绕过,早就乱套了。
另外,你给的这个不登录是到不了你给的这个页面的,这个toPay应该是调用了微信或者支付宝的js库的。

这个话费充值直接这么弄是搞不了的吧。各家运营商有各自的开放平台,有相应的能力服务,购买话费充值的服务,按他们的接口文档接入即可,以下是移动开放平台接口:
https://it.open.10086.cn/#/doc

也有同时提供三家运营商统一充值支付的API接口平台,下边的链接里有很多这样的平台:

img


第一红框上方有ID绑定了click事件

img


这个ID绑定了

img


这个js内的一个点击函数

img

这个是点击函数内容
是用vue写的,在2634航开始的,到2702行结束的,代码如下

img

                toPay: function() {
                    var e = this;
                    plugTool.JLoading("去支付");
                    var t = this.orderId
                      , n = this.goodsCode
                      , i = this.payType
                      , a = this.openid
                      , s = (this.res.targetMsisdn,
                    "1");
                    1 == plugTool.isApp() && 0 == appObj.isAndroid() && (s = "0");
                    var r = {
                        goodsCode: n,
                        payType: i,
                        orderId: t,
                        openid: a,
                        ios: s
                    }
                      , c = o("b383");
                    axios.post("".concat(sdDefaults.VServerAPI, "h5_payment/payment/createOrder.do"), c.stringify(r)).then((function(o) {
                        if (plugTool.JHideLoading(),
                        "1" == o.data.resCode)
                            plugTool.Jtoast(o.data.erroMsg, "middle");
                        else if ("3366" == o.data.resCode)
                            e.text = "尊敬的用户,您本次线上充值失败!因系统升级,未在我公司进行实名制查验的用户业务办理受到影响,请您携带本人二代身份证及手机卡到山东移动营业厅进行实名制查验或微信关注“山东移动”公众账号进入查询",
                            e.cancel = "知道了",
                            e.confirm = "去认证",
                            e.isShow = !0,
                            e.resCode = o.data.resCode;
                        else if ("2" == o.data.resCode)
                            e.text = o.data.erroMsg,
                            e.confirm = "重新下单",
                            e.toinurl = o.data.indexUrl,
                            e.cancel = "继续支付",
                            e.resCode = o.data.resCode,
                            e.isShow = !0;
                        else if (plugTool.insertCode({
                            event: "HFCZ",
                            si_n: "",
                            si_s: "",
                            si_x: "16",
                            errCode: "错误描述"
                        }),
                        "aliPay" == o.data.payType)
                            $("#alipay").html(o.data.alipayForm),
                            $("#alipay").show();
                        else if ("weChatPay" == o.data.payType) {
                            if ("JSAPI" == o.data.tradeType)
                                "undefined" == typeof WeixinJSBridge ? document.addEventListener ? document.addEventListener("WeixinJSBridgeReady", e.jsApiCall, !1) : document.attachEvent && (document.attachEvent("WeixinJSBridgeReady", e.jsApiCall),
                                document.attachEvent("onWeixinJSBridgeReady", e.jsApiCall)) : e.jsApiCall(o.data.appId, o.data.timeStamp, o.data.nonceStr, o.data.packag, o.data.signType, o.data.paySign, t, n);
                            else if ("MWEB" == o.data.tradeType) {
                                var i = "1";
                                1 == plugTool.isApp() && 0 == appObj.isAndroid() && (i = "0"),
                                window.location.href = sdDefaults.BaseURL + "sd2034/index.html#/payconfirm?mwebUrl=" + e.encode(o.data.mwebUrl) + "&orderId=" + t + "&ios=" + i
                            }
                        } else
                            "cmPay" == o.data.payType ? window.location.href = o.data.cmpayUrl : "huawei" == o.data.payType && (window.location.href = o.data.huaweiUrl)
                    }
                    )).catch((function(e) {
                        plugTool.insertCode({
                            event: "YWBL",
                            si_n: "",
                            si_s: "",
                            si_x: "-99",
                            errCode: "错误描述"
                        }),
                        plugTool.Jtoast("系统繁忙,请稍后重试!")
                    }
                    ))
                }

还是老老实实用移动的api,不要这样搞,或者交给后端解决了

1、ID为toPay的按钮调用了一个点击事件,在app.04f16390.js里面


看截图里面的代码行数:
事件绑定:

img

函数定义:

img

这个比较简单,你用谷歌浏览器打开你截图的这个页面,F12进入调试模式,Ctrl+F搜索toPay这个id选择器,然后找到这个js调用的部分就可以啦,也可以debugger看这个调用的过程。如果有帮助记得采纳哦!