var appId,timeStamp,nonceStr,package,signType,paySign;
 function goumai(){
     $.confirm({
       title: '确认购买',
       text: '<div class="comfirm-tip">确认购买?</div>',
       onOK: function () {
         $('#rechargeHalf').removeClass('weui-popup__container--visible');
          $('#rechargeHalf').hide();
          var price = ($("#monid").text() * 100).toFixed(0);
          mui.ajax(wxshop.serverUrl+"/wxUserCenter/gotozhifu",{
            type:'post',
            data:{
               code:wxshop.getUrlParam("code"),
               price:price,
             },
             dataType:'json',
             success:function(data){
               if(data.ret == 1){
                  appId=data.payMap.appId;
                   timeStamp=data.payMap.timeStamp;
                   nonceStr=data.payMap.nonceStr;
                   package=data.payMap.package;
                   signType=data.payMap.signType;
                   paySign=data.payMap.paySign;
                   callpay();
               }
               if(data.ret == 2){
                 wxshop.getOpenId(data.appid);
                  return;
               }
               if(data.ret == 0){
                 alert(data.msg);
               }
           }
       });
     },
        onCancel: function () {
          $('#rechargeHalf').removeClass('weui-popup__container--visible');
           $('#rechargeHalf').hide();
        }
      });
    function callpay(){
        if (typeof WeixinJSBridge == "undefined"){
           if( document.addEventListener ){
              document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
            }else if (document.attachEvent){
              document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
               document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
            }
         }else{
            onBridgeReady();
         }
  }
  function onBridgeReady(){
     WeixinJSBridge.invoke( 'getBrandWCPayRequest', {
        "appId":appId,     //公众号名称,由商户传入
         "timeStamp":timeStamp,         //时间戳,自1970年以来的秒数
         "nonceStr":nonceStr, //随机串
         "package":package,
         "signType":signType,         //微信签名方式:
         "paySign":paySign //微信签名
    },
       function(res){
         if(res.err_msg == "get_brand_wcpay_request:ok" ) {
            console.log('支付成功');
          }else if(res.err_msg == "get_brand_wcpay_request:cancel"){
            console.log('支付取消');
          }else if(res.err_msg == "get_brand_wcpay_request:fail"){
            console.log('支付失败');
             WeixinJSBridge.call('closeWindow');
          }
    });
  }
}
 public class PayUtil {

     /**
        * 微信jssdk支付
        * @param request
        * @param response
        * @param fee
        * @return
     */
     public static Map pay(HttpServletRequest request, HttpServletResponse response, String fee) {
       Map preData = new HashMap();
       Map<String, String> payMap = new HashMap<String, String>();
       try {
          String openid = null;
          WsMember member = WsUtils.getMember(request, response);
           if (member != null) {
             openid = member.getOpenId();
           }
           WxAccount account = WsUtils.getAccount();
          preData.put("appid", account.getAccountAppid());
           preData.put("mch_id", account.getMchId());
           preData.put("nonce_str", WXPayUtil.generateNonceStr());
           String body = utf8Utils.toUTF8("微信支付");
           preData.put("body", body);
           Random random = new Random();
           String out_trade_no = "";
           for (int i = 0; i < 30; i++) {
               out_trade_no += random.nextInt(10);
           }
 //        preData.put("out_trade_no", WXPayUtil.generateNonceStr());
          preData.put("total_fee", fee);
           preData.put("spbill_create_ip", request.getLocalAddr());
           preData.put("notify_url", "xxx.com/bpphone/index.html");
           preData.put("openid", openid);
           preData.put("trade_type", "JSAPI");
           String sign = WXPayUtil.generateSignature(preData, account.getPayKey());
           preData.put("sign", sign);
           String xml = WXPayUtil.mapToXml(preData);
           String unifiedorder_url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
           String xmlStr = httpUtils.post(unifiedorder_url, xml);
           System.out.println("xmlStr============="+xmlStr);
           String prepay_id = "";
           if (xmlStr.indexOf("SUCCESS") != -1) {
             Map<String, String> map = WXPayUtil.xmlToMap(xmlStr);
              prepay_id = (String) map.get("prepay_id");
           }
           payMap.put("appId", account.getAccountAppid());
           payMap.put("timeStamp", WXPayUtil.getCurrentTimestamp() + "");
           payMap.put("nonceStr", WXPayUtil.generateNonceStr());
           payMap.put("package", "prepay_id=" + prepay_id);
           payMap.put("signType", "MD5");
           String paySign = WXPayUtil.generateSignature(payMap, account.getPayKey());
           payMap.put("paySign", paySign);
       } catch (Exception e) {
           payMap.put("ret", InterConstant.RET_WX);
           payMap.put("appid", WsUtils.getAccount().getAccountAppid());
           e.printStackTrace();
       }
           return payMap;
       }
   }
 }

