Foxtable(狐表)用户栏目专家坐堂 → [求助]


  共有3316人关注过本帖树形打印复制链接

主题:[求助]

美女呀,离线,留言给我吧!
OKK
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:407 积分:4268 威望:0 精华:0 注册:2016/11/22 19:30:00
[求助]  发帖心情 Post By:2018/7/10 19:25:00 [只看该作者]

pay.js里面的内容:

其中以下这部分,标蓝色的能否解释一下是什么意思?

//检查微信接口是否可用,并发起接口调用

function callpay(id) {

    var formid = document.getElementById("订单编号");

    formid.value = "";

    if (!checkagent()){

        alert("微信版本太低无法使用微信支付功能,必须5.0及以上的版本!");

        return;

    }

    formid.value = id;

    if (typeof WeixinJSBridge == "undefined") {

        if (document.addEventListener) {

            document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);

        } else if (document.attachEvent) {

            document.attachEvent('WeixinJSBridgeReady', jsApiCall);

            document.attachEvent('onWeixinJSBridgeReady', jsApiCall);

        }

    } else {

        jsApiCall();

    }

}

 




函数:htm_GetWxJsApiParam:


函数代码:标蓝色的能否解释一下是什么意思?

'公众号内支付获取H5调起JS API参数

Dim e As RequestEventArgs = args(0)

Dim productid As String = e.PlainText

Dim dr As DataRow = DataTables("JSAPI").Find("product_id='" & productid & "'"'查询是否存在此业务订单

If dr IsNot Nothing Then

    '调用统一下单,传入openid(可以通过网页授权获取),下单类型为"JSAPI",订单金额

    Dim xmlres = Functions.Execute("api_UnifiedOrder","ojDlHuPgDGZ7CRsE46GHMyvt4s10",productid,"JSAPI",dr("orderfee"))

    If xmlres  Then '如果下单成功

        Dim jsApiParam As new WxPayData()

        jsApiParam.SetValue("appId", Vars("appid"))

        jsApiParam.SetValue("timeStamp"jsApiParam.GenerateTimeStamp())

        jsApiParam.SetValue("nonceStr"jsApiParam.GenerateNonceStr())

        jsApiParam.SetValue("package""prepay_id=" & dr("prepay_id"))

        jsApiParam.SetValue("signType""MD5")

        jsApiParam.SetValue("paySign"jsApiParam.MakeSign())

       

        Dim parameters = jsApiParam.ToJson() '获取JS需要的参数JSON字符串

        e.WriteString(parameters)

       

    Else

        e.WriteString("错误:JSAPI统一下单失败,无法发起支付!")

    End If

Else

    e.WriteString("错误:不存在此业务订单号,无法发起支付!")

End If


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/10 20:16:00 [只看该作者]

这种请直接网络搜索:https://www.baidu.com/baidu?word=addEventListener

微信的请看官方的实例,这些都是自定义的类型和函数。想学的去买一本vb.net的书去啃啃

 回到顶部
美女呀,离线,留言给我吧!
OKK
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:407 积分:4268 威望:0 精华:0 注册:2016/11/22 19:30:00
  发帖心情 Post By:2018/7/10 21:12:00 [只看该作者]

公众号支付

用户在微信内打开商户网页,点击支付按钮,调用微信的JS支付接口,完成支付操作。

业务流程参考:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4

开发步骤:

1、设置公众号支付授权目录。

 可以设置多个目录,可以是根目录也可以添加子目录。 那么发起支付的网页地址在授权目录里

比如上面的第二个设置,在微信打开网页:http://www.baidu.com/index.html ,是没有办法使用公众号是否功能的,这样的网页地址才可以:http://www.my123pay.com/my123pay/index.html

如果没有设置子目录,比如上面第一种设置,那么这个http://www.baidu.com/index.html 就是可以的。

2、设计调用接口的JS,新建一个js文件,名称“pay.js”,放入目录“D:\web\my123pay\lib”,代码:

//检查微信客户端版本,必须5.0及以上版本才支持

function checkagent() {

    var ua = navigator.userAgent;

    var idx = ua.indexOf("MicroMessenger"); //是否包含MicroMessenger

    if (idx > -1) {

        ua = ua.substring(idx + 15, idx + 16);

        return ua >= "5";

    }

    return false;

}

//支付接口调用

function jsApiCall() {

    var result = sendAjaxText(document.getElementById("订单编号").value, "getWxJsApiParam.htm", "", false); //通过订单编号从服务器获取JS接口需要的参数

    if (result == ""){

        showDialog('dlg1', '错误', "业务后台出错!");

        return;

    }

    if (result.substring(0, 2) == "错误") {

        showDialog('dlg1', '错误', result);

        return;

    }

    var wxJsApiParam = JSON.parse(result);

    WeixinJSBridge.invoke(

        'getBrandWCPayRequest',

        wxJsApiParam, //josn

        function (res) {

            WeixinJSBridge.log(res.err_msg);

            document.getElementById("txt").value = JSON.stringify(res);

            //alert(res.err_code + res.err_desc + res.err_msg);//接口调用后的返回处理,可以在网页显示成功是否。注意这里返回的成功并不能代码真正的成功,需要查询订单进行确认

        }

    );

}

//检查微信接口是否可用,并发起接口调用

function callpay(id) {

    var formid = document.getElementById("订单编号");

    formid.value = "";

    if (!checkagent()){

        alert("微信版本太低无法使用微信支付功能,必须5.0及以上的版本!");

        return;

    }

    formid.value = id;

    if (typeof WeixinJSBridge == "undefined") {

        if (document.addEventListener) {

            document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);

        } else if (document.attachEvent) {

            document.attachEvent('WeixinJSBridgeReady', jsApiCall);

            document.attachEvent('onWeixinJSBridgeReady', jsApiCall);

        }

    } else {

        jsApiCall();

    }

}

 

