首页 移动开发 在线交易 IT笔记 网络技术 操作系统 企业架构 数据库 考试认证 IT培训 开源软件 数据存储 行业资讯
大家都在看:java   开发   C#   oracle   mysql   android   web开发   学习   sqlserver   linux   asp   php   ajax   javascript   css   html
微信服务号 微信支付开发 (一)
2017-02-15 09:31:39 来源: 作者:admin 栏目:移动开发 责任编辑:admin
[导读]发起支付,都是通过h5发起的,首先获取prepay_id
  微信支付,需要通过微信支付验证
  
  目前,支付仅限服务号,
  
  做微信支付开发,主要看开发文档
  
  统一下单,
  
  订单查询
  
  退款等
  
  1.发起支付,都是通过h5发起的,首先获取prepay_id
  
  发起支付,需要统一下单的prepay_id
  
  SortedMap<Object, Object> parameters = new TreeMap<Object, Object>();
  
  parameters.put("appid", ConfigUtil.APPID);
  
  parameters.put("mch_id", ConfigUtil.MCH_ID);
  
  parameters.put("nonce_str", PayCommonUtil.CreateNoncestr());
  
  parameters.put("body", bodyorder);
  
  parameters.put("out_trade_no", outTradeNo);// 用户订单号
  
  parameters.put("total_fee", totalfee);// 标价金额(分)
  
  // parameters.put("spbill_create_ip",IpAddressUtil.getIpAddr(request));
  
  parameters.put("spbill_create_ip", "192.168.1.1");// 电脑测试
  
  // parameters.put("spbill_create_ip",NetworkUtil.getIpAddress(request));
  
  parameters.put("notify_url", ConfigUtil.NOTIFY_URL);
  
  parameters.put("trade_type", "JSAPI");
  
  parameters.put("openid", openId);
  
  String sign = PayCommonUtil.createSign("UTF-8", parameters);
  
  parameters.put("sign", sign);
  
  String requestXML = PayCommonUtil.getRequestXml(parameters);
  
  String result = CommonUtil.httpsRequestR2s(ConfigUtil.UNIFIED_ORDER_URL, "POST", requestXML);
  
  System.out.println("第一弹数据" + result + "ip地址" + NetworkUtil.getIpAddress(request));
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  10
  
  11
  
  12
  
  13
  
  14
  
  15
  
  16
  
  17
  
  18
  
  19
  
  20
  
  21
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  10
  
  11
  
  12
  
  13
  
  14
  
  15
  
  16
  
  17
  
  18
  
  19
  
  20
  
  21
  
  数据为
  
  第一弹数据
  
  <xml>
  
  <return_code><![CDATA[SUCCESS]]></return_code>
  
  <return_msg><![CDATA[OK]]></return_msg>
  
  <appid><![CDATA[wx06e68e38fcef451d]]></appid>
  
  <mch_id><![CDATA[1427607202]]></mch_id>
  
  <nonce_str><![CDATA[vOK9ll6ZylQAOiRV]]></nonce_str>
  
  <sign><![CDATA[4D7F2D8D55377493503F8BB9E2F94C8B]]></sign>
  
  <result_code><![CDATA[SUCCESS]]></result_code>
  
  <prepay_id><![CDATA[wx20170105120958d7d94506790707606719]]></prepay_id>
  
  <trade_type><![CDATA[JSAPI]]></trade_type>
  
  </xml>
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  10
  
  11
  
  12
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  10
  
  11
  
  12
  
  2.拿到prepay_id后,就可以发起支付
  
  支付,需要设置测试路径和真实路径,
  
  这里写图片描述
  
  发起支付,将参数转为json,在放到respond里,然后h5页面从request里取
  
  SortedMap<Object, Object> params = new TreeMap<Object, Object>();
  
  params.put("appId", ConfigUtil.APPID);
  
  params.put("timeStamp", Long.toString(new Date().getTime()));
  
  params.put("nonceStr", PayCommonUtil.CreateNoncestr());
  
  System.out.println("订单id" + map.get("prepay_id"));
  
  params.put("package", "prepay_id=" + map.get("prepay_id"));
  
  params.put("signType", ConfigUtil.SIGN_TYPE);
  
  String paySign = PayCommonUtil.createSign("UTF-8", params);
  
  // params.put("packageva lue", "prepay_id="+map.get("prepay_id"));
  
  // //这里用packageva lue是预防package是关键字在js获取值出错
  
  params.put("paySign", paySign); // paySign的生成规则和Sign的生成规则一致
  
  String json = JSONObject.fromObject(params).toString();
  
  System.out.println("第二弹数据" + json);
  
  try {
  
  response.setContentType("text/html" + ";charset=UTF-8");
  
  response.setHeader("Pragma", "No-cache");
  
  response.setHeader("Cache-Control", "no-cache");
  
  response.setDateHeader("Expires", 0);
  
  response.getWriter().write(json);
  
  response.getWriter().flush();
  
  } catch (IOException e) {
  
  e.printStackTrace();
  
  }
  
  }
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  10
  
  11
  
  12
  
  13
  
  14
  
  15
  
  16
  
  17
  
  18
  
  19
  
  20
  
  21
  
  22
  
  23
  
  24
  
  25
  
  26
  
  27
  
  28
  
  29
  
  30
  
  31
  
  32
  
  33
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  10
  
  11
  
  12
  
  13
  
  14
  
  15
  
  16
  
  17
  
  18
  
  19
  
  20
  
  21
  
  22
  
  23
  
  24
  
  25
  
  26
  
  27
  
  28
  
  29
  
  30
  
  31
  
  32
  
  33
  
  上传,支付的html页面
  
  <!DOCTYPE html>
  
  <html>
  
  <head>
  
  <meta charset="UTF-8">
  
  <title>微信支付</title>
  
  </head>
  
  <body>
  
  <!-- <form action="weiChatPayServlet" method="post" >
  
  <input type="button" value="确认支付" name="ajaxLoadId" id="test1"/>
  
  </form> -->
  
  <div>
  
  <p> 苏牌皮草</p>
  
  <p> 库存18件</p>
  
  <p> 原价:8888元</p>
  
  <p> 现价:5000</p>
  
  <p> <button id="test"> 我要购买</button></p>
  
  </div>
  
  <script src="js/jquery.min.js"></script>
  
  <script src="js/jweixin-1.0.0.js"></script>
  
  <script src="js/bootstrap.min.js"></script>
  
  <script type="
本站地址:/
版权所有:转载请注明出处!
分享到:
上一篇没有了 下一篇对象关系行为模式之工作单元
您可能还喜欢
暂无...
考试认证 更多
开发技术 更多
移动开发 更多

关于 | 合作伙伴 | 联系我们 | 友情链接 | 版权声明 | 网站制作 | 网站地图 | 加入收藏 | 设为首页

Copyright@2012-2016 京ICP备12027873号