微信JSSDK支付的更多相关文章

  1. 微信JSSDK支付接口-安卓机无法正常调起接口

    今天碰到个问题,是项目调起微信支付接口,苹果机都没有什么问题,但是安卓机的情况就是支付接口出现一下就消失了 试了将error反馈信息弹出来,也就是显示choosewxpay fail 找了半天不知道什 ...

  2. 微信jssdk支付坑

    1.使用easywechat开发的时候,由于没有注意,配置文件中默认的请求地址是 https://api.weixin.qq.com/结果调试了半天,一直报错“40066” 这也是怪自己粗心,结果去分 ...

  3. C#开发微信门户及应用(39)--使用微信JSSDK实现签到的功能

    随着微信开逐步开放更多JSSDK的接口,我们可以利用自定义网页的方式来调用更多微信的接口,实现我们更加丰富的界面功能和效果,例如我们可以在页面中调用各种手机的硬件来获取信息,如摄像头拍照,GPS信息. ...

  4. 微信JS-SDK坐标位置转换为百度地图坐标

    微信JS-SDK开发过程中,使用getLocation获取坐标位置,如何将微信获取的坐标直接应用到百度地图中,显示以下效果: 说明:红色图标是从微信转换过来的位置,蓝色图标是周边位置.首先从微信开发流 ...

  5. 前端工程师如何快速的开发一个微信JSSDK应用

    亲们,订阅号出来已经很久了,作为一个前端工程师或者全栈工程师,你是不是错过了什么?大概许多攻城狮同砚还没有反应过来订阅号怎么回事,就马上要被微信的应用号秀一脸了.在应用号还没有正式出来之前,我们赶紧一 ...

  6. 微信公众平台开发 微信JSSDK开发

    根据微信开发文档步骤如下: 1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. JS接口安全域名设置 mi.com(前面不用带www/http,域名必须备案过) 2.引 ...

  7. 微信JS-SDK

    <div class="lbox_close wxapi_form"> <h3 id="menu-basic">基础接口</h3& ...

  8. 微信公开课发布微信官方教程:教你用好微信JS-SDK接口

    微信公众平台开放JS-SDK(微信内网页开发工具包),说明文档已经有相关使用方法和示例了,很多同学觉得不是很直观,为此微信公开课发布微信官方教程:教你用好微信JS-SDK接口. 1.分享类接口:支持获 ...

  9. 官方教程:教你用好微信JS-SDK接口

    微信开放JS-SDK接口,开发者和行业用户可谓是欢欣鼓舞.奔走相告,目测将激起一大波第三方开发商的创新产品!真真是H5开发者的利好!但也有用户表示,还不了解JS-SDK接口到底是啥,究竟怎么用.现在, ...

随机推荐

  1. js格式化日期时间

    // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).周(E).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1 ...

  2. P2910 [USACO08OPEN]寻宝之路Clear And Present Danger 洛谷

    https://www.luogu.org/problem/show?pid=2910 题目描述 Farmer John is on a boat seeking fabled treasure on ...

  3. Redis Cluster集群搭建后,客户端的连接研究(Spring/Jedis)(待实践)

    说明:无论是否已经搭建好集群,还是使用什么样的客户端去连接,都是必须把全部IP列表集成进去,然后随机往其中一个IP写. 这样做的好处: 1.随机IP写入之后,Redis Cluster代理层会自动根据 ...

  4. Hive之执行计划分析(explain)

    Hive是通过把sql转换成对应mapreduce程序,然后提交到Hadoop上执行,查看具体的执行计划可以通过执行explain sql知晓 一条sql会被转化成由多个阶段组成的步骤,每个步骤有执行 ...

  5. 【转】Golang 关于通道 Chan 详解

    原文:http://blog.csdn.net/netdxy/article/details/54564436 在用 chan 类型时,发生死锁的错误,表面上看不出什么问题 ------------- ...

  6. js 合并对象

    对象的合并 需求:设有对象 o1 ,o2,需要得到对象 o3 var o1 = { a:'a' }, o2 = { b:'b' }; // 则 var o3 = { a:'a', b:'b' } 方法 ...

  7. vue全局注册与局部注册的写法

    vue全局注册是每个实例化的vue都可以使用,而局部则是实例化注册的那个可以用.举个例子,看看写法: <div id="app"> <p>页面载入时,inp ...

  8. HTTP请求库——axios源码阅读与分析

    概述 在前端开发过程中,我们经常会遇到需要发送异步请求的情况.而使用一个功能齐全,接口完善的HTTP请求库,能够在很大程度上减少我们的开发成本,提高我们的开发效率. axios是一个在近些年来非常火的 ...

  9. EJB之JPA

    在前一篇文章中大概了解了EJB是什么?那么接下来就进一步介绍一下它与JPA有什么样的关系?及什么是JPA?JPA怎样用? 一.是什么? 第一次听说JPA是在EJB视屏中,所以一直感觉他们有不解的渊源. ...

  10. c# DataGridView样式设置无效

    对DataGridView中的某些行设置样式时,无效,最后发现,我是先设置完样式再进行展现的this.controls.Add,应该先展现完了,再设置样式.