//查询订单状态

function jsQueryOrder(id) {

    var result = sendAjaxText(id, "QueryOrder.htm", "", false); //通过订单编号从服务器获取JS接口需要的参数

    if (result == "") {

        showDialog('dlg1', '错误', "业务后台出错!");

        return;

    }

    document.getElementById("txt").value = result;

}

3、获取JS接口参数(getWxJsApiParam.htm),使用ajex向服务器取值,传入业务订单编号,服务器接收订单编号,调用函数htm_GetWxJsApiParam处理,返回JS参数的JSON格式数据

   Case "jsapipay\getWxJsApiParam.htm" '公众号支付获取H5调起JS API参数
       Functions.Execute("htm_GetWxJsApiParam",e)

 名称:htm_GetWxJsApiParam

 函数代码:

'公众号内支付获取H5调起JS API参数

Dim e As RequestEventArgs = args(0)

Dim productid As String = e.PlainText

Dim dr As DataRow = DataTables("JSAPI").Find("product_id='" & productid & "'") '查询是否存在此业务订单

If dr IsNot Nothing Then

    '调用统一下单,传入openid(可以通过网页授权获取),下单类型为"JSAPI",订单金额

    Dim xmlres = Functions.Execute("api_UnifiedOrder","ojDlHuPgDGZ7CRsE46GHMyvt4s10",productid,"JSAPI",dr("orderfee"))

    If xmlres  Then '如果下单成功

        Dim jsApiParam As new WxPayData()

        jsApiParam.SetValue("appId", Vars("appid"))

        jsApiParam.SetValue("timeStamp", jsApiParam.GenerateTimeStamp())

        jsApiParam.SetValue("nonceStr", jsApiParam.GenerateNonceStr())

        jsApiParam.SetValue("package", "prepay_id=" & dr("prepay_id"))

        jsApiParam.SetValue("signType", "MD5")

        jsApiParam.SetValue("paySign", jsApiParam.MakeSign())

       

        Dim parameters = jsApiParam.ToJson() '获取JS需要的参数JSON字符串

        e.WriteString(parameters)

       

    Else

        e.WriteString("错误:JSAPI统一下单失败,无法发起支付!")

    End If

Else

    e.WriteString("错误:不存在此业务订单号,无法发起支付!")

End If

4、设计网页,这里只做一个简单的网页,注意网页进入的地址为:http://www.my.com/jsapipay/index.htm,和授权目录的路径必须一致

    Case "jsapipay\index.htm" '商品销售直接调用jssdk支付页面'
       Functions.Execute( "htm_jsapipay" ,e)

网页内容:

'公众号内支付网页,调用jssdk

Dim e As RequestEventArgs = args(0)

Dim wb As New WeUI

With wb.AddArticle("","ar1")

    .AddTitle("h1","Foxtable开发者手册")

    .AddImage("../images/Splash.jpg")

    .AddTitle("h2","价格: 1.01")

End With

With wb.AddInputGroup("","ipg1","订单编辑")

    .AddHiddenValue("订单编号","D20180004")

End With

