微信公众号支付get_brand_wcpay_request:fail

╰★ 独行侠·π 发布于 2017/03/07 10:28
阅读 4K+
收藏 0

@半个朋友 你好,想跟你请教个问题:在微信公众号统一下单接口中返回值都是成功且正确的(

nonce_str=vwAHjctnajjBAlc7,

appid=*************,

sign=3C35840FB971236D8FCA245EB2EBEC6D,

trade_type=JSAPI,

return_msg=OK,

result_code=SUCCESS,

mch_id=***********,

return_code=SUCCESS,

prepay_id=wx201703071013164054ea5ccf0968839010

但是在调H5支付的时候,返回结果一直是get_brand_wcpay_request:fail,而且也不明白微信支付开发配置中的支付授权目录是怎么弄的,我看了你之前给别人解答的,发现没什么太大的区别,我试了好多网上说的都不行啊

加载中
0
╰★ 独行侠·π
╰★ 独行侠·π

这个是我配置的支付授权目录:http://域名/app/pay/;到H5页面的controller是/app/pay/payView,我那样配置支付授权目录对么?实在是搞不清楚他那个授权目录是什么鬼

 

OSC_代码审查官
OSC_代码审查官
这是授权就是把你测试环境跟线上环境分开
╰★ 独行侠·π
╰★ 独行侠·π
回复 @半个朋友 : 根本不理解微信做这个微信支付授权目录的意义在哪,为什么要设置这个东西啊
╰★ 独行侠·π
╰★ 独行侠·π
回复 @半个朋友 : 是和我访问H5页面的路径一致还是和我ajax请求支付参数的路径一致?
OSC_代码审查官
OSC_代码审查官
授权路径必须跟你的访问的路径一致
0
OSC_代码审查官
OSC_代码审查官

prepay_id nonce_str trade_type sign这些值需要返回给h5页面做配置

╰★ 独行侠·π
╰★ 独行侠·π
回复 @半个朋友 : 恩,那我用其他的方法再试试.希望能成功吧,真的是太纠结了
OSC_代码审查官
OSC_代码审查官
回复 @╰★ 独行侠·π : 绝对不是最新的
╰★ 独行侠·π
╰★ 独行侠·π
回复 @半个朋友 : 这个代码就是现在开发文档里面的代码,我也看了其他的,有人说我用的这个是新的.....那就奇怪了,配置也正确,参数也能验证过去,问题不知道出在哪了
OSC_代码审查官
OSC_代码审查官
回复 @╰★ 独行侠·π : https://www.oschina.net/question/209255_246917 看回复
OSC_代码审查官
OSC_代码审查官
回复 @╰★ 独行侠·π : 你的h5代码好像是老版本
下一页
0
╰★ 独行侠·π
╰★ 独行侠·π

以下是我通过ajax返回给h5页面的参数

Map<String, String> map = weixinPrePay(trade_no, totalAmount, description, openId, sym, request);
        SortedMap<String, Object> finalpackage = new TreeMap<String, Object>();
        finalpackage.put("appId", CommonUtil.APPID);
        finalpackage.put("timeStamp", timeMillis);
        finalpackage.put("nonceStr", randomString);
        finalpackage.put("packageName", "prepay_id=" + map.get("prepay_id"));
        finalpackage.put("signType", "MD5");
        String sign = CommonUtil.createSign("UTF-8", finalpackage);
        finalpackage.put("paySign", sign);

0
╰★ 独行侠·π
╰★ 独行侠·π

这些是H5页面调用接口封装的参数

WeixinJSBridge.invoke('getBrandWCPayRequest', {

            "appId" : obj.appId, //公众号名称,由商户传入  
            "timeStamp" : obj.timeStamp, //时间戳,自 1970 年以来的秒数  
            "nonceStr" : obj.nonceStr, //随机串  
            "package" : obj.packageName, //商品包信息
            "signType" : obj.signType, //微信签名方式
            "paySign" : obj.paySign

}, function(res) {
            if (res.err_msg == "get_brand_wcpay_request:ok") {
                var url = "/app/gametype?type=" + type + "&openId=" + openId
                        + "&orderId=" + orderId;
                window.location.replace(url);
            } else {
                alert(res.err_msg);
            }
        });

0
╰★ 独行侠·π
╰★ 独行侠·π

我的测试授权目录是不是指向H5页面的路径啊?

0
OSC_代码审查官
OSC_代码审查官
<script type="text/javascript">
var appId = "${weiXinOrderRequset.appId}";
var timeStamp =${weiXinOrderRequset.timeStamp};
var nonceStr = "${weiXinOrderRequset.nonceStr}";
var signature = "${weiXinOrderRequset.signature}";
var paySign = "${weiXinOrderRequset.paySign}";
var pkg = "${weiXinOrderRequset.get("package")}";
var signType = "${weiXinOrderRequset.signType}";
   shareData= {
      title : 'ssss',
      desc : '${weiXinOrderRequset.msg}',
      link : '${weiXinOrderRequset.hostUrl}/home.shtml?userId=${weiXinOrderRequset.userId}',
      imgUrl : '${weiXinOrderRequset.hostUrl}/image/shareLogo.png'
   }; 
    $(function () {
       wx.config({
            debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: appId, // 必填,公众号的唯一标识
            timestamp: timeStamp, // 必填,生成签名的时间戳
            nonceStr: nonceStr, // 必填,生成签名的随机串
            signature: signature,// 必填,签名,见附录1
            jsApiList: ['chooseWXPay','onMenuShareTimeline', 'onMenuShareAppMessage','showOptionMenu'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
        });
       wx.ready(function () {
            shareToFriend();
            shareToFriends();
        });

    });
 
    function pay() {
         wx.chooseWXPay({
              "timestamp": timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
              "nonceStr": nonceStr, // 支付签名随机串,不长于 32 位
              "package": pkg, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
              "signType": signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
              "paySign": paySign, // 支付签名
              complete: function (res) {
                  // 支付成功后的回调函数
                  if(res.errMsg=='chooseWXPay:ok'){
                      location.href = "${pageContext.request.contextPath}/order/payResult.shtml?flag=true&orderId=${orderId}";
                  }else{
                      location.href = "${pageContext.request.contextPath}/order/payResult.shtml?flag=false&orderId=${orderId}";
                  }
              }
          }); 
    }

</script>

 

╰★ 独行侠·π
╰★ 独行侠·π
@半个朋友 回复@半个朋友 : 哎,谁叫人家是大公司呢!谢谢你了
OSC_代码审查官
OSC_代码审查官
回复 @╰★ 独行侠·π : 微信支付的接口就是渣
╰★ 独行侠·π
╰★ 独行侠·π
回复@半个朋友 :终于好了,问题是我没有按步骤一步一步的试,所以把有些参数都写错了,跟着你的思路下来,问题还是找到了,就想说,微信这接口真的是烦
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部