1. var appId,timeStamp,nonceStr,package,signType,paySign;
  2. function goumai(){
  3. $.confirm({
  4.   title: '确认购买',
  5.   text: '<div class="comfirm-tip">确认购买?</div>',
  6.   onOK: function () {
  7.     $('#rechargeHalf').removeClass('weui-popup__container--visible');
  8.   $('#rechargeHalf').hide();
  9.   var price = ($("#monid").text() * 100).toFixed(0);
  10.   mui.ajax(wxshop.serverUrl+"/wxUserCenter/gotozhifu",{
  11.     type:'post',
  12.     data:{
  13.     code:wxshop.getUrlParam("code"),
  14.     price:price,
  15.   },
  16.   dataType:'json',
  17.   success:function(data){
  18.     if(data.ret == 1){
  19.     appId=data.payMap.appId;
  20.   timeStamp=data.payMap.timeStamp;
  21.   nonceStr=data.payMap.nonceStr;
  22.   package=data.payMap.package;
  23.   signType=data.payMap.signType;
  24.   paySign=data.payMap.paySign;
  25.   callpay();
  26.     }
  27.     if(data.ret == 2){
  28.       wxshop.getOpenId(data.appid);
  29.     return;
  30.     }
  31.     if(data.ret == 0){
  32.       alert(data.msg);
  33.     }
  34.     }
  35.     });
  36.     },
  37. onCancel: function () {
  38.   $('#rechargeHalf').removeClass('weui-popup__container--visible');
  39. $('#rechargeHalf').hide();
  40. }
  41. });
  42.    function callpay(){
  43.   if (typeof WeixinJSBridge == "undefined"){
  44.   if( document.addEventListener ){
  45.   document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
  46. }else if (document.attachEvent){
  47.   document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
  48. document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
  49. }
  50. }else{
  51. onBridgeReady();
  52. }
  53.   }
  54.   function onBridgeReady(){
  55.   WeixinJSBridge.invoke( 'getBrandWCPayRequest', {
  56.   "appId":appId, //公众号名称,由商户传入
  57. "timeStamp":timeStamp, //时间戳,自1970年以来的秒数
  58. "nonceStr":nonceStr, //随机串
  59. "package":package,
  60. "signType":signType, //微信签名方式:
  61. "paySign":paySign //微信签名
  62.     },
  63. function(res){
  64.   if(res.err_msg == "get_brand_wcpay_request:ok" ) {
  65.   console.log('支付成功');
  66. }else if(res.err_msg == "get_brand_wcpay_request:cancel"){
  67.   console.log('支付取消');
  68. }else if(res.err_msg == "get_brand_wcpay_request:fail"){
  69.   console.log('支付失败');
  70. WeixinJSBridge.call('closeWindow');
  71. }
  72.     });
  73.   }
  74. }
  1. public class PayUtil {
  2.  
  3. /**
  4. * 微信jssdk支付
  5. * @param request
  6. * @param response
  7. * @param fee
  8. * @return
  9. */
  10. public static Map pay(HttpServletRequest request, HttpServletResponse response, String fee) {
  11.   Map preData = new HashMap();
  12.   Map<String, String> payMap = new HashMap<String, String>();
  13.   try {
  14.   String openid = null;
  15.   WsMember member = WsUtils.getMember(request, response);
  16. if (member != null) {
  17.   openid = member.getOpenId();
  18. }
  19. WxAccount account = WsUtils.getAccount();
  20.  preData.put("appid", account.getAccountAppid());
  21. preData.put("mch_id", account.getMchId());
  22. preData.put("nonce_str", WXPayUtil.generateNonceStr());
  23. String body = utf8Utils.toUTF8("微信支付");
  24. preData.put("body", body);
  25. Random random = new Random();
  26. String out_trade_no = "";
  27. for (int i = 0; i < 30; i++) {
  28. out_trade_no += random.nextInt(10);
  29. }
  30. // preData.put("out_trade_no", WXPayUtil.generateNonceStr());
  31.  preData.put("total_fee", fee);
  32. preData.put("spbill_create_ip", request.getLocalAddr());
  33. preData.put("notify_url", "xxx.com/bpphone/index.html");
  34. preData.put("openid", openid);
  35. preData.put("trade_type", "JSAPI");
  36. String sign = WXPayUtil.generateSignature(preData, account.getPayKey());
  37. preData.put("sign", sign);
  38. String xml = WXPayUtil.mapToXml(preData);
  39. String unifiedorder_url = "https://api.mch.weixin.qq.com/pay/unifiedorder";
  40. String xmlStr = httpUtils.post(unifiedorder_url, xml);
  41. System.out.println("xmlStr============="+xmlStr);
  42. String prepay_id = "";
  43. if (xmlStr.indexOf("SUCCESS") != -1) {
  44.   Map<String, String> map = WXPayUtil.xmlToMap(xmlStr);
  45. prepay_id = (String) map.get("prepay_id");
  46. }
  47. payMap.put("appId", account.getAccountAppid());
  48. payMap.put("timeStamp", WXPayUtil.getCurrentTimestamp() + "");
  49. payMap.put("nonceStr", WXPayUtil.generateNonceStr());
  50. payMap.put("package", "prepay_id=" + prepay_id);
  51. payMap.put("signType", "MD5");
  52. String paySign = WXPayUtil.generateSignature(payMap, account.getPayKey());
  53. payMap.put("paySign", paySign);
  54. } catch (Exception e) {
  55. payMap.put("ret", InterConstant.RET_WX);
  56. payMap.put("appid", WsUtils.getAccount().getAccountAppid());
  57. e.printStackTrace();
  58. }
  59. return payMap;
  60. }
  61.   }
  62. }

