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


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

主题:[求助]

美女呀,离线,留言给我吧!
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


 回到顶部
美女呀,离线,留言给我吧!
OKK
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


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

 回到顶部
美女呀,离线,留言给我吧!
OKK
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

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

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


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


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

有些乱,我先整理一下

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

 回到顶部
美女呀,离线,留言给我吧!
OKK
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:一尾狐 帖子:407 积分:4268 威望:0 精华:0 注册:2016/11/22 19:30:00
  发帖心情 Post By:2018/7/11 18:07:00 [显示全部帖子]

加入messagebox.show,弹出以下内容:
mq123pay\index.htm
weui\weui.min.css
weui\weui.me.js
mq123pay\lib\pay.js
images\Splash.jpg


加入alert时,可以弹出值...


微信调试工具是哪个?
我没有做过调试!

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


加好友 发短信
等级:一尾狐 帖子:407 积分:4268 威望:0 精华:0 注册:2016/11/22 19:30:00
  发帖心情 Post By:2018/7/12 8:24:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建 microsoft office word 文档.rar






一直发不出,写在附件里

[此贴子已经被作者于2018/7/12 8:31:53编辑过]

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


加好友 发短信
等级:一尾狐 帖子:407 积分:4268 威望:0 精华:0 注册:2016/11/22 19:30:00
  发帖心情 Post By:2018/7/12 10:03:00 [显示全部帖子]

您说后台代码是指PAY.JS这个文件吗,我没有修改过....

然后把您上面的JS代码替换原来的PAY.JS代码,再点击“立即支付”,这时,弹出两行字,第一行”www.my123pay.com",第二行"formid.value=001"

console页提示,见附件...
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建 microsoft office word 文档 (2).rar





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


加好友 发短信
等级:一尾狐 帖子:407 积分:4268 威望:0 精华:0 注册:2016/11/22 19:30:00
  发帖心情 Post By:2018/7/12 10:40:00 [显示全部帖子]

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


这个弹出“www.my123pay.com"和“123”



后台getWxJsApiParam.htm的代码加入msgbox弹出值看一下

我加入了

messagebox.show(args(0))

messagebox.show(productid)

没弹出内容,页面也是空白的



如果把messagebox去掉,也就是跟原来一样
这时弹出”错误:不存在此业务订单号【】,无法发起支付!“


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