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. Network -UVa315(连通图求割点)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=5&page=sh ...

  2. Spring MVC中的拦截器/过滤器HandlerInterceptorAdapter的使用

    一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的 而在Spring中,基于Filter这种方式可以实现Bean预处理.后处理. 比如注入FilterRegistrationBean,然后 ...

  3. Ubuntu 16.04安装Atom(加强版文本工具)

    安装: sudo add-apt-repository ppa:webupd8team/atom sudo apt-get update sudo apt-get install atom 或者直接上 ...

  4. JSP的体系结构

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/architecture.html: Web服务器需要一个JSP引擎,即处理JSP页面的容器.JSP容器负 ...

  5. Bug记载2之Vue.JS路由定义的位置

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...

  6. 我的arcgis培训照片5

    来自:http://www.cioiot.com/successview-528-1.html

  7. Java Longest Palindromic Substring(最长回文字符串)

    假设一个字符串从左向右写和从右向左写是一样的,这种字符串就叫做palindromic string.如aba,或者abba.本题是这种,给定输入一个字符串.要求输出一个子串,使得子串是最长的padro ...

  8. Flask 解析 Web 端 请求 数组

    Web前台由 JavaScript 通过Ajax发送POST请求,当请求数据为数组时,Python Flask 做服务器时的解析如下: js: var ids = []; for (var i = 0 ...

  9. Interval 计时器

    语法: setInterval(代码,交互时间); 在执行时,从载入页面后每隔指定的时间执行代码. clearInterval( setInterval() 返回的 ID 值 ): 取消计时器 < ...

  10. iOS开发个人开发账号的证书详细使用及介绍

    本人也和大家一样在学习iOS的开发,在开发当中最烦的就是证书出问题,主要是没有理解透证书的含义,因此查阅了一些资料,才对证书有了一定的认识,本文章就是介绍个人的个人理解,有不对的地方大加可以留言提醒, ...