我在微信开发工具测试, wx.config 显示ok ,
wx.chooseWXPay.没有此SDK或暂不支持此SDK模拟
问题出在, 我用手机测试 (ios,android) wx.config无反应, erro和ready均不进入
wx.chooseWXPay也无法用,
我在https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
验证了签名是一毛一样的,
求教大佬, 我这代码是出了啥毛病
<!doctype html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html lang="zh-cn">
<head>
<%@include file="/pc/inc/commoncontent.inc"%>
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="<%=contextPath%>/m/smartHotel/script/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
</script>
<title>订单-支付</title>
<span class="disb picNum padTB30"><i class="disib iconPic" onClick="openPic(this);" >3532rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr张</i></span>
</head>
<body>
<script type="text/javascript">
var appId1,timeStamp1,nonceStr1,packageStr1,signType1,paySign1;
$(document).ready(function () {
$.ajax({
url : contextPath+ "/weixin/hotelorder/wxPay.action",
type:"post",
dataType:'json', //接受数据格式
async: false,
data:{url:window.location.href.split('#')[0].replace(/\&/g,"%26")},//传参,建议使用json
//1:手机号, 2:房间数.3单价4总价 5: 当前bedid 6 :入住人 姓名 7 发票8 入住日离开日
error:function(data){//请求失败时处理
// alert(data);
window.location.href = '<%=contextPath%>/m/smartHotel/html/yysb.html'/*预订失败页*/
},
success:function(data)
{
if( data)
{
appId1 = data.pay.appId;
timeStamp1 = data.pay.timeStamp;
nonceStr1 = data.pay.nonceStr;
packageStr1 = data.pay.package;
signType1 = data.pay.signType;
paySign1 = data.pay.paySign;
}
wx.config({
debug:false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId:data.pay.appId, // 必填,公众号的唯一标识
timestamp:data.config.timestamp, // 必填,生成签名的时间戳
nonceStr:data.config.noncestr, // 必填,生成签名的随机串
signature:data.config.configSign, // 必填,签名,见附录1
jsApiList:['chooseWXPay','closeWindow']
});
wx.error(function(res){
alert("error enter");
});
wx.ready(function(){
alert("ready enter");
pay();
});
//onBridgeReady();
// alert("success inter");
}
});
});
function pay() { // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
console.log(appId1 +" / "+ timeStamp1+" / " + nonceStr1+" / "+packageStr1 +" / "+ signType1+" / "+paySign1);
wx.chooseWXPay({
timestamp:timeStamp1, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr:nonceStr1, // 支付签名随机串,不长于 32 位
package:packageStr1, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType:signType1, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign:paySign1, // 支付签名
success:function(res) {
alert("8888888888888");
alert(res);
alert(res.errMsg);
console.log(res.errMsg);
// 支付成功后的回调函数
if (res.errMsg == "chooseWXPay:ok") {
//支付成功
alert('支付成功');
} else {
alert(res.errMsg);
}
}
});
}
function onBridgeReady(){
alert("进入了onbridgeready");
WeixinJSBridge.log("889");
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId":appId1, //公众号名称,由商户传入
"timeStamp":timeStamp1, //时间戳,自1970年以来的秒数
"nonceStr":nonceStr1, //随机串
"package":packageStr1,
"signType":"MD5", //微信签名方式:
"paySign":paySign1 //微信签名
},
function(res){
WeixinJSBridge.log(res);
alert("进入了success");
alert(res.errorMsg);
// 使用以下方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。
if(res.errMsg == "get_brand_wcpay_request:ok") {
alert("支付成功");
// window.location.href = "${pageContext.request.contextPath}/wx/success?orderId=${orderId}";
}else if(res.errMsg == "get_brand_wcpay_request:fail"){
alert('支付失败');
}else if(res.errMsg == "get_brand_wcpay_request:cancel"){
alert('支付取消');
}else{
alert(res.errMsg);
}
}
);
}
function openPic()
{
pay();
//wx.closeWindow();
}
//调用模拟 回调
// $.ajax({
// url : contextPath+ "/weixin/hotelorder/moniWXPay.action",
// type:"post",
// dataType:'json', //接受数据格式
// async: false,
// data:{parm1:getQueryString2("orderId")},//传参,建议使用json
// error:function(data){//请求失败时处理
// alert(data);
// },
// success:function(data)
// {
// if(data.result =="success")
// {
// window.location.href = '<%=contextPath%>/m/smartHotel/html/yycg.jsp?orderId='+getQueryString2("orderId");
// }
//
// }
// });
function getQueryString2(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if(r != null) return decodeURI(r[2]);
return null;
}
</script>
</body>
</html>