With wb.AddButtonGroup("","btg1",True

    .Add("btn1", "立即支付","button").Attribute = """ '调用支付JS,入口函数callpay

End With

With wb.AddDialog("","dlg1", "","")

    .AddButton("btnOK","确定")

End With

wb.AppendHTML("<script src='../my123pay/lib/pay.js'></script>") '引入脚本文件

e.WriteString(wb.Build)

5、在微信,或者微信开发者工具打开网页进行测试




我想设置公众号支付,下载了微信支付实例,根据附件的案例项目、help等,全部设置好,但没能实现微信支付
上面代码蓝色部分是我更改过的,还有下面的内容
我在全局变量,填写了我的OPENID,商户号,验证密匙,服务器的外网IP
设置了支付授权目录,服务器安装了证书,证书也下载了放到了项目附件
支付授权目录:http://www.my123pay.com/my123pay/
调用pay.js时的路径也修改为../my123pay/lib/pay.js


请问这个案例还要设置些什么才能测试成功的???

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/10 21:23:00 [只看该作者]

服务端web服务开启了吗?是放到服务器运行的吗?网页能不能正常打开

客户端安装微信开发者工具打开网页进行调试,提示什么错误?

 回到顶部
美女呀,离线,留言给我吧!
OKK
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:407 积分:4268 威望:0 精华:0 注册:2016/11/22 19:30:00
  发帖心情 Post By:2018/7/10 21:35:00 [只看该作者]

服务端web服务开启了
是放到服务器运行的
网页能正常打开




客户端安装微信开发者工具打开网页进行调试,提示什么错误?

这句不是很明白 ,我只设置公众号支付,所以在手机的微信里面打开链接,打开后如下图:

图片点击可在新窗口打开查看此主题相关图片如下:1531215284(1).png
图片点击可在新窗口打开查看
但点击图片中的“立即支付"时,没任何反应

但如果把pay.js里面的代码,修改成
function callpay() {arler("能读取")} 
这样是能弹出显示”能读取"的框的,证明访问路径是正常的


但改回
function callpay(id) {
    var formid = document.getElementById("订单编号");
    formid.value = "";
    if (!checkagent()){
        alert("微信版本太低无法使用微信支付功能,必须5.0及以上的版本!");
        return;
    }
    formid.value = id;
    if (typeof WeixinJSBridge == "undefined") {
        if (document.addEventListener) {
            document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
        } else if (document.attachEvent) {
            document.attachEvent('WeixinJSBridgeReady', jsApiCall);
            document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
        }
    } else {
        jsApiCall();
    }
}


的时候,就是无任何反应
[此贴子已经被作者于2018/7/10 21:36:07编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/10 21:56:00 [只看该作者]

你连接的是仿真测试的接口?还是正式的支付接口?

如果是仿真测试的接口是不会有任何反应的。

 回到顶部
美女呀,离线,留言给我吧!
OKK
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:407 积分:4268 威望:0 精华:0 注册:2016/11/22 19:30:00
  发帖心情 Post By:2018/7/10 22:20:00 [只看该作者]

正式接口,如下图,我是这样连接的:

图片点击可在新窗口打开查看此主题相关图片如下:1531232162(1).png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/10 22:27:00 [只看该作者]

要使用这个url启动服务端:http://www.my123pay.com。这个域名通过备案了吗?外网能不能正常访问?

并且微信要能够访问到这个url,同时网页要在微信里打开。不能使用普通浏览器打开

 回到顶部
美女呀,离线,留言给我吧!
OKK
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:407 积分:4268 威望:0 精华:0 注册:2016/11/22 19:30:00
  发帖心情 Post By:2018/7/10 22:46:00 [只看该作者]

有些乱,我先整理一下

先谢了图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看

 回到顶部
美女呀,离线,留言给我吧!
OKK
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:407 积分:4268 威望:0 精华:0 注册:2016/11/22 19:30:00
  发帖心情 Post By:2018/7/11 17:04:00 [只看该作者]

@有点蓝

经过多番试验,还是不行!





htm_jsapipay函数代码是这样...

Case "my123pay\index.htm" '商品销售直接调用jssdk支付页面'

       Functions.Execute( "htm_jsapipay" ,e)

htm_jsapipay函数代码:

'公众号内支付网页,调用jssdk

Dim e As RequestEventArgs = args(0)

Dim wb As New WeUI

With wb.AddArticle("","ar1")

    .AddTitle("h1","Foxtable开发者手册")

    .AddImage("../images/Splash.jpg")

    .AddTitle("h2","价格: 1.01")

End With

With wb.AddInputGroup("","ipg1","订单编辑")

    .AddHiddenValue("订单编号","001")

End With

With wb.AddButtonGroup("","btg1",True)

    .Add("btn1", "立即支付","button").Attribute = "color:#4F81BD;mso-themecolor:accent1">‘001’)""" '调用支付JS,入口函数callpay

End With

With wb.AddDialog("","dlg1", "","")

    .AddButton("btnOK","确定")

End With

wb.AppendHTML("<script src='../my123pay/lib/pay.js'></script>") '引入脚本文件

e.WriteString(wb.Build)





这段代码如下图,发送出去后就变了,所以截图:

此主题相关图片如下:1531301189(1).png
按此在新窗口浏览图片


[此贴子已经被作者于2018/7/11 20:27:34编辑过]

 回到顶部
总数 40 1 2 3 4 下一页