微信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. c内存分配(转)

    图示 C内存分配 程序代码区 存放函数体的二进制代码 全局数据区 全局变量和静态变量的存储是放在一起的.初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域. ...

  2. SpringBoot使用logback自定义配置时遇到的坑 --- 在 /tmp目录下自动生成spring.log文件

    问题描述 SpringBoot项目使用logback自定义配置后,会在/tmp/ 目录下生成 spring.log的文件(如下图所示). 解决方案 通过各种资料的搜索,最终发现问题的所在(logbac ...

  3. Sqlserver数据库发送邮件

    目录 1. Sqlserver数据库发送邮件 1.1. 概念了解 1.2. 配置 1.3. 测试发送邮件 1.3.1. 代码测试 1.3.2. 工具测试 1.4. 查看邮件日志 1. Sqlserve ...

  4. 纯css3实现按钮的 hover 和 active 时颜色的明暗变化效果

    效果:在任意HTML标签上增加样式类 f-color-control 就可以为此元素增加hover和avtive时颜色的变化; 代码如下: <!DOCTYPE html> <html ...

  5. JAVA: 解决is expected to be of type but was actually of type com.sun.proxy.$Proxy的问题

    修改spring-config文件中的transactionManager部分为 <tx:annotation-driven proxy-target-class="true" ...

  6. tmux还有这种操作,我在这边的窗口上操作,你那边可以实时的看到我的操作,厉害了

  7. Node.js安装及环境配置之Windows篇(转:https://www.cnblogs.com/zhouyu2017/p/6485265.html)

    Node.js安装及环境配置之Windows篇(原文地址:https://www.cnblogs.com/zhouyu2017/p/6485265.html)   一.安装环境 1.本机系统:Wind ...

  8. iOS UI03_LTView

    // //  LTView.h //  OC03_LTView // //  Created by dllo on 15/7/31. //  Copyright (c) 2015年 dllo. All ...

  9. Android学习笔记-tween动画之xml实现

    继上篇tween动画的java实现:http://www.cnblogs.com/fengtengfei/p/3957800.html, 这里我接着介绍一下tween动画的xml实现的方法,   首先 ...

  10. 使用逆向工程生成mybatis的Mapper文件

    之前有写过一篇博客: 使用MyBatis Generator自动生成MyBatis的代码链接:http://www.cnblogs.com/klslb/p/6908535.html 这个太麻烦了,而且 ...